Авг 28

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

HttpLimitReqModule
Этот модуль позволяет ограничить частоту запросов по определенному ключу. Нам нужно по IP, исключая поисковые системы. Нам ведь совершенно не хочется забанить гугл, правда? :)

Добавим в /etc/nginx/nginx.conf (в секцию http) строчку:

limit_req_zone  $binary_remote_addr  zone=mysitelimit:10m   rate=4r/s;

Так мы ограничим число запросов до 4 в секунду с одного ип. Учтите, что вам, возможно, потребуется другое значение rate.

Теперь идем в конфигурационный файл виртуального хоста, например /etc/nginx/sites-enabled/example.com:

...
listen some_ip:80;
server_name example.com www.example.com;
root   /var/www/example.com/;
...
    location / {
        #ваша конфигурация

        limit_req  zone=mysitelimit burst=6;

        error_page 410 = @nolimit;

        if ($http_user_agent ~ Googlebot|YandexBot|bingbot|Baiduspider) {
            return 410;
        }

    location @nolimit {
        #ваша конфигурация
    }

    location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf|ico)$ {
        root /var/www/example.com/;
        access_log off;
        error_log off;
        ...
    }

Таким образом мы ограничили частоту запросов до 4 в секунду с всплесками до 6 и отключили лимит для поисковиков. Опять же, возможно, вам нужны другие параметры. Проверяйте на конкретном сайте. Заметьте, у вас обязательно должна быть отдельная локация под статику, иначе лимит будет распространяться и на нее, а это нам совсем не нужно.

Fail2ban
Установка типична: aptitude install fail2ban
Дальше создадим правило для nginx. В /etc/fail2ban/filter.d/nginx-conn-limit.conf

[Definition]

failregex = limiting requests, excess.*by zone.*client: <HOST>

И в конце /etc/fail2ban/jail.conf включим правило:

[nginx-conn-limit]

enabled = true
filter = nginx-conn-limit
action = iptables-multiport[name=ConnLimit, port="http,https", protocol=tcp]
logpath = /var/log/nginx/error.log
findtime = 300
bantime = 7200
maxretry = 10

Тут, возможно, вам нужно будет сменить путь на error лог своего хоста. Банить будем на 2 часа.
Теперь перезапустим fail2ban: /etc/init.d/fail2ban restart

Посмотреть список забаненых можно с помощью iptables -L fail2ban-ConnLimit

На этом все, можем пустить для теста ab на сайт, забанить себя и пойти попить пива :)

13 Responses to “Защищаем сайт от http flood с помощью nginx и fail2ban”

  1. Sergei Says:

    А если это не тупой расстрел из 10 машин, а относительно умный бот-нет, в котором 3,000 — 7,000 — 10,000 машин:
    — разбросанных по разным географическим регионам
    — отправляющих по 1 запросу в 1-15 сек (с рандомной задержкой, чтобы было похоже на реальный браузнинг)

    Как Вы их проанализируете ?

  2. jeka Says:

    Ну это уже более серьезная ситуация. На практике это решается несколько иначе. Весь трафик заворачивается на проксирующие сервера, которые отдают новым клиентам js заглушку, где нужно отправить например post запрос на определенный URL. После этого клиент попадает в вайтлист и все последующие запросы напрямую проксируются на целевой сайт. Основная идея тут в том, что в подавляющем большинстве случаев боты не исполняют js и трафик не доходит до реальных серверов. У меня есть более-менее работающий вариант, позже надо будет тоже в блог закинуть.

    Если интересно, вот пример такой заглушки от одного хостера:
    http://pastebin.com/hb5b2d0H

  3. AfroditaBuize Says:

    Мытищ – значит получить возможность пользоваться развитой городской и транспортной инфраструктурой жк афродита 2 афродита мытищи официальный. Продается 1-х комнатная квартира в Мытищах в новом монолитно-кирпичном доме в ЖК Спутник

  4. TwilaItake Says:

    Революционное обновление «XRumer 16.0 + XEvil 3.0″:
    решение captcha Google, Яндекса, Фэйсбука, ВКонтакте, Bing, Hotmail, Mail.Ru, SolveMedia,
    а также свыше 8400 (!) других видов captchas,
    с высокой скоростью (100 изображений в секунду) и точностью (80%-100%). В XEvil 3.0 реализовано подключение любых SEO/SMM программ — XRumer, GSA, ZennoPoster, VKBot, A-Parser,
    и многих других. Готовится абсолютно бесплатная демо-версия. Интересно — ищите в YouTube «XEvil: new OCR — captcha solver»

  5. ScottFoowl Says:

    Hello. http://jakshgy773733.us

  6. MashaROW Says:

    Дане повідомлення розміщено тут за допомогою XRumer + XEvil 4.0
    XEvil 4.0 — революційне додаток, здатне обходити практично будь-яку антибот-захист.
    Розпізнавання капчи Google (ReCaptcha-1, ReCaptcha-2), Facebook, Yandex, VKontakte, Captcha Com і понад 8400 тисяч інших типів!

    Ви читаєте це — значить, це працює! ;)
    Подробиці на офіційному сайті XEvil.Net, є безкоштовна демо-версія.

    See also:
    https captcha 956

  7. Juliezbaw Says:

    Is this website alive?
    Or….NOT?!

    Thanks.

    I Need XEvil.
    XEvil 4.0 can break Google ReCaptcha-2!

  8. FishingEurek4c0m Says:

    Shop for all your fishing gear needs at http://www.FishingEureka.com/ ;
    Featuring rods, reels, bait & tackle, tools and supplies for saltwater, freshwater, ice & fly-fishing.
    FREE Shipping Worldwide! (No Minimum Orders!)

  9. ephresGott Says:

    В этом что-то есть. Спасибо за информацию, может, я тоже могу Вам чем-то помочь?


    Я извиняюсь, но, по-моему, Вы допускаете ошибку. Давайте обсудим это. Пишите мне в PM, поговорим. fifa 15 cracks 3dm торрент, fifa 15 cracks v3 или fifd fifa 15 скачать pc

  10. healthybeauty Says:

    Running out of health and beauty essentials used to mean trekking all over town to track everything down. Now, ticking off that shopping list can be done from home. From makeup and perfume, to appliances such as hair dryers and GHD straighteners, HealthyandBeauty.co is the place to go to find it all. Looking to create a new look? While having a makeup routine certainly saves time, it can be fun to try out new looks now and again.

    Whether it’s dewy and fresh, or full matte coverage, foundation is the base for any new look. Time for some contouring? Use a beauty blender, bronzer and highlighter to add contour and beautiful highlights, accenting great features (and playing down those that are perhaps not so great). Splash of colour? From exquisite neutrals to bold fabulous colour, a new eye shadow palette and quality makeup brush set can create a gorgeous new look with minimal effort. Finish it off with a hint of eyeliner, a coat of mascara and a flash of lipstick or lip gloss, and a whole new look is ready to be unveiled.

    https://www.HealthyandBeauty.co/

  11. Latonyaempog Says:

    Дане повідомлення розміщено тут за допомогою XRumer + XEvil 4.0
    XEvil 4.0 — революційне додаток, здатне обходити практично будь-яку антибот-захист.
    Розпізнавання капчи Google (ReCaptcha-1, ReCaptcha-2), Facebook, Yandex, VKontakte, Captcha Com і понад 8400 тисяч інших типів!

    Ви читаєте це — значить, це працює! ;)
    Подробиці на офіційному сайті XEvil.Net, є безкоштовна демо-версія.

  12. MichaelBride Says:

    e https://cialispcn.com cialis dose

  13. garneuei Says:

    Поздравляю, какие нужные слова…, великолепная мысль


    Мне кажется это замечательная идея fifa 15 crack v2, скачать приложение origin для fifa 15 или fifa 15 комментаторы черданцев скачать fifa 15 скачать торрент pc c таблеткой

Написать ответ