151209 nginx动态添加ip黑名单

《151209 nginx动态添加ip黑名单》

早上起来服务访问报警,查了下log,一个俄罗斯ip不停的更换user-agent来访问某站,导致FPM进程数过多。

查了下阿里云的安全卫士,竟然没有添加黑名单功能。对于iptables一直是懵懂状态,so 只能从代码或者nginx添加黑名单功能。

PHP代码级别的就非常简单了:

if($_SERVER['REMOTE_ADDR'] == "xx.xx.xx.xx"){   
exit();  
}

代码从网上看到的不太对,稍微调整了下,目前已经可以使用代码
在下面贴出来:

#!/bin/bash
tail -n50 /home/wwwlogs/access.log |
awk '{print $1,$7,$9}' |
grep -i -v -E "googleyahoobaidumsnbotFeedSkysogou360bingsoso403api" |
awk '{print $1}' |  sort | uniq -c | sort -rn |
awk '{if($1>5)print "deny "$2";"}' > /usr/local/nginx/conf/vhost/blockip.conf
/usr/local/nginx/sbin/nginx -s reload

Crontab中添加锁定时间

0,30 0-23 * * * /bin/bash /root/blockip.sh

原文链接:

http://www.lxway.com/1468096.htm

当然本身nginx的通过ngxhttplimit_req可以用来做动态黑名单功能,实现方法:

https://github.com/codehunte/ngxwhiteblacklist/blob/master/whiteblack_list.txt

  1. aoc说道:

    谢谢代码

发表评论

电子邮件地址不会被公开。 必填项已用*标注