На этот вопрос уже есть ответ здесь:
Ну, я был жертвой Ddos атак и я действительно не могу понять, как избежать этого. На некоторых машинах это работает, а на некоторых нет, или, возможно, я делаю это как-то неправильно,
Злоумышленники используют несколько IP-адресов для атаки на порты моего игрового сервера, что заставляет мой игровой сервер выдавать 1 мб/с на каждый IP-адрес, технически это отражающие UDP-атаки. Вот как я вижу их защиту,
iptables -A INPUT -p udp -m state --state NEW -m recent --set --name DDOS --rsource
iptables -A INPUT -p udp -m state --state NEW -m recent --update --seconds 1 --hitcount 5 --name DDOS --rsource -j DROP
Технически это блокирует каждого атакующего на UDP портах. Я проверяю, заблокирован ли атакующий, используя "iftop" или "tcpdump", когда я вижу, что выход на IP атакующего становится равным 0, это подтверждает, что защита работает.
На моей машине CentOS 6 под управлением iptables 1.4.7 я использую аналогичный метод для блокировки, и очень странно, что иногда он работает, а в следующий час нет. После множества попыток я перезапустил свою систему и iptables, защита работала нормально и атакующий был заблокирован. Сегодня я вошел в систему, и он снова атакует меня, и хотя я перезапустил iptables, он не блокируется. Я не хочу перезапускать систему снова и снова, чтобы заставить ее работать, так в чем может быть проблема?
Также некоторые люди говорят, что UDP не имеет состояния, но чем бы это ни было технически - я всегда использовал эту команду и она работала раньше для меня, почему не сейчас или почему частично сейчас?
UDP действительно не имеет состояния, хотя iptables , похоже, имеет особую обработку.
Итак, глядя на ваши правила, кажется, что вы пытаетесь заблокировать любой IP-адрес, который отправляет вам более 5 пакетов в секунду. Проблема №1 заключается в том, что ваши законные клиенты будут делать это, поэтому вы в конечном итоге также заблокируете их.
Лучшее решение здесь - ограничить количество 'getstatus' пакеты, которые видит ваш сервер. Атаки отражения DDoS основываются на этом, и сопоставление на основе содержимого пакета довольно простое. Это также имеет то преимущество, что не влияет на ваших законных клиентов (которые должны отправлять только несколько запросов getstatus).