Linux系统日志排查
Linux应急响应日志排查步骤
- 确定排查时间段:根据应急响应的具体情况,确定需要排查的时间范围,例如从发现问题的时间点往前追溯一定的时间。
- 选择相关日志文件:根据排查目标,选择需要查看的日志文件。
- 使用工具进行排查:运用上述的排查工具,在日志文件中搜索关键信息、分析日志内容。
- 整理和总结:将排查到的可疑信息进行整理和总结,分析事件的可能原因和影响范围。
日志文件是记录系统运行信息的文件,Linux系统系统内记载很多不同类型的日志,例如:
- Linux内核消息
- 登入事件
- 程序错误日志
- 软件安装信息
以上日志内记录系统内一些关键的信息,通过这些日志内记录的信息,可以帮助安全人员寻找到攻击者蛛丝马迹。作者整理了以下日志常见信息:
/var/log/dmesg
内核的一些信息。
/var/log/auth.log
此文件中包含系统授权信息,以及用户登录和使用的身份验证机制。
/var/1og/boot.log
包含系统启动时记录的信息
/var/log/daemon.log
正在运行的各种系统后台守护程序将信息记录到此文件中。
/var/1og/kern.log
包含内核记录的信息。有助于解决定制内核的故障。
/var/log/lastlog
显示所有用户的最近登录信息。这不是ascii文件。管理员可以使用lastlog命令查看此文件的内容。
/var/log/maillog
和 /var/log/mail.log
记录系统上运行的邮件服务器的信息。例如,sendmail将有关所有已发送项目的信息记录到此文件中。
/var/log/user.log
包含有关所有用户级日志的信息。
/var/1og/Xorg.x.log
将来自x服务器的消息记录到此文件。
/var/log/btmp
此文件包含有关失败登录尝试的信息。使用最后一个命令查看btmp文件。例如,last-f/var/log/btmp |more
/var/log/yum.log
包含使用yum安装包时记录的信息。在删除具有依赖项的包时,可以引l用此文件。
/var/log/cron
每当cron守护程序(或anacron)启动cron作业时,它都会将有关cron作业的信息记录在该文件中。
/var/log/secure
包含与身份验证和授权权限相关的信息。例如,sshd在这里记录所有消息,包括登录失败。
/var/log/wtmp-wtmp
文件记录所有登录和注销。
/var/1og/utmp-utmp
文件允许您发现有关当前使用系统的用户的信息。
/var/log/faillog
包含失败的用户登录尝试。使用faillog命令显示此文件的内容。
/var/1og/httpd/
包含apacheweb服务器access_log和error_log以及相关的虚拟主机日志(如果设置为在此处记录)。
/var/1og/apache2
包含apache web服务器access_log和error_log以及相关的虚拟主机日志(如果设置为在此处记录)。
/var/log/conman/-conman
客户端的日志文件。conman连接由conmand守护进程管理的远程控制台。
/var/log/mail/
此子目录包含来自邮件服务器的其他日志。例如,sendmail将收集的邮件统计信息存储在/var/log/mail/statistics
文件中。
/var/log/audit/
包含由Linux审核守护程序(auditd)存储的日志信息。
/var/log/settroubleshoot/SELinux
使用settroublishootd (SE TroubleshootDaemon)来通知文件安全上下文中的问题,并将这些信息记录在此日志文件中。
/var/log/samba/
包含samba存储的日志信息,用于将Windows连接到Linux。
/var/log/sa/
包含sysstat包收集的每日sar文件。
登入验证日志
- 不知道日志的每一行是做什么的,去搜索
- 既然是登入验证肯定会有成功和失败,那么什么状态是成功或失败
- 除成功失败外是不是包含其它信息,如:用户名、登入来源IP地址
经过以上的几点思考,我在网上找到文章和命令
登陆失败次数
$ sudo grep "Failed password" auth.log | wc -1
登陆成功日志
$ sudo grep "password" auth.log | grep -v Failed | grep -V Invalid
统计攻击者IP
$ sudo awk '{if($6 == "Failed" && $7 == "password"){if($9 == "invalid"){ips[$13]++; users[$11]++} else fusers[$9]++; ips[$11]++}}} END{for(ip in ips){printip,ips[ip]}}'auth.*|wc -1
攻击次数排列,由高到低
$ sudo awk '{if($6=="Failed"&&$7=="password"){if($9=='invalid"){ips[$13]++; users[$11]++}e1sefusers[$9]++; ips[$11]++}}}END{for(ip in ips){printip,ips[ip]}}'auth.* | sort -k2 -rn | head
41.214.134.201 18358
189.217.194.155 9994
218.39.177.111 4713
120.48.13.143 2179
36.138.66.177 1448
139.162.114.41 861
104.248.94.181 756
188.166.57.168 431
141.94.110.90 347
23.224.143.15 307
最后是统计的次数