常见日志文件
Linux系统中的日志文件通常存储在 /var/log
目录下,常见的日志文件包括:
- /var/log/syslog:记录系统的各种信息和错误。
- /var/log/auth.log:记录身份验证相关的信息,如登录和认证失败。
- /var/log/kern.log:记录内核生成的日志信息。
- /var/log/dmesg:记录系统启动时内核产生的消息。
- /var/log/boot.log:记录系统启动过程中的消息。
- /var/log/messages:记录系统的广泛消息,包括启动和应用程序信息。
- /var/log/secure:记录安全相关的消息。
- /var/log/httpd/ :记录Apache HTTP服务器的访问和错误日志(若安装了Apache)。
- /var/log/nginx/ :记录Nginx服务器的访问和错误日志(若安装了Nginx)。
玄机的Linux日志分析中,有5个题目
1.有多少IP在爆破主机ssh的root帐号,如果有多个使用”,”分割
2.ssh爆破成功登陆的IP是多少,如果有多个使用”,”分割
3.爆破用户名字典是什么?如果有多个使用”,”分割
4.登陆成功的IP共爆破了多少次
5.黑客登陆主机后新建了一个后门用户,用户名是多少
第一个题目基本上就是去查看/var/log/auth.log(auth.log.1是备份文件)
但是这样查看会出现很多条日志,那么就需要合并一下
cat auth.log.1 | grep -a "Failed password for root" | awk '{print $11}' | sort | uniq -c | sort -nr | more
分析一下具体含义
cat auth.log.1:
cat 命令用于显示 auth.log.1 文件的内容。
这里 auth.log.1 是一个日志文件,通常是系统日志的备份文件。
| :
管道符号,用于将前一个命令的输出作为下一个命令的输入。
grep -a "Failed password for root" :
grep 命令用于在输入中搜索包含特定模式的行。
-a 选项表示将文件内容视为文本文件(此选项通常在处理二进制文件时使用,但对于纯文本文件,可以省略)。
"Failed password for root" 是搜索模式,即查找所有包含"Failed password for root"的行,这些行表示尝试登录root用户的失败尝试。
awk '{print $11}' :
awk 是一个文本处理工具,用于按字段处理文本。
{print $11} 表示打印每行的第11个字段。假设日志格式为标准格式,第11个字段通常是IP地址。
sort:
sort 命令用于对输入行进行排序。
这里是对提取的IP地址进行排序。
uniq -c:
uniq 命令用于删除重复的行。
-c 选项表示对每个唯一的行计数,即统计每个IP地址的出现次数。
sort -nr:
sort 命令再次用于排序。
-n 选项表示按数值进行排序。
-r 选项表示按降序排序。
组合起来,即按出现次数从高到低排序。
more:
more 命令用于分页显示输出。
由于输出可能很长,more 命令允许用户逐页查看结果。
第二个题目跟第一个其实差不多,只不过把登录失败换成登录成功:Accepted
第三题获取爆破的用户名:
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”的行。这些行记录了SSH登录失败的事件。
-a选项:通常用于处理二进制文件时将其视为文本文件,这里一般可以忽略,因为auth.log.1应该是纯文本文件。
perl -e 'while(1\n";}' :
作用:使用Perl脚本从每一行提取出失败登录尝试的用户名。
while($_=<>):逐行读取输入。
/for(.*?) from/:使用正则表达式匹配模式“for [username] from”,其中[username]是登录尝试的用户名。
print "$1\n":将提取的用户名打印出来。
uniq -c:
作用:对提取出的用户名进行去重并计数。每个唯一的用户名会与其出现的次数一起输出。
-c选项:在每个唯一项的前面显示出现次数。
sort -nr:
作用:根据出现次数进行降序排序。这样出现次数最多的用户名会排在最前面。
-n选项:按照数值排序。
-r选项:按照降序排序。
- 总结
这个命令链条通过以下步骤统计每个用户名的SSH失败登录尝试次数:
读取日志文件并筛选出失败登录的记录。
使用Perl脚本从记录中提取用户名。
对用户名进行去重和计数。
按尝试次数降序排列。
第四个题也是统计,再次跳过
第五题是需要查询新建用户的日志
cat auth.log.1 |grep -a “new user”
查看auth.log.1,并且把内容通过grep(尽量加上-a 可以把二进制文件转换成文本来读取)过滤