Linux 针对nginx日志文件做ip防刷限制
针对nginx日志做ip访问限制
1.cat /var/log/server/nginx/access.log| awk -F '?' '/optionid/{print $1}'|awk '{print $1}' 获取含有optionid字符串行的行的ip
2.sort -r| uniq -c |sort -nr |awk '$1>1000{print $2}' >/var/log/server/nginx/denyip.log对获取的ip排序,计算大于1000次写入到denyip.log文件中
3.读取denyip.log文件中的ip地址,查看是否已经写入防火墙,没有的话添加iptables防火墙命令
1 #! /bin/bash 2 cat /var/log/server/nginx/www.test.com_access.log| awk -F '?' '/optionid/{print $1}'|awk '{print $1}'|sort -r| uniq -c |sort -nr |awk '$1>1000{print $2}' >/var/log/server/nginx/denyip.log 3 for i in `cat /var/log/server/nginx/denyip.log|sort -nr|uniq -u` 4 do 5 NUM=`/etc/init.d/iptables status|grep -c $i` 6 echo $NUM 7 if [ $NUM -eq '0' ];then 8 iptables -I INPUT -s "$i" -j DROP 9 fi 10 done