朽木讲日志分析 | 日志分析前奏 – 作者:xiumu

一、 应急背景

还在睡梦中~ZZZZZ。

老大:喂,客户那里有些疑问,平时一天的日志量只有100多M,今天的居然有1个多G,快去看看怎么回事。嘟,嘟,嘟。。。

作者:精神抖擞,赶紧爬起来要了份日志,着手准备分析。

作者:日志量过大,说明里面可能有扫描、爆破、爬虫等等操作,那么先提取出出现次数最多前几位IP,分析是否有以上行为。

ps:老大看到后别批我0-0 ,同时也谢谢7师傅的帮助@evil7

二、日志分割

一般的编辑器无法直接打开大文件文本,如超过4个G大的log文本 。那么该如何做?直接拖到linux主机下用cat vim等相关命令加载,但是加载速度太慢,在此不做推荐。下面介绍利用shell下的split命令切割log文件。

split [-bl] file [prefix]  

split命令参数说明:

-b, 按大小进行切分。可以指定单位BB,KB,MB。-l, 按行数进行切分。
-d, 使用数字后缀。
-a, 指定后缀的长度。
prefix:分割后产生的文件名前缀。

这里我要分割1.log(大小为1个G左右)文件,分成每份300MB,并且前缀为file+三位的数字后缀,那么对应的命令是:

split -b 300MB 1.log -d -a 3 file

[5{YS72XTXIMLJI03JE_3@1.png6KW_V7EZHPS]A8~J[)(ADIN.png这里只做演示,其实1个G的文件,直接cat加载后进行后续操作简单些~比如剔除操作啥的。

二、日志剔除

我们可以看到日志的格式为酱紫的~ 也算符合常规的格式。38@]GZ}A}KN~XABN3BL}()J.png那么想要统计IP出现次数,就需要将每行 – – 之后的所有内容替换为空,使用命令为:

cat 1.log | sed -e 's/ - -.*//g' > out1.log

sed命令参数说明:

-e  以选项中指定的script来处理输入的文本文件(常用于正则表达式)
s   替换指定字符
g   替换每一行内的所有匹配
.*  表示后面任意长度的任意字符

我们打开剔除后的文件out1.log

48]YW)O1Y~DV9H8O7Y}QTLH.png三、日志排序

杂乱无章的日志IP,得将其排序后才能方便阅读。

使用sort命令如下:

sort out1.log > out2.log

打开out2.log,发现已经按照IP的ASCII排序

@C52PE_FM%(UD@PE055AJ_4.png

当然,也可以不用排序直接进行统计,只是为了演示~

四、日志统计

从这里开始,就可以对日志进行统计,附上python脚本:

本python脚本适用于常见格式的web日志。如格式不同,则需要自己修改使用。

提取出出现次数大于1000的IP。

]71[N4A`OC3_0M1)AY2]VKP.png

(H[~{R%SHZZ`8UA63SR`ETP.png 发现有两个IP的次数大于5000次,得重点关注下。

五、日志去重

如果想要将上述的日志排序后的结果进行去重,那么使用如下命令:

sort -u out2.log > out3.log

打开out3.log后:

1HK~P@RM5NL90VZVNLW(P2L.png已经去重完毕。

六、应急总结

本次应急日志处理其实还没结束。由于篇幅原因,下次会继续写后续操作。

来源:freebuf.com 2018-06-24 18:25:12 by: xiumu

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论