日志分析

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

image-20230320105414264

解析:在awk只如果不指定分割的字符串,默认使用的是空白符号,在日志文件中使用的空白符分割的信息:如图:

image-20230320105034353

分别代表:客户端IP地址、访问时间、访问方式(POST、GET等)、访问文件地址、客户端访问协议版本、状态码(200,404,500等)、产生数据大小、来源ip、浏览器UA(可以从这个位置看出客户端的系统信息)

案例2:统计ip访问次数(可以看出谁的访问次数最高,从而判断出攻击者的ip地址)
 awk '{print $1}' access.log.1 | sort | uniq -c

image-20230320105605879

案例3:显示ip地址和状态码(可以判断出是否使用扫描工具等信息验证攻击者信息)
awk '{print $1,$9}' access.log.1 | sort | uniq -c

image-20230320105821851

可以看出[192.168.1.7]的IP的访问404最高,可以判断出攻击者的IP地址技术为[192.168.1.7]

案例4:统计UA信息(可以判断出攻击者使用的扫描工具)
awk '{print $1,$9,$12}' access.log.1 | sort | uniq -c

image-20230320110302196

在结果中可以看出来在192.168.1.7中的404访问最高的ua内容为"DIRSEARCH"可以直接得出扫描工具

案例5:统计指定访问类型
awk '$1=="192.168.1.7" && $6=="\"POST"  {print $0}' access.log.1

image-20230320110915198