应急响应排查Linux中的secure和message日志如何排查

发布时间:2024年01月22日

在Linux系统中,/var/log/secure 和 /var/log/messages 是两个非常重要的日志文件,用于记录系统和安全相关的事件。如果你正在进行应急响应或排查潜在的安全问题,这两个日志文件是很好的起点。

/var/log/secure

这个日志文件记录了与安全相关的所有事件,比如SSH登录尝试、sudo命令的使用、以及其他与安全相关的服务的日志信息。

/var/log/messages

这个日志文件记录了系统的一般信息和错误消息,包括内核产生的消息、启动脚本消息以及其他系统守护进程的消息。

如何排查日志
使用tail查看最新的日志条目:

tail /var/log/secure
tail /var/log/messages

这会显示每个文件的最后10行内容。你可以通过-f参数来实时跟踪新的日志条目。

使用grep搜索特定的关键词:

grep 'sshd' /var/log/secure
grep 'error' /var/log/messages

这会搜索与SSH守护进程相关的条目,或者在messages日志中搜索包含“error”的行。

使用awk、sed或cut等工具来处理日志文件,以便提取你感兴趣的字段。

如何解读字段

日志文件中的每一行通常都会包含以下字段:

日期和时间:记录事件发生的日期和时间。 主机名:记录事件发生的主机。 服务名/进程名:产生该日志条目的服务或进程。
PID:产生该日志条目的进程ID。 日志信息:具体的日志消息,可能包含状态、错误代码、用户信息等。 如何判断正常与异常
了解正常行为:你需要知道系统在正常情况下的行为模式,这样才能识别出异常行为。比如,一个用户在非工作时间登录可能就是一个异常。

搜索异常模式:比如多次登录失败、不寻常的网络连接尝试、异常的系统错误信息等。

关注安全警告和错误:任何类型的安全警告或错误都应该被认真对待,特别是那些指示潜在入侵的。

使用日志管理工具:有些工具可以帮助你分析日志文件,比如Logwatch、Swatch或者商业的SIEM系统,它们可以自动化这个过程并提供更容易理解的输出。

上下文:单独的日志条目可能看起来正常,但如果你考虑到上下文(比如与其他日志条目的关系),它可能就显得异常了。

比较历史数据:与历史日志数据比较,看看是否有不同寻常的模式或变化。

记住,排查日志是一个需要细致观察和经验的过程。随着时间的推移,你会对系统的正常行为和潜在的异常行为有更好的理解。

举例

给出这些常见的日志例子以及各个字段的含义,比如SSH登录尝试、sudo命令、错误消息、启动脚本消息等等,一定要详细,覆盖常见的应急日志排查项

当然,让我们来看一些常见的日志示例,并解释其中的字段含义。

SSH登录尝试

日志示例:

Feb 10 10:15:01 server sshd[19518]: Failed password for root from 192.168.1.1 port 22 ssh2

字段解释:

Feb 10 10:15:01 - 日期和时间戳,表示事件发生的时间。 
server - 主机名,表示事件发生的服务器。 
sshd[19518] - 服务名和进程ID,这里sshd是SSH守护进程,19518是它的进程ID。 Failed password for root - 日志消息,表示有一个失败的密码尝试用于root用户。 
from 192.168.1.1 - 表示尝试登录的来源IP地址。 
port 22 - 尝试连接的端口号,SSH默认是22。 
ssh2 - 使用的SSH协议版本。

sudo命令使用

日志示例:

Feb 10 10:20:30 server sudo:    jdoe : TTY=pts/1 ; PWD=/home/jdoe ; USER=root ; COMMAND=/bin/cat /etc/passwd

字段解释:

Feb 10 10:20:30 - 日期和时间戳。
server - 主机名。
sudo - 表示这个日志条目与sudo命令有关。
jdoe - 执行sudo命令的用户。
TTY=pts/1 - 用户登录的终端。
PWD=/home/jdoe - 用户执行命令时的当前工作目录。
USER=root - sudo命令试图以哪个用户的身份执行。
COMMAND=/bin/cat /etc/passwd - 实际执行的命令。

系统错误消息

日志示例:

Feb 10 10:30:45 server kernel: [  561.442198] Out of memory: Kill process 12345 (java) score 180 or sacrifice child

字段解释:

Feb 10 10:30:45 - 日期和时间戳。
server - 主机名。
kernel - 表示这是一个来自内核的消息。
[  561.442198] - 时间戳,表示自系统启动以来的时间(单位为秒)。
Out of memory - 错误消息,表示系统内存不足。
Kill process 12345 (java) - 系统决定终止的进程ID和名称。
score 180 - OOM评分,越高表示进程越有可能被杀死释放内存。
or sacrifice child - 表示系统可能会选择杀死子进程来回收内存。

启动脚本消息

日志示例:

Feb 10 10:35:00 server systemd[1]: Started Session 1234 of user jdoe.

字段解释:

Feb 10 10:35:00 - 日期和时间戳。
server - 主机名。
systemd[1] - 服务名和进程ID,这里systemd是系统守护进程,1通常是它的进程ID。
Started Session 1234 - 日志消息,表示启动了一个新的会话。
of user jdoe - 会话所属的用户。

安全警告

日志示例:

Feb 10 10:40:15 server sshd[19518]: Received disconnect from 192.168.1.1 port 22:11: Bye Bye [preauth]

字段解释:

Feb 10 10:40:15 - 日期和时间戳。
server - 主机名。
sshd[19518] - 服务名和进程ID。
Received disconnect from 192.168.1.1 - 表示从特定IP地址收到了断开连接的请求。
port 22:11 - 断开连接的端口号和原因代码。
Bye Bye [preauth] - 断开连接前的最后消息,[preauth]表示这发生在认证之前。

在审查这些日志时,你应该注意任何不寻常的模式,如非工作时间的登录尝试、频繁的失败认证、不寻常的命令执行等。这些可能是安全事件或系统问题的迹象。通过对比正常行为和异常行为,你可以确定是否需要进一步的调查或采取行动。

文章来源:https://blog.csdn.net/weixin_46356409/article/details/135742949
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。