Потрем за ддос?

У нас вот вчера прилетело, не особо сильный, где-то 40к запросов в минуту, но хлопот доставил (да и доставляет в данный момент, т.к продолжается)

Кто чем пользуется? На заказчиков выйти, я так понял, нереально?

Сервисы типа qrator.net (кстати им вроде блог и дёти пользуется?) и highloadlab.ru норм, или есть интересней варианты?

Может, кто-то какие-нить железки отдельно покупал в датацентр?

В пост призывается trader

Tagged with →  

23 Responses to Потрем за ддос?

  1. LspMsk:

    Надо отталкиваться от того какой ddos приходит, 40к в минуту — это ~650 в секунду, а такую нагрузку можно тюнингом nginx’a отразить и не замечать впредь.
    Долбили только в web? По разным страницам или только главную, боты умеют js выполнять?

    Нас тут тоже недавно долбили, куратор для наших объемов трафика оказался достаточно дорогим, справлялись тюнингом серверов и изготовлением ловушек для ботов.

  2. TutZZ:

    да, ну нагрузка разная, бывает что 40к, бывает 70 или больше, в целом около 4 Mbps. nginx у нас скончался еще вчера, затюнить тупо не успели. Анализ ip-шек и последующий бан в iptables помог частично, но это если сидеть и следить за этим, обновляя правила.

    А ловушки для ботов на чем и как делали? я вот вижу, что боты тупо ломятся на главную, js, css и картинки не пытаются грузить

  3. Xuagreen:

    сделай главную статикой (:

  4. NedNo:

    Когда меня ДДоСили, было под 700К в секунду.
    650 в секунду это фигня.

    Напиши вот этому кексу:
    [email protected]
    он защиту включает очень недорого (во МНОГО раз дешевле qratora)

  5. LspMsk:

    у нас в состояние покоя на раздающем фаст сервере 800mb/s.

    с iptables нужно быть очень аккуратным, т.к. на больших списках он сам может положить систему, для него есть фича ipsets(?) которая заточена как раз на большие списки, погугли ее.

    Ловушки очень простые, все входящие запросы фильтруются с помощью nginx на наличие куки, если ее нету, то идет редирект на статическую страницу, которая с помощью js ставит куку и переадресовывает куда надо, таким образом для пользователя это выглядит практически незаметно, а если куки нету, то либо не пускать на сайты и пусть долбятся в статику, либо анализировать ip которые больше чем несколько раз попадают в эту страницу и что-то делать с ними дальше. Тут тоже нужно понимать, что пользователи без JS на сайты не попадут, но мне на них все равно.

    Схема выше довольно простая, ее нужно усложнять, что бы кука динамически менялась раз в несколько минут.

    Если боты работают по принципу паука, то есть находят все ссылки на главной и ходят по ним далее, то тоже, ставишь ссылку, на которую нормальный пользователь никогда не попадет ( display: none ) и при переходе по ней баним ip.

    Я недавно игрался, в качестве икспиремента, отрабатывал альтернативную схему бана. Не iptables, а nginx + memcached, в memcached кладутся ключи вида ( $remote_ip => 1 ), и наличие этих ключей проверяется в nginx, если ключ есть то сразу отправляет в @404, в противном случае пропускаем. Производительность падает примерно на 20%, но это позволяет сделать динамическую систему бана.

    Попробуй додумать эту идею и если, вдруг, реализуешь расскажи что получилось.

  6. Naref:

    Не надо проверять наличие ключей в memcached и отправлять в 404 🙂

    Каждый if жрет дофига ресурсов.

    Я ловил по 503 по limit_rate и совал в internal-location, который для текущего $binary_remote_addr в мемкэше ставил » «.
    А весь остальной поток совал в мемкэш, и либо отдавал негодяям этот » «, либо по 404 проваливался в нормальный сайт.

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

  7. EnoSnow:

    боты необязательно по главной долбить будут

  8. Xxxno:

    у меня как-то боты дергали самый тяжелый тред на форуме много-много раз в секунду, вот была жопа.

  9. LspMsk:

    про if я в курсе, но у меня он и не используется. Это идет как расширение схемы с ловушкой описанной выше и проверка на ключ происходит только location = /

  10. Xuagreen:

    тотут написал, цитирую:

    я вот вижу, что боты тупо ломятся на главную, js, css и картинки не пытаются грузить

  11. DSLNo:

    40 в минуту, отбивается nginxом на раз
    посте

  12. TutZZ:

    напишу в целом чем отделались — сначала боролись iptables и nginx, затюнить, как я сказал, не успели. То, что было справилось с нагрузкой около 4 мбит, ночью поперло где-то 20мбит, соответственно это соорудилово на скорую руку сразу загнулось. Пришлось таки заюзать куратор, если кто-то будет его использовать — будьте аккуратнее с их тарифами, там кроме суммы за месяц приходится платить еще и за трафик отдельно. Куратор в целом справился, ддос закончился, но т.к трафик шел весь через него, то получались приличные суммы, пришлось разносить статику поддомены.

    Сейчас тюним nginx, ищем слабые места для умных ддосов, ну и расползаемся на сервера. Куратор на всякий случай пока еще включен

  13. TutZZ:

    статику на поддомены*

  14. Ppoed:

    Я не нашел стоимости трафика у них на сайте. Вы брали помегабитную фильтрацию?

  15. RatFcuk:

    варниш поставить между nginx и чего там стоит (апач?)
    или мемкэш, тогда на фронте ставить скрипт, который при обращении будет делать запрос к бэку, отдавать ответ и его де ложить в мемкэш

  16. RodSnow:

    > но это если сидеть и следить за этим, обновляя правила.

    fail2ban сделает это за тебя.

  17. RodSnow:

    В кэш её!

  18. Ylfer:

    зачем нужен varnish, если уже есть nginx? лишняя latency только

  19. TutZZ:

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

  20. RatFcuk:

    варниш страницы в свой кэш загоняет, nginx+memcache или варниш в прослойку. на сайтах где страницы меняются редко — спасает сильно, те же сайты купонов — по статистике он на 56-59 запросов только 1 раз на апач переводит

  21. Lodblack:

    slow http атаки, кстати, научились побеждать?

  22. Xxxno:

    worker_connections/limit_conn

  23. W0dblack:

    с nginx и куками самый простой и один из самых действенных способов.

Добавить комментарий