日志分析
1、Linux日志分析
常见的几个日志位置:
➢/var/log/messages
◆这是Linux最核心的日志文件,假若某个服务没有定义日志文件,那么该服务产生的日志文件就会记录到这个文件中,该日志每周归档一-次 ,默认只保留5次。归档的方法都是由"/etc/logrotate.conf" 这个文件来控制的。
➢/var/log/wtmp
◆查看用户的登录,注销信息,同时记录系统的启动,重启,关机等事件。不用能cat直接查看,必须用last查看
➢/var/log/btmp
◆和wtmp类似,也不能用cat直接查看,用lastb查看,记录用户登录无效的历史
➢/var/log/maillog
◆用来记录邮件相关的日志,比如发给哪个,是否发出去
➢/var/log/cron
◆记录了系统定时任务相关的日志
根据网站的服务中间件的不同,去寻找日志文件所在位置:
重点关注目录:Var/log
如果为apache的话可能存在:
var/log/apache
/etc/httpd/logs
这两个文件下
如果为nginx:
var/log/nginx
2、awk在日志分析中的应用
awk的基本结果
awk [options] 'BEGIN{ commands } pattern{ commands } END{ commands }' fileName
其中,options 可用参数包括:
-f progfile,--file=progfile:从文件执行
-F fs,--field-separator=fs:指定输入时的字段分割符,默认的是**空白字符(包含空格、TAB 字符)**
-v var=val,--assign=var=val:在执行代码之前的定义变量
awk还经常和sort(linux排序命令),uniq (显示重复出现的次数),grep(linux寻找命令)一起使用,达到过滤其他重复内容,过滤其他信息,显示重要的信息的效果。
案例1:显示日志中的IP地址
awk '{print $1}' access.log.1
解析:在awk只如果不指定分割的字符串,默认使用的是空白符号,在日志文件中使用的空白符分割的信息:如图:
分别代表:客户端IP地址、访问时间、访问方式(POST、GET等)、访问文件地址、客户端访问协议版本、状态码(200,404,500等)、产生数据大小、来源ip、浏览器UA(可以从这个位置看出客户端的系统信息)
案例2:统计ip访问次数(可以看出谁的访问次数最高,从而判断出攻击者的ip地址)
awk '{print $1}' access.log.1 | sort | uniq -c
案例3:显示ip地址和状态码(可以判断出是否使用扫描工具等信息验证攻击者信息)
awk '{print $1,$9}' access.log.1 | sort | uniq -c
可以看出[192.168.1.7]的IP的访问404最高,可以判断出攻击者的IP地址技术为[192.168.1.7]
案例4:统计UA信息(可以判断出攻击者使用的扫描工具)
awk '{print $1,$9,$12}' access.log.1 | sort | uniq -c
在结果中可以看出来在192.168.1.7中的404访问最高的ua内容为"DIRSEARCH"可以直接得出扫描工具
案例5:统计指定访问类型
awk '$1=="192.168.1.7" && $6=="\"POST" {print $0}' access.log.1