diff --git a/README.md b/README.md index cd2e8e5..c70add9 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,47 @@ echo "Done! Rules loaded" # update blacklist each 4 hours 0 */4 * * * * root /usr/local/bin/voipbl.sh ``` -4小时 + + +## Fail2Ban + + Fail2Ban 就是一个日志 IP 的过滤筛选器,根据不同的监狱规则从日志中找出这些“行为不端”的 IP,一旦这些 IP 发送了触犯监狱规则的请求达到阈值就会在 iptables 里直接封禁屏蔽,并且可以设置屏蔽这个 IP 的时间长久来避免误伤造成的危害过大。 + +所以用好 Fail2Ban 其实最重要的就是如何根据日志制定有效的监狱规则,规则制订完了还需要测试一下这个规则是否生效了,是否真的可以起到预期的目的。 + +打开编辑 nginx-not-found.conf 监狱规则文件,注意一定要在/etc/fail2ban/filter.d/目录内哦。 + +``` +[Definition] +failregex = ^.*"(GET|POST).*" (404|444|403|400) .*$ +ignoreregex = +``` + +再打开编辑 jail.local 启用这个监狱规则。 + +vim /etc/fail2ban/jail.local + +添加下面的代码到 jail.local 里即可。同样的,注意 jail.local 文件的目录哦。 + +``` +[nginxno404] +#处理 nginx 下的恶意 404 结果扫描 +enabled = true +port = http,https +filter = nginx-not-found +action = iptables[name=nginxno404, port=http, protocol=tcp] +#Fail2Ban 要监控的站点日志文件,大家可以根据自己站点来灵活调整。 +logpath = /home/wwwlogs/access.log + /home/wwwlogs/www.imydl.com.log + /home/wwwlogs/www.imydl.tech.log + /home/wwwlogs/service.imydl.com.log + /home/wwwlogs/eat.ymanz.com.log +bantime = 3600 #默认是屏蔽 IP 地址 10 分钟 +#下面这两个是说 60 秒内 5 次 404 失败请求就开始屏蔽这个 IP 地址 +findtime = 60 +maxretry = 5 + +``` /etc/fail2ban/jail.conf