如何通过解析nginx日志文件自动拒绝IP地址

时间:2012-03-28 07:32:06

标签: nginx dos php

我有4个webserver在cloudflare和一个loadbalancer后面,nginx是webserver,php-fpm管理php页面。我不知道如何阻止一个简单的dos攻击...

我可以使用nginx中的http_limit_req模块来检测此攻击 http://wiki.nginx.org/HttpLimitReqModule

但这根本不会阻止攻击,是的,这可以缓解但是网络服务器再次受到攻击,并且php-fpm会达到80%,并且在一分钟内网站无法访问。

我正试图找到阻止此类请求的方法。

我知道如何使用nginx阻止某些ip地址或某些useragent,但我想自动执行此操作。我认为我无法使用iptables来阻止ip,因为请求来自loadbalancer :(但我仍然可以使用set_real_ip_from和real_ip_header X-Forwarded-for nginx来检测正确的ip地址。

我的日志文件(error.log)中填充了正确的IP地址,如您所见:

2012/03/27 18:34:02 [错误] 31234#0:* 1283通过区域“staging”限制连接,客户端:XX.XX.XX.XXX,服务器:www.xxxxxxx.com,请求: “HEAD / it HTTP / 1.1”,主持人:“www.xxxxxxx.com”

有人有想法,可以教我如何自动阻止这个ip?

1 个答案:

答案 0 :(得分:5)

为此使用fail2ban。它是许多不同服务的日志文件解析器,可以检测失败的登录等,然后阻止IP地址。

http://www.fail2ban.org

此致