安全运维 | Perl oneline定位网站攻击源,通过iptables封禁

来源:转载

*本文原创作者:ijzmesec,本文属FreeBuf原创奖励计划,未经许可禁止转载


Web网站日常运维运营时候怎么发现攻击,怎们即时阻断未遂的攻击呢?除了高大上的IDS,IPS,其实个人通过简单一些命令小工具通过分析流量,分析访问日志就能发现这种企图?本文举例说明笔者实际中遇到一例子说明利用单行命令实现从攻击发现到解决的思路和整个操作的过程。最后笔者推荐自己研发的一个简单基于访问日志的Waf模块,用来实现自动分析,按阈值来自动封禁攻击企图。


1、攻击发现

在查看网站每日流量信息信息,突然发现一个时间段流量徒增,猜测可能有攻击,记下当时的时间点,并截图:



这是百度免费cdn的免费统计信息,可见今天早上1点到2点有异常流量。平时对访问日志可以按天进行分割,时常关注日志大小,如果每天日志大小徒增就可以重点关注和分析了。


2、单行命令统计日志定位攻击

(1)分析网站access的日志,分析1点日志


perl -lne '/[16/Feb/2016:01/ and print' access_nginx.log


从上图可见这个时间点确实有大量不同寻常的访问,可判断为针对WP xmlrpc.php的攻击。


(2)对来源ip进行定位并统计次数


perl -lne '/[16/Feb/2016:01/ and print'access_nginx.log|perl -lane 'print $F[0]'|sort|uniq -c|sort –n


可以明确看到是这两个ip在攻击,根据ip查询来源地都是美国,为非正常访问。


(3)对两个ip单独分析,分析其行为


perl -lne '/141.101.75.65/ and print' access_nginx.log|head-n 10


可见,这两个ip先通过搜索文章作者(访问/?author=x),找到用户名,然后通过xmlrpc.php对用户名和密码进行暴力破解。


3、处理和后续扩展

首先对两个ip进行封禁


iptables -I INPUT -s 141.101.75.65 -j DROP
iptables -I INPUT -s 162.158.90.40 -j DROP

由于xmlrpc.php并没有实际中用到,直接删除,或者改名。


当然可以写一个自动处理脚本根据日志判断攻击ip,然后自动封禁,作为一个可持续的方案不错。(见最后推荐的模块,当时就是基于这个思想,开发出的App-Waf这个模块)。


4、关于wp防护建议

平时要多关注官方漏洞信息,随时升级,尽可能的消除安全漏洞。


注意不用系统默认的用户,比如常见的root,admin等都可以改名,设置用户显示别称,这样可以防止用户名直接暴露。


用一些安全插件比如 WPSecurty Scan ,Better wpSecuriry 等。


可以用一些开源ids,比如snort等。


5、自研Waf推荐

笔者自研了一套Waf系统,可以对非法访问进行统计,结合cron计划任务,支持对synflood 泛洪攻击进行封禁,并自动通过iptables或者nginx进行封禁。欢迎大家试用,并给予反馈和需求。


Github源码地址: https://github.com/bollwarm/App-Waf


码云源码地址: https://gitee.com/ijz/app-waf


App-Waf攻击统计截图


*本文原创作者:ijzmesec,本文属FreeBuf原创奖励计划,未经许可禁止转载


分享给朋友:
您可能感兴趣的文章:
随机阅读: