LINUX.ORG.RU
ФорумAdmin

nginx: забанить клиента по limit_req

 , ,


1

0

гугль предлогает разные велосипеды с использованием fail2ban.

Чем плох вариант

        error_page   503  /ban/one.html;
        location = /ban/one.html {
            fastcgi_pass   YYYYYYYYYY;
            include        fastcgi_params;
            fastcgi_param  SCRIPT_FILENAME $fastcgi_script_name;
        }
        location /XXXX {
                limit_req   zone=one burst=5 nodelay;
        }

По-умолчанию limit_req дает 503. Его перенаправляем через error_page на fcgi-программу которая добавляет REMOTE_ADDR в какой-нибудь ipset, а в iptables дропает все новые коннекты с адресов из этого набора. ipset в виде хеша с таймаутом.

★★★★★
Ответ на: комментарий от beastie

fail2ban не нравится своей асинхронностью, питоном, вызовом ipset и использованием логов ошибок (которые у меня лежат по разным каталогам).

Из fcgi-программы можно использовать libipset для добавления адресов в набор.

vel ★★★★★
() автор топика
Ответ на: комментарий от router

cgi - слишком тяжело, да и nginx сам не умеет cgi.

fcgi-приложение - нормальное решение (главное чтоб оно было не на php).

vel ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.