iptables自动屏蔽恶意高流量ip,iptables流量ip如前段时间新闻上所说


问题描述:


最近公司的nginx代理服务器,半夜都流量很高,可能是恶意用户开挂刷新网站页面。


如前段时间新闻上所说的黄牛党开挂刷新火车票网站一样,刷得网站几乎近似瘫了。因为我们公司网站是彩票开奖系统,也怕这样子恶意被刷,亟待解决。


解决办法:


这台服务器就是个nginx代理服务器,因此可以借助nginx的日志查看


cat /opt/webapps/log_nginx/518.access.log|awk -F'?' '{print $1}'|awk '{print $1}'|sort -r| uniq -c |sort -nr |more


撸一下,发现很多ip访问此次搞得离谱了点


因为日志带时间的,设置好时间变量,换个更准的脚来撸撸


cat /opt/webapps/log_nginx/518.access.log|awk "/$tian/$yue/$nian/ {print $1,$6,$7}"|awk -F'?' '{print $1}'|sort -r| uniq -c |sort -nr |awk '$1>3000{print $2}' >/opt/webapps/log_nginx/ip."$DATE"


于是呼我就把今天凌晨0点到现在的访问次数超过3000次且做相同件事,(我把访问提一个页面判定成同件事)全虑出来丢到ip."DATE"文件了,接下来就是再iptables添加DROP,让他继续嚣张……


终极!!!(上脚本)


#!/bin/bash


tian=`date |awk '{print $3}'`


yue=`date |awk '{print $2}'`


nian=`date |awk '{print $6}'`


YEAR=`date +%Y`


MONTH=`date +%m`


DAY=`date +%d`


HOUR=`date +%H`


#MIN=`date +%M`


DATE=$YEAR-$MONTH-$DAY-$HOUR


cat /opt/webapps/log_nginx/518.access.log|awk "/$tian/$yue/$nian/ {print $1,$6,$7}"|awk -F'?' '{print $1}'|sort -r| uniq -c |sort -nr |awk '$1>3000{print $2}' >/opt/webapps/log_nginx/ip."$DATE"


awk '{system("iptables -D INPUT -s "$0" -j DROP;iptables -I INPUT -s "$0" -j DROP ")}' /opt/webapps/log_nginx/ip."$DATE"


service iptables save


service iptables reload


#Now, start a truncated 518.access.log, to prepare for the next operation


cp /opt/webapps/log_nginx/518.access.log /opt/webapps/log_nginx/518.access.log_"$DATE"


echo "Let us go===========================================">/opt/webapps/log_nginx/518.access.log


最后两句是我在截断日志哦,不是百年之后,我的awk就跑不动了,log太大会叫的……


高大上的可以直接添加到计划任务里,不过可以有的ip并不恶意,人工稍瞥一眼更好


理想的结果还没考虑,


因为iptables规则太多会哭的,我想把每天规则注释上时间,以后每次执行脚了就把多少天前的解封了,免得百年之后全天下都进入我的黑名单了(如果our china人口不那么多)

相关内容

    暂无相关文章