The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Как отбить простой DDoS в nginx
Все мы сталкивались с зажатым F5 и просто озверевшими ботами, уже давно не
секрет, что мораль у данных личностей довольно слаба, а желание забить канал
высоко, именно по этому данный сниппет в nginx может срезать львиную долю таких
неуравновешенных личностей.

Суть идеи  в следующем:

   map "$http_accept_encoding:$remote_addr" $ban_ban {
    "~*(.*):(1.1.1.1|2.2.2.2)"  0; #  тут перечисляем кому "можно"
    "~*(.*gzip.*|.*identity.*):(.*)"  0; # выделяем запросы с gzip в заголовке Accept-Encoding
    default        1; # ban
   }

   if ($ban_ban = 1) {
        return 444;
   }


TL;DR: большинство дельцов, не обращают внимание на заголовок gzip в своих
запросах, им важно забить серверу исходящий канал (вот и не требуют gzip) -
мораль  в том, что легитимный пользователь/браузер ВСЕГДА посылает gzip/deflate
в своих "ожиданиях" от сервера. Как следствие такое помогает избежать 90%
простейших атак.
 
20.02.2020 , Автор: Ilya
Ключи: nginx, ddos, flood, gzip, http / Лицензия: CC-BY
Раздел:    Корень / Администратору / Сетевые сервисы / WWW, Apache httpd / Ограничение доступа и ресурсов, безопасность

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, anonymous (??), 10:41, 20/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Надо нормально настраивать rate limit, а не тупо срезать всех, кто не запрашивает deflate.
     
     
  • 2.3, LeNiN (ok), 14:21, 20/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    +1 за limit_req_zone.
     
  • 2.5, анонимус (??), 19:51, 20/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    rate limit против DDoS? Ну-ну
     
     
  • 3.6, Аноним (-), 22:35, 20/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Если они пытаются бандвиз жрать - вполне себе вариант маневра.
     
  • 3.8, Валик (?), 07:19, 24/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > rate limit против DDoS? Ну-ну

    а что не так? отлично подходит для выявления ботов и логирования. а там уже парсим логи и на основе отлупов по лимитам заносим в бан посредством iptables...
    в комплексе с другими простыми средствами вполне спасает от средних DDoS-ов...

     

  • 1.2, gogo (?), 12:48, 20/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В этом есть некий смысл, однако таким макаром можно отбить разве что атаку уж какого-то совсем невменяемого скрипт-киддиса.
     
  • 1.4, sabitov (ok), 19:07, 20/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Иногда бывает удобно посмотреть, что отвечает чужой сервер на запрос. Кому как, конечно, но мне такие проверки удобно делать через телнет / опенссл. И ни про какой дефлейт при этом, разумеется речи не идёт.

    rate limit, адназначна!

     
  • 1.7, Аноним (7), 18:35, 21/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    444 плохой вариант, потому что атакующий получает обратную связь. 502 или 504 гораздо лучше.

    Еще можно резать тех, кто делает запрос и не читает ответ или читает только заголовки. Но это уже по логам и дешевле это делать каким-нибудь ipset.

     
     
  • 2.13, тигар (ok), 19:35, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    вот и выросло поколение одминов-по-хабрахабару.
    почитай уже что делает return 444 и подумай, чем оно отличается от 50х для сервера и, например, атакующего.
     
     
  • 3.16, Аноним (7), 01:24, 02/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Песком не засыпьте, дедушка.

    444 позволяет сэкономить чуточку памяти и дескрипторов (которые дешевы), но при этом дает атакующему ценную информацию, какие боты уже забанены (их можно перевести на другие сайты, взамен ввести новые).

     
     
  • 4.17, тигар (ok), 11:34, 02/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Песком не засыпьте, дедушка.
    > 444 позволяет сэкономить чуточку памяти и дескрипторов (которые дешевы), но при этом
    > дает атакующему ценную информацию, какие боты уже забанены (их можно перевести
    > на другие сайты, взамен ввести новые).

    а 50х, значица, ничего атакующему не говорит, правда? Ты еще ниразу не видел сайтов, которые ошибки сами обрабатывают, вместо того, чтобы показать дефолтовый 50x.html nginx'а ? и, чтобы 2 раза не вставать, для тебя DDoS это сколько и чего. Ну и, "покекать" - без дыдоса сколько уников/чего там еще на Самом Посещаемом Сайте твоем?

     
     
  • 5.18, Аноним (7), 00:27, 08/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Пишу не столько для вас, сколько для тех, кто будет читать комментарии.

    Преобладание 502 в ответах цели дает атакующему сигнал, что он достиг цели.
    Если сервер врет и на самом деле бэкэнд доступен, атакующий может ошибочно решить, что сайт лег и перестать что-то делать (добавлять нагрузку, менять параметры атаки - все, что обычно делают, чтобы сайт продолжал лежать).
    Под атакой сайт работает нестабильно, надежно распознать ложную 502 не представляется возможным.  Фактически атакующая сторона для сохранения эффективности может только вводить новых ботов или прокси (то есть снижать общий КПД и тратить дополнительные ресурсы).
    У любой атаки есть бюджет. Только в представлении людей не в теме есть какие-то халявные ботнеты бесконечных размеров, которые ничего не стоят.

    >сайтов, которые ошибки сами обрабатывают

    Отображение 500х ошибок движком сайта - яркая профнепригодность.

     
     
  • 6.19, тигар (ok), 08:45, 08/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    булшит уровня г-норесурса хабрахабар. не понятно только почему они из своей резервации вылазят..

    несколько вопросов:
    1) по-твоему заказчик/исполнитель ддос смотрит в выхлопы консолек ботов, а не ходит прям из своей машинки прям на сайт-жертву, серьезно?
    2) ты и правда даже порядок цен не знаешь, но щеки надуваешь
    3) про отображение 50х сайтом посмеялся
    4) ты так и не ответил что/сколько чего для тебя это ддос
    5) про "защищенный" тобой более-менее нагруженый сайт почему-то промолчал

    может все-таки давно признать что про 444 прочел от "икспертов на хабре" и закончить этот ненужный тред?

     

  • 1.9, Аноним (9), 23:20, 02/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >TL;DR: большинство дельцов, не обращают внимание на заголовок gzip в своих запросах, им важно забить серверу исходящий канал (вот и не требуют gzip)

    Что за бред? Все нормальные либы для HTTP сами посылают все нужные заголовки и сами всё сжимают/раззимают. Зарезание не-http/2 тоже бесполезно - в libcurl - лучшей либе для http - он есть.

    И тем более это никак не поможет против

    > Все мы сталкивались с зажатым F5

    .


    Причём все эти меры - это false positivы, пользователи обидятся, и их не будет даже после того, как вы всё разрешите.

    От syn-флуда же ничего не спасёт кроме Cloudflare-подобных сервисов, которые проглотят атаку и не подавятся.

     
     
  • 2.11, Ano (?), 17:22, 08/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ну либы либами, а реальные атаки и их резолвы - на опыте именно такие, да и какой пользователь не юзает gzip/deflate ?
     
  • 2.12, Ano (?), 17:24, 08/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    >> Все мы сталкивались с зажатым F5
    > .

    это было лирическое отступление есичо.

     

  • 1.10, guest (??), 20:00, 03/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >От syn-флуда же ничего не спасёт кроме Cloudflare-подобных сервисов, которые проглотят атаку и не подавятся.

    разве syncookie не спасают?

     
     
  • 2.14, тигар (ok), 19:36, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    >>От syn-флуда же ничего не спасёт кроме Cloudflare-подобных сервисов, которые проглотят атаку и не подавятся.
    > разве syncookie не спасают?

    видимо, зависит от того, насколько вас решили завалить.

     
  • 2.15, Аноним (15), 19:18, 17/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Если тебе просто наливают syn-ов под завязку канала, то никакие куки не помогут.
     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру