前言

承接前文《短信发送接口被恶意访问的网络攻击事件(二)肉搏战-阻止恶意请求》,文中有讲到一个定位非法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:找出攻击者IPcat /opt/sms-service/log
        
		

网友评论