Что ж, я стал жертвой 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).