应急响应—Linux日志分析

简介: 应急响应—Linux日志分析

一、日志类型

内核日志(dmesg和alog)

所有UNIX和linux系统的日志实际上是内核的一部分。日志实际上是内核中内存的一部分,用于记录无法写入磁盘的有关内核的信息,这是因为该信息是加载文件系统之前生成的。

例如,在启动过程中,不能以写入方式访问文件系统(大多数内核以读取模式启动文件系统,直到认为系统足够安全,能够切换到读/写模式为止)。此日志中的数据包含关于连接到系统的设备的信息,以及在启动和操作过程中系统记录的任何错误和问题的信息。在一些系统上,信息会定期写入文件 (/var/log/dmesg);而在另一些系统上,只有使用 alog 命令 (AIX) 或 dmesg(所有其他 UNIX/Linux 变体)才可获得信息。

内核生成的信息并不总是写入另一个文件,如 syslog。这意味着某些信息(如关于设备和硬件的内部数据)只能通过 dmesg 日志提供。

系统日志 (syslog)

syslog 服务是在后台运行的守护进程,可接受日志输入并将其写入到一个或多个单独文件。报告给 syslog 的所有消息都标有日期、时间和主机名,并且可以让单个主机从许多主机接受所有日志消息,并将信息写入单个文件。

提出问题的服务(例如,邮件、dhcp 和内核)和指示消息严重性的类也可以标识消息。可以将严重性标记为信息(纯信息)、警告、错误、重要(需要解决的严重问题)甚至紧急(系统需要紧急帮助)。

通过查看 /etc/rsyslog.conf ,可查看相关系统日志配置情况。

640.png

图片—20220214213536938

linux系统日志存放在/var/log/目录下。

640.png

图片—20220214213550712

Linux系统中一些常见日志文件及其用途

/var/log/messages:记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该文件获得相关的事件记录信息。
/var/log/cron:记录crond计划任务产生的事件消息。
/varlog/dmesg:记录Linux系统在引导过程中的各种事件信息。
/var/log/maillog:记录进入或发出系统的电子邮件活动。
/var/log/lastlog:最近几次成功登录事件和最后一次不成功登录事件。
/var/log/rpmpkgs:记录系统中安装各rpm包列表信息。
/var/log/secure:记录用户登录认证过程中的事件信息。
/var/log/wtmp:记录每个用户登录、注销及系统启动和停机事件。
/var/log/utmp:记录当前登录的每个用户的详细信息

二、日志分析

对于大多数文本格式的日志格式(如内核及系统日志、大多数的程序日志),只要使用tail、more、less、cat等文本处理工具就可以查看日志内容。而对于一些二进制格式的日志文件(eg:用户日志),则需要使用相应的查询命令。

1. 内核及系统日志

message日志,一般内核及大多数系统消息都被记录到公共日志文件"/var/log/messages"中,而其他一些程序消息被记录到不同的文件中,日志消息还能够记录到特定的存储设备中,或者直接向用户发送。具体根据rsyslog配置而定,日志如下

640.png

图片—20220214213608329

secure是应急中最常用的文件,主要记录系统存取数据的文件,如POP3、ssh、telnet、ftp等相关记录,从日志中可看出系统服务是否遭受到安全威胁,从如下日志中可看到ftp服务一直在被破解。

640.png

图片—20220214213623018

可通过grep命令查找文件里符合条件的字符串, 定位有多少IP在爆破主机的 root 帐号:

grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

定位有哪些 IP 在爆破:

grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c

爆破用户名字典是什么?

grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr

登录成功的 IP 有哪些:

grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

登录成功的日期、用户名、IP:

grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'

增加用户

grep "useradd" /var/log/secure 删除用户
grep "userdel" /var/log/secure

2.用户日志

wtmp日志记录了用户的登录、退出、重启等情况,可以查看系统是否存在异常用户登录,判断攻击者是否已经登录服务器,由于wtmp日志为二进制文件,所以利用用last命令查看,last -t 200220126120950 ,可查看这个时间之前的日志。

640.jpg

UVORK5CYII=.jpeg

清除wtmp日志命令如下:

echo > /var/log/wtmp

utmp日志记录当前用户的一些信息,由于utmp日志文件同样为二进制文件,可通过w、who命令查看

640.png

图片20220214213708164

lastlog命令,用于显示系统中所有用户最近一次登录信息。lastlog文件在每次有用户登录时被查询。可以使用lastlog命令检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog显示Never logged。注意需要以root身份运行该命令。

3.程序日志

在Linux系统中,还有相当一部分应用程序并没有使用syslog服务来管理日志。而是由程序自己维护日志记录。例如,httpd网站服务程序使用两个日志文件access_log和error_log。

由于多数攻击都是发布在互联网的漏洞被利用导致,留存程序日志对于日后的溯源还是很有必要的,常见的中间件有weblogic、jboss、iis、tomcat,web日志记录攻击者的行为,可通过web日志知道攻击者通过什么方式进入系统。

a0162da1a0cbdb8ec4eff9c262089dcf.jpg

ElFTkSuQmCC.jpeg

从上图日志中可看到攻击者对系统做了大量目录枚举,尝试找到合适可用的目录。枚举到可用目录后,恶意攻击者尝试通过漏洞上传后门文件

db0ff8a84dd2341cdcd5ab947fc835c7.png

图片—20220214213724627

通过对日志的分析可对恶意用户的行为进行简单分析,明确攻击行为,确定攻击来源。

4.常见日志分析方法

由于日志文件通常是很大,如果单纯用命令去分析日志当然可以,但会不会很累呢,让工具来帮我们分析日志不失为好的办法。

自己写脚本,根据关键字去提取有用信息,比如根据ip地址、网站路径等,下图从日志中提取的ip地址。

d170333d5810c2e5c88369488948f47a.png

U5ErkJggg==.jpeg

在应急响应中经常会从日志中看到一些常见的攻击行为,在渗透测试中也会利用一些攻击工具,为了能从日志中获取更多有价值的信息,来及时确定攻击来源,日志记录格式通常为,访问的ip地址,时间,访问路径,服务器响应状态,返回数据大小。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
19天前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
72 1
|
29天前
|
Shell Linux C语言
【Shell 命令集合 网络通讯 】Linux 查看系统中的UUCP日志文件 uulog命令 使用指南
【Shell 命令集合 网络通讯 】Linux 查看系统中的UUCP日志文件 uulog命令 使用指南
29 0
|
29天前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
48 0
|
12天前
|
存储 监控 安全
Linux系统日志
【4月更文挑战第6天】Linux系统日志,关键用于记录系统状态和事件,包括内核、系统、安全和应用日志,助力管理员诊断问题、确保系统正常运行。日志管理涉及收集、分析、备份等,常用工具如rsyslog、systemd-journal和logrotate(用于日志轮转)。重视日志文件的存储管理,防止空间占用过多。
16 1
Linux系统日志
|
5天前
|
SQL 监控 安全
Linux&Windows 日志分析 陇剑杯 CTF
Linux&Windows 日志分析 陇剑杯 CTF
29 0
|
15天前
|
关系型数据库 MySQL Linux
linux特定服务日志
Linux系统的服务日志在`/var/log`目录下,如系统日志(`/var/log/syslog`或`/var/log/messages`)、认证日志(`/var/log/auth.log`)、SSH日志(`/var/log/auth.log`或`/var/log/secure`)。Web服务器(Apache和Nginx)的访问和错误日志、MySQL错误日志、Postfix及Dovecot邮件服务器日志也在此处。日志位置可能因发行版和服务配置而异,不确定时可查服务配置或用`grep`搜索。使用`logrotate`可管理日志文件大小。
18 6
|
19天前
|
运维 监控 安全
linux日志分析与追踪
在Linux中,日志分析涉及检查 `/var/log` 下的不同文件,如`messages`、`auth.log`、`kern.log`等,以及Web服务器和数据库日志。使用`tail`、`grep`、`awk`等工具实时查看和搜索日志,`logrotate`管理日志大小,`journalctl`处理Systemd日志,而`Splunk`等工具则用于集中式分析。分析技巧包括异常检测、时间关联和阈值监控。安全事件追踪结合登录失败日志、网络嗅探和IDS/IPS。日志链路追踪在分布式系统中尤为重要,帮助定位服务调用问题。有效的日志管理和分析能增强系统安全和故障排除能力。
20 7
|
29天前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 实时监控日志文件 swatch命令 使用指南
【Shell 命令集合 系统管理 】Linux 实时监控日志文件 swatch命令 使用指南
33 1
|
2月前
|
Linux
Linux日志轮替
Linux日志轮替
45 2
Linux日志轮替
|
2月前
|
监控 安全 Linux
Linux日志管理服务 rsyslogd
Linux日志管理服务 rsyslogd
34 2
Linux日志管理服务 rsyslogd