短信发送接口被恶意访问的网络攻击事件(三)定位恶意IP的日志分析脚本
2017-06-23 11:28
537 查看
前言
承接前文《短信发送接口被恶意访问的网络攻击事件(二)肉搏战-阻止恶意请求》,文中有讲到一个定位非法IP的shell脚本,现在就来公布一下吧,并没有什么技术难度,只是当时花了些时间去写这个东西,类似于紧急修复线上bug一样的赶这个小脚本,虽然现在看来挺简单的,但是在当时紧张的情景中,赶这个小脚本儿的过程确实是很有趣的。前一篇文章发布后,有朋友留言问了一下脚本的事,于是整理了一下。
需求分析
目标:通过日志定位并记录攻击者的IP,然后封掉此IP的所有请求
借助工具:
shell脚本
日志文件
iptables防火墙
具体步骤:
第一步,首先是获取请求了被攻击URL的所有请求中的IP,因为被攻击的URL只有一个,这里的做法是通过grep命令查找请求了此URL的日志行,查找的值为api地址的名称字段,比如此URL的地址为’/message/send/’,而send字段只存在于此URL中,因此在日志文件中查找包含’send’字段的行即可。
第二步是从所有的行中提取出IP列,统计出所有出现的IP和此IP请求接口URL的次数,存入ip.txt文件。
接着第三步是通过对ip.txt文件的分析,定位出所有的不正常的IP,分析的比较简陋,做法是请求超过5次的都视为非法IP,其实5次已经算多的了,应该再小一点,但是其实在分析文件ip.txt文件过程中,发现正常的IP访问次数基本为一次、两次,而非法IP则为百次或千次,因此阈值设置为5或者3并没有大的影响,重点是找出访问量较大的一些IP。
最后一步,得到这些IP值之后,将其加入到iptables的过滤策略中并重启iptables即可。
脚本代码
一开始的脚本,能够根据需求统计和记录出访问过多的IP地址了:#! /bin/bash #author:13 #date:2017-06 #desc:找出攻击者IP cat /opt/sms-service/logs/access_log.log | awk '{print $1}'|sort|uniq -c|awk '{print $2"="$1;}' > /opt/sms-service/logs/ip.txt DEFINE="5" for i in `cat /opt/sms-service/logs/ip.txt` do IP=`echo $i |awk -F= '{print $1}'` NUM=`echo $i|awk -F= '{print $2}'` if [ $NUM -gt $DEFINE ];then grep $IP /opt/sms-service/logs/black.txt > /dev/null if [ $? -gt 0 ];then echo "iptables -I INPUT -s $IP -j DROP" >> /opt/sms-service/logs/black.txt fi fi done
后面又对脚本做了一些小改动,改进点有:
对文件路径进行参数命名,使得代码不是特别臃肿;
增加一条判断条件,判断IP是否已经存在于iptables配置文件中,剔除已经统计和记录过的IP。
#! /bin/bash #author:13 #date:2017-06 #desc:找出攻击者IP LOGFILE="/opt/sms-service/logs/access_log.log" IPTXT="/opt/sms-service/logs/ip.txt" BLACKTXT="/opt/sms-service/logs/black.txt" IPTABLES="/opt/iptables/run.sh" DEFINE="5" cat $LOGFILE|awk '{print $1}'|sort|uniq -c|awk '{print $2"="$1;}' > $IPTXT for i in `cat $IPTXT` do IP=`echo $i |awk -F= '{print $1}'` NUM=`echo $i|awk -F= '{print $2}'` if [ $NUM -gt $DEFINE ];then grep $IP $BLACKTXT > /dev/null if [ $? -gt 0 ];then grep $IP $IPTABLES > /dev/null if [ $? -gt 0 ];then echo "iptables -I INPUT -s $IP -j DROP" >> $BLACKTXT fi fi fi done
总结
首发于我的个人博客,地址在这里最近工作也比较忙,本来不打算写这篇文章的,前一篇文章发布后看到有朋友留言了,因此在下班后抽出一段时间完成了这篇文章,文中并没有特别难的知识点,希望有所收获。
相关文章推荐
- 短信发送接口被恶意访问的网络攻击事件(三)定位恶意IP的日志分析脚本
- 短信发送接口被恶意访问的网络攻击事件(四)完结篇--搭建WAF清理战场
- 短信发送接口被恶意访问的网络攻击事件(四)完结篇--搭建WAF清理战场
- 短信发送接口被恶意访问的网络攻击事件(二)肉搏战-阻止恶意请求
- 装饰者模式的学习(c#) EF SaveChanges() 报错(转载) C# 四舍五入 保留两位小数(转载) DataGridView样式生成器使用说明 MSSQL如何将查询结果拼接成字符串 快递查询 C# 通过smtp直接发送邮件 C# 带参访问接口,WebClient方式 C# 发送手机短信 文件 日志 写入 与读取
- 用Shell脚本动态分析maillog日志,把恶意IP用防火墙禁止
- linux脚本每隔几分钟ping指定ip如不通向指定手机发送短信
- python分析nignx访问日志脚本分享
- shell脚本分析 nginx日志访问次数最多及最耗时的页面
- bash-scripts 用脚本添加恶意访问IP到防火规则里
- Apache/Nginx 访问日志分析脚本(2)
- python脚本实现统计日志文件中的ip访问次数代码分享
- python脚本实现统计日志文件中的ip访问次数代码分享
- python统计日志ip访问数脚本
- python分析apache访问日志脚本分享
- 网站安全分析:恶意DOS脚本日志分析报告
- 你用pig分析access_log日志中ip访问次数
- shell脚本分析 nginx日志访问次数最多及最耗时的页面(慢查询)
- 脚本控制向Android模拟拨打电话,发送短信,定位设置功能
- Apache/Nginx 访问日志分析脚本