Защита ноды от DDoS: фаервол, лимиты соединений и настройки ядра
Фаервол, ограничения на отправителя, настройки ядра и автобан обычными командами. Разбираем, почему запреты UFW не касаются опубликованных контейнеров, как проверить это на своём сервере и где кончаются возможности серверного слоя.
- Что потребуется
- Root-доступ к серверу ноды и вторая SSH-сессия как страховка. IP панели, свой домашний адрес, порт SSH и NODE_PORT.
- Проверено автором
- Рассчитан на Ubuntu 22.04 и 24.04, UFW, Docker, iptables 1.8. Синтаксис правил connlimit и hashlimit (IPv4 и IPv6), блок для after.rules, определение порта SSH и таймер отката проверены на Ubuntu 24.04. Полный сценарий с включением UFW и настройкой fail2ban на живом сервере не прогонялся: места, где поведение зависит от версии, помечены в тексте.
Разовая оплата · доступ навсегда · обновления материалов включены
Фрагмент руководства
Положить ноду можно тремя способами, и лечатся они по-разному. Первый: завалить сервер попытками открыть соединение. TCP-соединение открывается тремя пакетами: SYN, SYN-ACK, ACK. Атака шлёт тысячи SYN и не отвечает на SYN-ACK. Под каждый такой запрос сервер держит запись в очереди, очередь заполняется, и живые клиенты не могут подключиться. Сервер работает, но новых соединений не принимает. Второй грубее: на адрес льют столько мусора, что он забивает весь канал до сервера. Настоящему трафику места не остаётся, и настройки сервера уже ничего не меняют. Третий: завалить панель или страницу подписки обычными с виду запросами. Каждый запрос похож на запрос живого посетителя, сервер честно его…
Полный текст, команды и разбор доступны после открытия материала.