ЗАЩИТА ОТ ДДОС АТАК своими руками. Лучшие методы.

Защита от ДДоС атак это самая увлекательная работа которую можно придумать. Многие ИТ специальности требуют усидчивости и очень монотонны. Не многим это подходит. Абсолютно противоположно этому можно назвать защиту от DDoS. Эта работа не даст вам скучать ни секунды. Мы решили помочь вам в этой не простой работе и опубликовать несколько простых, коротких и рабочих советов по защите сайта от ддос атак. Эти методы не помогут вам справиться с абсолютно любой атакой, но от большинства опасностей они вас уберегут.

ЗАЩИТА ОТ ДДОС АТАК

Подготовка к защите от DDOS

Правда такова, что многие сайты можно вывести из строя, при помощи атаки на веб сервер Apache которая называется Slowloris или провести атаку SYN-флуд с помощью множества VPS, поднятых за минуту в облачном сервисе Amazon EC2. Все наши дальнейшие методы по защите от DDoS своими силами основываются на следующих важных условиях. Либо же используя армию взломанных домашних роутеров ботнетом MIRAI.

1. Не использовать для защиты от ДДОС windows сервера.

Практика подсказывает, что сайт, который работает на любой версии Windows, в случае DDoS обречен. Причина неудачи кроется в  сетевом стеке windows: когда соединений становится черезчур много, сервер начинает плохо отвечать. Мы не знаем, почему Windows Server в таких ситуациях работает настолько плохо, но сталкивались с этим многократно. Поэтому дальше мы будем рассматривать только методы основанные на Linux. Если вы счастливый обладатель относительно современного ядра (начиная с 2.6), то в качестве первичного инструментария будут выступать утилиты iptables и ipset (для быстрого добавления IP-адресов), с помощью которых можно быстро заблокировать ботов. Еще один ключ к успеху — правильно настроенный сетевой стек, о чем мы также будем говорить далее.

2. Не использовать веб сервер APACHE

2-ое весомое условие — отказ от Apache. В случае если у вас,  установлен Apache, то  поставьте перед ним кеширующий прокси — nginx или же lighttpd. Apache очень плох в отдаче статического контента, и, собственно что ещё ужаснее, он на базовом уровне уязвим для опаснейшей атаки Slowloris, позволяющей завалить сервер буквально с мобильного телефонна. Для борьбы с разными типами Slowloris юзеры Apache выдумали в начале патч Anti-slowloris.diff, затем mod_noloris, вслед за тем mod_antiloris, mod_limitipconn, mod_reqtimeout… Но в случае если вы желаете спокойно спать, легче использовать HTTP-сервер, несокрушимый для Slowloris на уровне ядра. В следствие этого все наши последующие рецепты базируются на предположении, собственно что на фронтенде применяется nginx.

3. Отражаем ДДОС атаку

Собственно что предпринять, в случае если ваш сайт начали ДДоСить? Классическая техника самообороны — анализировать лог-файл HTTP-сервера, составить паттерн для grep (отлавливающий ддос ботов) и заблокировать всех, кто под него подпадет. Данная способ сработает… в случае если повезет. Ботнеты случаются 2-ух типов, оба небезопасны, но по-своему. Первый приходит на вебсайт мгновенно, второйпостепенно. 1-ый убивает все и незамедлительно, но несмотря на все вышесказанное в логах оставляет полный отпечаток своего присутствия, и в случае если вы их проgrepаете и забаните все IP, то вы — победили. 2 ботнет укладывает веб-сайт медленно, но банить для вас его будет необходимо, вполне вероятно, на протяжении дня и ночи. Всякому админу принципиально понять: в случае если главным инструментов будет grep, то нужно быть готовым потратить борьбе с атакой пару дней. Ниже идут рекомендации о том, куда возможно заблаговременно подсунуть соломки, дабы не больно было свалиться.

4. Используем модуль TESTCOOKIE

Наверное, самый ключевой, эффективный и оперативный рецепт данного материала. В случае если на ваш вебсайт приходит DDoS, то максимально действующей методикой предоставить отпор является модуль testcookie-nginx, созданный хабрапользователем @kyprizel. В подавляющем большинстве случаев боты, реализующие HTTP-флуд, достаточно тупые и не имеют устройств HTTP cookie и редиректа. Временами попадаются больше продвинутые — эти имеют все шансы применить cookies и воспроизводить редиректы, но практически ни разу DoS-бот не несет в своем ядре полно-фунционального JavaScript-движка. Testcookie-nginx трудится как резвый фильтр меж ботами и бэкендом во время L7 DDoS-атаки, позволяющий отсеивать мусорные пакеты данных. Собственно что входит в эти проверки? Умеет ли посетитель сайта выолнять HTTP Redirect, поддерживает ли JavaScript, является ли он браузером за которого себя выдает (поскольку JavaScript всюду различный и в случае если браузер обьявляет что он,  Firefox, то мы можем это проверить). Проверка реализована с помощью кукисов с использованием разных методов:

  • «Set-Cookie» + редирект с поддержкой 301 HTTP Location;
  • «Set-Cookie» + редирект с поддержкой HTML meta refresh;
  • случайным шаблоном, при этом возможно применить JavaScript.

Дабы избежать авто-парсинга, проверяющая Cookie имеет возможность быть зашифрована с поддержкой AES-128 и позднее расшифрована на клиентской стороне JavaScript. В свежей версии модуля была замечена вероятность ставить кукису сквозь Flash, собственно что еще разрешает качественно отсеять роботов (которые Flash, как правило, не поддерживают), но, не все, и перекрывает доступ для множества законных юзеров (фактически всех мобильных устройств). Стоит отметить, собственно что начать применять testcookie-nginx в высшей степени элементарно. Программист, в частности, приводит некоторое количество понятных примеров применения (на различные случаи атаки) с семплами конфигов для nginx.

Кроме плюсов, у testcookie есть и дефекты:

  • банит всех роботов, включая Googlebot. В случае если вы намереваетесь юзать testcookie потоянно, удостоверьтесь, собственно что вы  не пропадете из поисковой выдачи;
  • является проблемой для пользователей с браузерами Links, w3m и им подобными;
  • не выручает от роботов, оборудованных  браузерным движком с JavaScript.

testcookie_module не универсален. Но эфективно защищает от примитивных инструментов для ДДоС атак написанных на Java и C#. Таким образом вы отсекаете часть угрозы.

5. Используем код 444

Целью атакующих не редко становится  ресурсоемкая часть веб-сайта. Примером может быть поисковый движек, который выполняет ресурсо-емкие  запросы к базе. И этим пользуются  ДДоСеры, зарядив сразу несколько десятков тысяч запросов к поисковому движку. Как построить защиту от DDoS в этом случае? Можно на время отключить поиск. Хотя клиенты и не смогут искать нужную информацию встроенными средствами, но весь основной сайт будет оставаться в работоспособном состоянии, пока вы не найдете корень всех проблем. Nginx поддерживает нестандартный код 444, который позволяет закрыть соединение и ничего не отдавать в ответ:

Таким образом можно, быстро реализовать фильтрацию по URL. Если вы уверены, что запросы к location /search приходят только от ДДоС-ботов (например, ваша уверенность основана на том, что на вашем сайте вообще нет раздела /search), вы можете установить на сервер пакет ipset и забанить ботов простым shell-скриптом:

Если формат лог-файлов нестандартный (не combined) или требуется блокировать по иным признакам, нежели статус ответа, — может потребоваться заменить cut на регулярное выражение.

Продолжение следует..

Рейтинг материала
[Голосов: 1 Рейтинг: 5]
11 марта 2017, 03:51

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *