首先我们了解一下什么是linux日志分析
1. Linux 日志的作用
-
故障排查:通过日志可以快速定位系统或应用程序的错误。
-
性能监控:分析日志可以了解系统的资源使用情况(如 CPU、内存、磁盘等)。
-
安全审计:日志记录了用户登录、文件访问、网络连接等活动,可用于检测异常行为。
-
合规性检查:某些行业或法规要求记录和保留日志,以满足合规性要求。
2. Linux 日志文件的常见位置
-
系统日志:
-
/var/log/messages
:通用系统日志(适用于大多数 Linux 发行版)。 -
/var/log/syslog
:系统日志(适用于 Debian/Ubuntu)。 -
/var/log/dmesg
:内核启动日志。 -
/var/log/boot.log
:系统启动日志。
-
-
用户登录日志:
-
/var/log/auth.log
或/var/log/secure
:记录用户登录、认证和授权信息。
-
-
应用程序日志:
-
/var/log/apache2/access.log
和/var/log/apache2/error.log
:Apache Web 服务器日志。 -
/var/log/mysql/error.log
:MySQL 数据库日志。
-
-
服务日志:
-
/var/log/cron
:定时任务日志。 -
/var/log/maillog
:邮件服务日志。
-
3. 日志分析工具
-
命令行工具:
-
cat
:查看日志文件内容。 -
tail
:查看日志文件的最后几行(常用于实时监控日志)。tail -f /var/log/syslog
-
grep
:搜索日志中的关键字。grep "error" /var/log/messages
-
awk
:提取和格式化日志内容。awk '/error/ {print $1, $2, $5}' /var/log/messages
-
sed
:编辑和过滤日志内容。sed -n '/error/p' /var/log/messages
-
-
高级工具:
-
journalctl
:查看和管理systemd
日志。journalctl -u nginx.service
-
logrotate
:日志轮转工具,用于管理日志文件的大小和保留时间。 -
rsyslog
或syslog-ng
:日志管理服务,支持日志的集中存储和远程传输。
-
-
图形化工具:
-
Logwatch:生成日志摘要报告。
-
ELK Stack(Elasticsearch, Logstash, Kibana):用于日志的集中存储、分析和可视化。
-
Graylog:开源的日志管理平台。
-
4. 日志分析的关键步骤
-
收集日志:
-
确定需要分析的日志文件。
-
使用工具(如
rsyslog
)将日志集中存储。
-
-
过滤和提取:
-
使用
grep
、awk
等工具提取关键信息。 -
例如,查找错误日志:
grep -i "error" /var/log/syslog
-
-
分析和统计:
-
统计日志中的事件频率。
-
例如,统计每小时登录次数:
awk '/Failed password/ {print $1, $2}' /var/log/auth.log | uniq -c
-
-
可视化:
-
使用工具(如 Kibana)将日志数据可视化,生成图表和仪表盘。
-
-
告警和响应:
-
设置日志监控规则,发现异常时触发告警。
-
例如,检测多次登录失败:
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr
-
5. 日志分析的常见场景
-
系统故障排查:
-
查找系统崩溃或服务停止的原因。
-
例如,检查内核日志:
dmesg | grep -i "error"
-
-
性能问题分析:
-
分析系统资源使用情况。
-
例如,查找高 CPU 使用率的进程:
grep "CPU usage" /var/log/syslog
-
-
安全事件检测:
-
检测异常登录或攻击行为。
-
例如,查找暴力破解登录尝试:
grep "Failed password" /var/log/auth.log
-
-
应用程序调试:
-
查找应用程序的错误日志。
-
例如,查找 Apache 错误日志:
tail -n 50 /var/log/apache2/error.log
-
6. 日志分析的最佳实践
-
定期轮转日志:使用
logrotate
防止日志文件过大。 -
集中存储日志:将多台服务器的日志集中存储,便于统一分析。
-
设置日志级别:根据需求调整日志级别(如
debug
、info
、error
)。 -
监控关键日志:设置实时监控和告警,及时发现异常。
-
保护日志安全:限制日志文件的访问权限,防止篡改或泄露
接下来我们来做第一题
启动环境后用xhsell连接
进来后先查找一下日志在哪里
一般都在/var/log里面
当然也可以用find工具来进行定位,不过要先退出刀根目录下
登录保存的日志是auth.log
有两个,我们先查看第一个,可以看到是我们登录的信息
为什么会有auth.log.1文件
auth.log.1 当auth.log达到一定的大小的时候。系统就会给他重命名成auth.og.1,又会重新创建一个auth.log的日志文件,日志轮转,有策略,比如一天轮转一次,当日志文件达到一定大小的时候进行轮转,或者是保留一定数量的轮转文件,还有可能存在auth.log.2等等
所以我们重点查看auth.log.1文件
可以看到很多条信息,这里的信息还是偏少的可以直接查找,因为题目提到了root用户,那么直接找root用户的登录记录就好。当然可以直接用命名进行筛选
1.手工查找
2.命令查找
cat /var/log/auth.log.1 | grep -a "Failed password for root" | awk '{print $11}' | sort | uniq -c | sort -nr | more
-
cat /var/log/auth.log.1:
-
读取并显示
auth.log.1
文件的内容。
-
-
grep -a "Failed password for root":
-
从文件内容中筛选出包含 "Failed password for root" 的行,这些行表示尝试以 root 用户身份登录失败的记录。
-
-
awk '{print $11}':
-
使用
awk
提取每行的第 11 个字段。假设日志格式为标准格式,第 11 个字段通常是尝试登录的 IP 地址。
-
-
sort:
-
对提取的 IP 地址进行排序,以便后续的
uniq
命令可以正确统计重复项。
-
-
uniq -c:
-
统计每个唯一 IP 地址的出现次数。
-c
选项会在每行前显示该 IP 地址出现的次数。
-
-
sort -nr:
-
对统计结果进行数字逆序排序(
-n
表示按数字排序,-r
表示逆序),以便最频繁尝试的 IP 地址排在最前面。
-
-
more:
-
分页显示结果,方便查看。
-
第一题的答案就出来了,按照题目要求用‘,’隔开,从小到大
flag{192.168.200.2,192.168.200.31,192.168.200.32}
第二题
爆破成功的IP
那么我们就得先理解怎么看成功
一样可以手工查找或者命名查找
手工查找
这里就不一个一个找了直接用命令了
命令查找
将第一题的命令中"Failed password for root"改成Accepted password就可以了
cat /var/log/auth.log.1 | grep -a 'Accepted password'
这样就得到了第二题的答案了
flag{192.168.200.2}
第三题
不就是让我们查找看一共爆破了多少用户,这里就不手工查找了直接命令查找比较快
cat auth.log.1 | grep -a "Failed password" |perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
-
cat auth.log.1
:读取auth.log.1
文件的内容。 -
grep -a "Failed password"
:筛选出包含 "Failed password" 的行。 -
perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'
:-
使用
perl
脚本逐行处理输入。 -
正则表达式
/for(.*?) from/
匹配 "for" 和 "from" 之间的内容(通常是用户名)。 -
打印匹配到的用户名。
-
-
uniq -c
:统计每个唯一用户名的出现次数。 -
sort -nr
:按出现次数逆序排序。
得到第三题的答案,按顺序排列下来写
flag{user,hello,root,test3,test2,test1}
第四题
那么我们直接用命名查看
这里注意了题目说的是成功登录的IP一共爆破了多少次,而不是成功了多少次。我也是踩了个坑
cat /var/log/auth.log.1 | grep -a 'Accepted password for root'
这样子看到两天肯定是错的
我们直接用第一题的命名来查看就好了
cat auth.log.1 | grep -a "Failed password for root" | awk '{print $11}' | sort | uniq -c | sort -nr | more
-
uniq -c:
-
统计每个唯一 IP 地址的出现次数。
-c
选项会在每行前显示该 IP 地址出现的次数。
-
第四题的答案是
flag{4}
第五题
后门用户是指在系统中被恶意创建或修改的用户账户,目的是为了绕过正常的安全检查和控制,以便攻击者可以随时访问系统。这种用户通常是由黑客或恶意软件创建的,用于在未来的攻击中保持对系统的访问权限。
新类型的题目,不过都大差不差
步骤1:找到日志文件
找到登录的日志文件一般都是 /var/log/auth.log
或是备份文件如 /var/log/auth.log.1
。
步骤2:查找新建用户
用 grep
命令搜索与创建用户的关键字,如 new user
。
cat /var/log/auth.log.1 | grep -a "new user"
步骤3:分析执行上下文
查找到新用户后看一下是否由合法用户执行,或有没有可疑的远程登录记录。
grep "Accepted" /var/log/auth.log.1
步骤4:进一步确认
结合其他日志文件,如 /var/log/syslog
,查看是否有异常的命令执行或系统变更。
这里我们用命令查找一下新建用户就好
cat /var/log/auth.log.1 | grep -a 'new user'
看到有两条信息
登录成功的IP只有192.168.200.2,那么第二条信息肯定就不是了
第五题的答案
flag{test2}