Задача о защите от DDoS-атак
Задача будет полезна начинающим специалистам по информационной безопасности и всем, кто хочет защитить свой сайт от DDoS-атак.
Условие
Представьте, что у вас есть сайт, который работает через HTTPS. Он живет на Linux-сервере под вашим управлением — виртуальном или выделенном.
Задача
Составьте план действий для отбивки DDoS-атаки на сервер с вашим сайтом.
Решение
В качестве решения предлагаем схему и несколько советов.
Смотреть блок-схему с алгоритмом защиты →
Прежде всего определитесь, стоит ваш сайт защиты или нет. Если да, решите, сколько вы готовы на нее потратить. Какой бы вариант вы ни выбрали, к нему необходимо подготовиться. Например, определиться с оператором, который поможет с защитой, и ознакомиться с инструкцией по ее подключению.
Если вы решите отбиваться самостоятельно, придерживайтесь этих советов.
1. Спрячьте сервер с сайтом (origin) за reverse-proxy, на котором сможете отфильтровать нелегитимный трафик. Так вы избежите перегрузки origin-сервера. Кроме того, можно использовать несколько reverse-proxy и балансировку трафика в их сторону из интернета, используя DNS round robin. Если reverse-proxy не справятся, вам будет проще увести сайт под коммерческую DDoS-защиту, не раскрывая IP-адрес origin-сервера.
2. Проведите нагрузочное тестирование сайта на вашем сервере (не под атакой). Если его производительность вас не устраивает, стоит заняться поиском и устранением узких мест. Это может быть недостаток аппаратных ресурсов, неподходящие настройки по умолчанию приложений и/или сетевого стека ОС.
3. Используйте файрвол для фильтрации лишнего трафика. Лучше всего подходит политика «Запрещено все, что не разрешено». Тут вам могут пригодиться такие инструменты, как ipset, iptables rate limit.
4. Включите SYN Cookies.
5. Изучите возможности вашего хостинг-провайдера. Возможно, вы сможете отфильтровать лишний трафик на его стороне. Например, в Selectel для выделенных серверов доступен базовый файрвол. С его помощью можно отбиться от amplification-атак, объем которых превышает скорость сетевого интерфейса сервера*. Хотя такого рода атаки в автоматическом режиме отбивает наша базовая DDoS-защита.
* Если атака продолжительно негативно влияет на сетевую инфраструктуру, входящий трафик может быть заблокирован с использованием blackhole (RTBH). При блокировке создается тикет. Для снятия блокировки напишите нам. Автоматически блокировка снимается через восемь часов.
6. Составьте план действий по противодействию атакам и запасной план на случай, если вашу защиту смогут пробить.
7. Настройте мониторинг, который сможет сообщить вам о том, что сайт находится под атакой. В идеале, если мониторинг будет жить на отдельной внешней инфраструктуре, для которой нет риска пострадать от DDoS-атаки.