Топ-6 эффективных инструментов для защиты сервера от Ddos-атаки
Продолжительность DDoS-атаки может быть разной:
- 94,95% атак заканчиваются в течение четырёх часов.
- 3,27% длятся от 5 до 9 часов.
- 1,05% длятся от 10 до 19 часов.
- 0,73% всех атак длятся более 20 часов.
Защита от DDoS — комплексная задача, требующая применения различных инструментов и стратегий для обеспечения устойчивости к атакам и непрерывности работы. Рассмотрим пять возможных вариантов защиты.
NFSTables
NFTables — встроенный брандмауэр Linux (начиная с версии 3.13), пришедший на смену устаревшему IPTables. Он фильтрует сетевой трафик на основе пользовательских таблиц с правилами. Для настройки правил фильтрации используется утилита nft, которая проверяет корректность правил и транслирует их в байт-код. По умолчанию доступны три основных действия для обработки трафика:
- ACCEPT — разрешает пакету пройти дальше.
- DROP — бесшумно отбрасывает пакет без уведомления отправителя. Это может быть полезно для скрытия факта блокировки, но может привести к задержкам на стороне клиента.
- REJECT — отклоняет пакет с отправкой уведомления отправителю (например, TCP RST для TCP-соединений). Это более «вежливый» способ блокировки, так как клиент сразу понимает, что соединение отклонено.
DDoS-атаки направлены на исчерпание ресурсов сервера путём множества одновременных соединений. NFTables может ограничивать количество соединений с одного IP-адреса за определённый период времени, чтобы избежать перегрузки сервера. Например, если установить ограничение в 10 одновременных подключений на IP-адрес для веб-сервера, все последующие запросы будут отклонены до уменьшения количества активных подключений.
nft add rule ip filter input tcp dport 80 ct state new limit rate 10/minute accept
nft add rule ip filter input tcp dport 80 ct state new drop
- Первое правило разрешает до 10 новых соединений в минуту.
- Второе правило отбрасывает все остальные соединения.
Блокировка IP-адресов — если определённые IP-адреса однозначно идентифицированы как источники кибератак (например, по анализу логов или с помощью систем обнаружения вторжений), их немедленная блокировка может быстро остановить или значительно ослабить атаку. Этот метод эффективен, если атакующие применяют фиксированный набор IP-адресов. При использовании ботнетов с динамически меняющимися IP-адресами он не сработает.
nft add rule ip filter input ip saddr <IP-адрес атакующего> drop
- ip saddr <IP-адрес атакующего> — указывает IP-адрес атакующего;
- drop — отбрасывает все пакеты с этого адреса.
NFTables помогает в предотвращении SYN-флуд-атак. Это тип DDoS-атаки, при которой хакер отправляет на сервер множество SYN-пакетов, не завершая процесс установления соединения (не отправляя ответ ACK). В итоге сервер выделяет ресурсы для незавершённых соединений, исчерпывая свои возможности, и становится недоступным для реальных пользователей.
С помощью NFTables можно установить лимит на количество SYN-пакетов в секунду. Если их число превышает лимит, они отбрасываются, предотвращая перегрузку сервера. Параметр limit rate позволяет временно принимать больше пакетов, избегая блокировки легитимного трафика при кратковременных всплесках активности.
nft add rule ip filter input tcp flags syn limit rate 1/second accept
nft add rule ip filter input tcp flags syn drop
- Первое правило разрешает один SYN-пакет в секунду.
- Второе правило отбрасывает все остальные SYN-пакеты.
NFTables поддерживает создание и управление наборами IP-адресов (sets), сетей или других сетевых идентификаторов. Это упрощает управление большим количеством правил и повышает производительность.
nft add set ip filter bad_ips { type ipv4_addr; }
nft add element ip filter bad_ips { <IP-адрес1>, <IP-адрес2> }
nft add rule ip filter input ip saddr @bad_ips drop
- Создаётся набор bad_ips для хранения вредоносных IP-адресов.
- Добавляются IP-адреса в набор.
- Правило блокирует весь трафик из набора bad_ips.
После перезагрузки системы настройки NFTables возвращаются к значениям по умолчанию. Чтобы сохранить конфигурацию, нужно использовать команду nft list ruleset для экспорта правил.
nft list ruleset > /etc/nftables.conf
Для автоматической загрузки правил при старте системы можно использовать службу nftables:
systemctl enable nftables
systemctl start nftables
Преимущества:
- Инструмент встроен в ядро Linux, не нужно устанавливать дополнительное ПО.
- Гибкие настройки правил для фильтрации трафика.
- Работа на уровне ядра обеспечивает высокую производительность и минимальные задержки.
- Это бесплатное решение.
Недостатки:
- Настройка NFTables требует знаний сетевых протоколов и синтаксиса команд.
- Инструмент справляется с простыми DDoS-атаками, но может оказаться недостаточно эффективным против сложных атак с большим объёмом трафика или с методами маскировки.
- Высокая нагрузка на процессор сервера при большом количестве правил и объёме трафика.
- Ручное управление правилами требует постоянного мониторинга, что может быть трудоёмко.
CSF (конфигурация сервера безопасности и брандмауэра)
ConfigServer Security and Firewall (CSF) — комплексное решение для защиты серверов Linux и управления брандмауэром. Хотя CSF значительно упрощает настройку по сравнению с прямым управлением NFTables, для эффективной работы с ним необходимо базовое понимание принципов работы брандмауэров и сетевых протоколов.
CSF отслеживает серверные журналы и автоматически блокирует IP-адреса, которые совершают множество неудачных попыток входа, делают много запросов на сервер за короткое время, сканируют порты или проявляют подозрительную активность.
Брандмауэр ConfigServer также включает службу Login Failure Daemon (LFD). Это демон, который работает в фоновом режиме и периодически сканирует журналы сервера на наличие неудачных попыток входа. Он блокирует IP-адреса, которые проявляют подозрительную активность, например:
- множественные неудачные попытки входа в SSH;
- подозрительные запросы к веб-серверу;
- сканирование портов.
LFD блокирует IP-адреса постепенно:
- первая блокировка — на 15 минут;
- вторая блокировка — на 1 час;
- третья блокировка — навсегда (или до ручного удаления).
Основные функции CSF:
Включение IP-адреса в список разрешённых (whitelist):
csf -a <IP-адрес>
Ограничение доступа к серверу по IP-адресу (block):
csf -d <IP-адрес>
Указание входящих портов:
TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995,2077,2078,2082,2083,2086,2087"
Указание исходящих портов:
TCP_OUT = "20,21,22,25,53,80,110,113,443,465,587,993,995,2077,2078,2082,2083,2086,2087"
Преимущества:
- Интерфейс более удобен и понятен, чем NFTables, проще настройка и управление межсетевым экраном.
- Автоматизация задач безопасности, таких как мониторинг журналов и блокировка IP-адресов.
- Интеграция с панелями управления серверами, например с cPanel, DirectAdmin и Plesk.
Недостатки:
- Меньшая гибкость по сравнению с NFTables для настройки правил фильтрации трафика.
- Неправильная настройка CSF может привести к блокировке легитимного трафика или снижению производительности сервера.
- Это дополнительное ПО, которое нужно устанавливать и поддерживать.
UFW для Ubuntu
Uncomplicated Firewall (UFW) — это простой в использовании брандмауэр для Ubuntu, который помогает управлять сетевым трафиком и настраивать правила фильтрации. Хотя UFW не имеет встроенных функций для автоматического предотвращения DDoS-атак, его можно использовать для снижения их воздействия.
UFW позволяет ограничить количество новых подключений с одного IP-адреса за определённый промежуток времени. Это помогает предотвратить перегрузку сервера, вызванную большим количеством запросов от одного источника.
Например, для защиты порта SSH (22/tcp) можно использовать команду:
ufw limit 22/tcp
Это правило позволяет принимать новые соединения, но автоматически блокирует IP-адреса, которые пытаются установить слишком много подключений за короткое время.
Если определённые IP-адреса идентифицированы как источники атак, их можно заблокировать вручную:
ufw deny from <IP-адрес>
Это полностью запрещает доступ к серверу с указанного IP-адреса.
UFW можно использовать вместе с Fail2Ban — инструментом, который анализирует логи и автоматически блокирует IP-адреса, проявляющие подозрительную активность (например, множественные неудачные попытки входа). Fail2Ban настраивается на добавление правил в UFW для блокировки злоумышленников.
Преимущества:
- Простота использования.
- Встроен в систему Ubuntu по умолчанию, не требует установки.
Недостатки:
- Только базовые функции, нет сложной фильтрации.
- Нет встроенных функций для автоматического анализа логов и блокировки IP-адресов. Для этого нужна интеграция с Fail2Ban или другими инструментами.
Сравнение CSF и UFW
Характеристика | CSF (ConfigServer Security & Firewall) | UFW (Uncomplicated Firewall) |
---|---|---|
Сложность настройки | Более сложный, требует опыта в администрировании | Прост в использовании, подходит для новичков |
Функциональность | Расширенные функции: защита от DDoS, анализ логов, блокировка портов, интеграция с панелями (cPanel) | Базовые функции: ограничение соединений, блокировка IP, поддержка IPv6 |
Автоматизация | Встроенный мониторинг логов и автоматическая блокировка подозрительных IP | Требует интеграции с Fail2Ban для автоматической блокировки |
Интеграция | Поддерживает интеграцию с cPanel, WHM и другими панелями управления | Интегрируется с Fail2Ban, но не поддерживает панели управления |
Поддержка IPv6 | Полная поддержка IPv6 | Полная поддержка IPv6 |
Управление IP-адресами | Автоматическая и ручная блокировка IP, гибкие настройки для белых и чёрных списков | Ручная блокировка IP, ограниченные возможности для управления списками |
Защита от DDoS | Встроенные механизмы для защиты от DDoS-атак (например, SYN Flood, Ping of Death) | Нет встроенной защиты, только базовое ограничение соединений |
Мониторинг | Встроенный мониторинг трафика и логов | Нет встроенного мониторинга, требуется использование сторонних инструментов |
Модули Nginx
Nginx — это бесплатный веб-сервер и обратный прокси-сервер, который может использоваться для защиты от DDoS-атак.
Nginx позволяет гибко настраивать лимиты на количество одновременных подключений и скорость запросов с одного IP-адреса. Это помогает защитить сервер от атак злоумышленников, не создавая проблем для легальных пользователей. Модуль limit_conn ограничивает максимальное число подключений, а limit_req — их количество за определённый промежуток времени.
Ограничение скорости запросов контролирует количество HTTP-запросов, которые может сделать один клиент (обычно идентифицируемый по IP-адресу) в течение определённого времени. Если лимит превышен, Nginx может отклонить их с кодом ошибки (например, 429 «Слишком много запросов») или перенаправить на страницу CAPTCHA. Это помогает защитить сервер от перегрузки и обеспечить доступность для других пользователей.
Nginx можно настроить для обнаружения и предотвращения Slowloris-атак. Когда атакующий отправляет на сервер неполные HTTP-запросы и поддерживает соединение, не давая ему закрыться. Сервер ожидает завершения этих запросов, исчерпывая свои ресурсы.
Для защиты устанавливаются короткие тайм-ауты для неактивных соединений. Если клиент не отправляет данные в течение определённого периода времени, соединение закрывается.
client_body_timeout 10s — тайм-аут для передачи тела запроса клиента;
client_header_timeout 10s — для передачи заголовков запроса клиента;
keepalive_timeout 5s — для поддержания соединения keep-alive;
send_timeout 5s — для отправки данных клиенту.
Преимущества:
- Способность обрабатывать значительные объёмы трафика.
- Гибкие настройки для ограничения количества соединений и скорости запросов.
- Простая настройка limit_conn и limit_req без глубокого понимания сетевых протоколов.
- Защита от разных атак (HTTP-флуд, SYN-флуд, Slowloris).
Недостатки:
- Может быть неэффективен против сложных DDoS-атак, использующих ботнеты с реальными браузерами и поддержкой JavaScript.
- Неправильная настройка лимитов приведёт к ложным срабатываниям.
- Для качественной защиты нужен анализ трафика и понимание особенностей сервиса.
CDN (сеть доставки контента)
Защита на основе CDN работает благодаря распределённой архитектуре и способности эффективно фильтровать трафик.
CDN представляет собой сеть серверов, которые расположены в различных географических точках по всему миру (PoP). Вместо того чтобы весь вредоносный трафик обрушивался на основной сервер, он распределяется по множеству PoP, снижая нагрузку на каждый сервер.
Например, если сервер способен обрабатывать 10 000 запросов в секунду, а атака генерирует 100 000 запросов, он выйдет из строя. CDN со множеством PoP распределяет эти 100 000 запросов между своими серверами, снижая нагрузку на каждый и сохраняя работоспособность.
Преимущества:
- Автоматическая обработка больших объёмов трафика.
- Геораспределённые серверы обеспечивают равномерное распределение нагрузки в случае DDoS-атак, предотвращая перегрузку основного сервера.
- Встроенные фильтры, которые автоматически блокируют опасный трафик.
Недостатки:
- Базовая фильтрация трафика может быть недостаточной для защиты от сложных DDoS-атак.
- Нужно изменить записи DNS домена, чтобы трафик направлялся через CDN.
Облачные сервисы защиты от DDoS-атак
Вместо самостоятельной настройки и поддержки защиты на сервере можно делегировать эту задачу облачному провайдеру. В случае DDoS-атаки трафик перенаправляется через облачную инфраструктуру, где он фильтруется с помощью различных методов: анализа аномалий, сигнатур, поведения и т. д. Таким образом до вашего сервера доходит только безопасный трафик, что позволяет сохранять работоспособность ресурса без чрезмерной нагрузки.
Преимущества:
- Масштабируются для борьбы с DDoS-атаками любого размера.
- Резервирование избыточной ёмкости обеспечивает необходимый запас ресурсов.
- Просты в настройке и управлении, не требуют глубоких технических знаний.
- Провайдеры используют передовые технологии для обнаружения и блокировки атак.
- Анализ трафика в режиме реального времени позволяет оперативно выявлять угрозы.
- Защита автоматически обновляется для соответствия новым угрозам.
Недостатки:
- Зависимость от облачного провайдера в вопросах кибербезопасности.
- Возможные опасения относительно конфиденциальности данных при прохождении трафика через сеть провайдера. Однако многие провайдеры решают эту проблему за счёт отсутствия расшифровки трафика на уровне приложений (L7), что минимизирует доступ к конфиденциальной информации.
MWS использует два российских решения для защиты от DDoS-атак: Curator Labs для mws.ru и Anti-DDoS от RED для остальных ресурсов.
- Весь трафик сначала направляется в системы защиты (Curator Labs или RED Anti-DDoS).
- Трафик анализируется на всех уровнях (L3-L4 для сетевых атак, L7 для атак на приложения).
- Вредоносные запросы блокируются с помощью специальных алгоритмов. После очистки только безопасный трафик доходит до серверов MWS.
- Обеспечивается непрерывная техническая поддержка и защита приложений 24/7.
Эти меры помогают сохранить стабильную работу онлайн-ресурсов и обеспечить безопасность бизнес-процессов.
Выбор оптимальной защиты от Ddos-атак
Выбор оптимальной защиты от Ddos-атак
DDoS-атаки — многоэтапный процесс. Цепочка Kill Chain описывает последовательность действий злоумышленника, приводящих к успешной атаке на ИТ-инфраструктуру. Задача обороняющейся стороны — остановить атаку хотя бы на одном из этапов, обычно их семь:
- Разведка — злоумышленник собирает информацию о системе.
- Вооружение — он готовит инструменты для атаки (ботнеты, уязвимости).
- Доставка — заражает устройства или использует существующие сети для генерации трафика.
- Эксплуатация — начинается DDoS-атака, перегружающая систему.
- Установка — атакующий может расширять ботнет или укреплять свои позиции в сети.
- Управление — он управляет ботнетом, координируя атаку.
- Действия — непосредственно DDoS-атака, выводящая сервис из строя.
Также при выборе защиты от угроз необходимо учитывать:
- Насколько мощный у вас сервер и что на нём работает (веб-сайт, база данных и т. п.).
- Сколько вы готовы потратить на защиту.
- Насколько важно, чтобы ваш сервис работал бесперебойно.
- От каких атак нужно защищаться — простых или сложных.
Чтобы получить хорошую защиту, нужна комбинация нескольких способов:
- Например, можно настроить NFTables, CSF или UFW для фильтрации трафика.
- Использовать CDN для балансировки нагрузки.
- И, если ожидаете серьёзные атаки, подключить облачный сервис защиты.
Кроме того, важно иметь план реагирования на инциденты: кто за что отвечает в случае атаки.
Заключение
Защита от DDoS-атак — сложная и постоянно развивающаяся область. Эффективная защита требует многоуровневого подхода, сочетающего различные технологии и стратегии. Важно постоянно отслеживать трафик, анализировать логи и адаптировать систему защиты к новым угрозам.