2012-03-28 39 views
3

我有4個web服務器在cloudflare和loadbalancer後面,nginx是web服務器,php-fpm管理php頁面。我不知道如何阻止一個簡單的DoS攻擊......如何通過解析nginx日誌文件自動拒絕ip地址

我能夠通過使用http_limit_req模塊從nginx的 http://wiki.nginx.org/HttpLimitReqModule

檢測到這種攻擊但這並不阻止攻擊,是的,這可以緩解,但網絡服務器被擊中和再次擊中,並且php-fpm達到80%,一分鐘內網站無法訪問。

我試圖找到一種方法來阻止這種請求。

我知道如何使用nginx阻止某個ip地址或某個useragent,但我想自動執行此操作。我認爲我不能用iptables阻止ip,因爲請求來自負載均衡器(但是我仍然能夠使用set_real_ip_from和real_ip_header X-Forwarded-For用nginx檢測正確的ip地址。

我有日誌文件(error.log)填寫正確的IP地址,你可以看到:

2012/03/27 18:34:02 [錯誤] 31234#0:* 1283限制連接按區域「分段」,客戶端:XX.XX.XX.XXX,服務器:www.xxxxxxx.com,請求:「HEAD/it HTTP/1.1」,主機:「www.xxxxxxx.com」

有人有一個想法,可以教我如何自動阻止此ip?

回答

5

爲此使用fail2ban。它是許多不同服務的日誌文件解析器,可以檢測登錄失敗等,然後阻止IP地址。

http://www.fail2ban.org

問候

+0

是的,我認爲這是一個很好的解決方案,我試圖建立的fail2ban這個提示:http://forum.nginx.org/read.php?11,223078我會讓你知道:)謝謝 – ilmetu 2012-03-28 08:47:26

+0

它工作得很好。謝謝 !!!! – ilmetu 2012-03-29 06:03:50

+0

是否可以用CSF代替Fail2Ban? – cgiacomi 2014-06-16 14:39:46