Как автоматически запретить IP-адрес, анализируя лог-файл nginx - PullRequest
3 голосов
/ 28 марта 2012

У меня есть 4 веб-сервера за cloudflare и loadbalancer, nginx - веб-сервер, php-fpm управляет страницами php. Я не знаю, как блокировать простую атаку дос ...

Я могу обнаружить эту атаку с помощью модуля http_limit_req из nginx http://wiki.nginx.org/HttpLimitReqModule

но это вовсе не блокирует атаку, да, это может смягчить, но веб-серверы снова и снова попадают, и php-fpm достигает 80%, и через минуту сайт недоступен.

Я пытаюсь найти способ заблокировать такой запрос.

Я знаю, как заблокировать определенный IP-адрес или определенный идентификатор пользователя с помощью nginx, но я хочу сделать это автоматически. Я думаю, что не могу заблокировать ip с помощью iptables, потому что запрос приходит от loadbalancer :(, но я все еще могу определить правильный IP-адрес с помощью set_real_ip_from и real_ip_header X-Forwarded-For с nginx.

У меня есть файл журнала (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?

1 Ответ

5 голосов
/ 28 марта 2012

используйте fail2ban для этого.Это анализатор лог-файлов для множества различных сервисов, которые могут обнаруживать неудачные входы в систему и т. Д., А затем блокировать IP-адрес.

http://www.fail2ban.org

С уважением

...