Jump to content

Как защититься от Layer7 DDoS атак на веб-сервер в 2023 без денег?


_xvi

1800 views

Layer7 (или прикладной уровень) - это один из семи уровней модели OSI (Open Systems Interconnection). Т.е. это приложения smtp, веб-сервер, mysql и т.д.

DDoS (Distributed Denial of Service) атака - это тип атаки, которая направлена на создание перегрузки на сервере или сети, что приводит к его недоступности для легитимного трафика. В этом случае атакующий использует несколько компьютеров или устройств для генерации большого количества запросов к целевому серверу.

Как происходит атака? Поступает много запросов и на сервер и у него кончается CPU ресурс, который съедает сам веб-сервер. Тем самым веб-сервер не может обработать легитный(настоящий) запрос от пользователя.

HTTPFloodattack(4).png.d150c7f977272113c4c1f70fb80efe10.png

Обычно атаки идут с зараженных устройств, но так же могут идти с серверов, которые используют прокси листы.

Существует множество методов и инструментов, которые можно использовать для защиты веб-серверов от DDoS-атак. Первый шаг - первым делом надо убрать лимиты(rlimit, mysql, php и т.д.) или подобрать их под ваш сервер, оптимизировать настройки(php, nginx, mysql и т.д.) для снижения нагрузки на CPU сервера.

Среди возможных методов защиты можно выделить:

  • Использование специализированных решений для защиты от DDoS, например, бесплатный Cloudflare.

  • Максимальное кеширование статического контента на сервере, чтобы снизить нагрузку на CPU. Кроме того, можно использовать механизмы кэширования для динамических страниц, например, fastcgi_cache для PHP в NGINX. Т.е. все страницы для гостей мы будем кешировать, например по кукам. Если есть куки залогиненого юзера то не кешируем и т.д..

  • Использование rate-limit правил для ограничения количества запросов от одного IP-адреса. Например, для GET 2 запроса в секунду, для POST 1 запрос в секунду. Это можно сделать с помощью стандартного limit_req или профессионального https://github.com/limithit/ngx_dynamic_limit_req_module, этот модуль может банить на N сек IP-адрес(с помощью redis), что не может limit_req. Мы же не хотим использовать fail2ban в 2023?). Еще можно лимитировать запросы на одну страницу, если количество запросов превышает определенный порог. Можно лимитировать запросы по юзер-агенту, tls hash(ja3), $http_cookie и т.д.(обычный nginx это не поддерживает). Можно сделать модуль(для redis, пример: https://github.com/limithit/RedisPushIptables) для модуля dynamic_limit_req_module который будет банить в iptables или cloudflare(лимит 50000 правил) IP-адреса. Также чтобы снизить нагрузку CloudFlare дает нам бесплатное 1 правило rate-limit.

  • Создание скрипта, который определяет степень загруженности сервера, и если он загружен (под атакой), включать правило на Cloudflare, которое включает капчу или крутилку(I am under attack).

  • Скрыть свои настоящие IP-адреса(открытые сервисы) за CloudFlare и т.д. Открытые сервисы можно найти через https://search.censys.io/, который сканирует почти весь интернет или программу nmap. Например, в письме отправленного с того же сервера где стоит веб-сервер засветиться реальный IP-адрес(можно использовать сторонние smtp сервера, обычно они платные).

  • БОНУС для Layer4: можно сделать гениальный ход и делать все на IPv6, который еще никто не дудосит)). Например, если ваш провайдер не держит атаку и уводит IP-адрес в blackhole, тогда, возможно, другой IP-адрес не уведет. Обычно IPv6 выдают большой подсеткой, которую можно использовать по максимуму.

  • Еще идея: если клиент не загрузил определенный ресурс(картинку, css, js) -> блокировка его. 

В целом cloudflare в течении 10 минут отбивает атаки. Желаю удачи с экономией CPU. 😋

А вот несколько фактов о больших DDoS-атаках напоследок:

  • В 2018 году атака Mirai перешла на новый уровень, когда была запущена одна из самых мощных DDoS-атак, которая продолжалась около 11 дней. Атака была направлена на серверы компании OVH и достигла скорости более 1,3 Тбит/сек. https://blog.cloudflare.com/inside-mirai-the-infamous-iot-botnet-a-retrospective-analysis/
  • В 2020 году компания Cloudflare сообщила о рекордной DDoS-атаке на базе HTTP, которая достигла скорости в 754 миллиона пакетов в секунду. Для сравнения, типичная DDoS-атака на базе HTTP может генерировать от нескольких тысяч до нескольких миллионов пакетов в секунду. https://blog.cloudflare.com/cloudflare-mitigates-record-breaking-71-million-request-per-second-ddos-attack/
  • Like 2

1 Comment


Recommended Comments

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...