Назад | Перейти на главную страницу

Как заблокировать tcp-reset с помощью iptables для борьбы с DDoS-атаками?

Кто-то засыпает меня случайными пакетами на случайные закрытые порты.

Мой сервер отвечает на это пакетами tcp-reset, я думаю, что тоже снижает исходящую пропускную способность.

Как использовать iptables для блокировки пакетов tcp-reset?

В DROP цель - это то, что вам нужно.

Если у вас есть только один ящик, и никакие другие машины в вашей сети не подключаются к нему, вам может сойти с рук блокировка всех RESET пакеты.

-A OUTPUT -p tcp --tcp-flags RST RST -j DROP

Видеть фильтрация пакетов-HOWTO-7 для подробностей

Это не очень вежливо по отношению к законным соединениям, если вы случайно не работаете, и это может вызвать ненужные тайм-ауты в установленных соединениях, которые должны использовать RESET пакет. Это не лучшая идея для постоянного использования, но если она позволяет вам справляться с DDoS-атаками, то временно все должно быть в порядке.

Если ваше обычное использование этого окна зависит от RESET пакеты работают для обычных пользователей, и вы хотите заблокировать только RESET пакеты для злоумышленника, вы захотите идентифицировать вредоносные пакеты, чтобы мы могли заблокировать только их.

Действительно ли эти пакеты случайны или все они имеют что-то общее?

-A INPUT -p tcp -j LOG

Если вы добавите LOG в конце вашей конфигурации iptables, вы можете использовать этот журнал для анализа входящих пакетов, чтобы увидеть, есть ли шаблон. Вероятно, будет полезна диаграмма разброса номеров портов источника и назначения. Нанесение IP-адресов на карту IP-пространства может помочь идентифицировать вредоносные и безопасные диапазоны, хотя я подозреваю, что это с меньшей вероятностью даст полезные результаты. Будет полезно просто подсчитать количество атакующих IP-адресов. Если это достаточно мало, вы можете просто добавить их все в конфигурацию iptables.

Даже если вы не найдете шаблон, поскольку определенно существует шаблон, основанный на «слишком большом количестве пакетов сброса», вы можете создать правило fail2ban, которое добавит DROP правило для любого IP-адреса, вызывающего более x RESET пакетов за y секунд.

Вы можете использовать '-j DROP' вместо '-j REJECT --with-tcp-reset'.