Любой способ улучшить производительность белого списка DDOS iptables?

У меня проблема с остановкой DDOS-атаки на выделенный сервер. Я перепробовал много вещей (mod_evasive, apf, ddos ​​deflate, bfd...). Атака очень большая и с разных IP-адресов, и брандмауэры и защиты не обнаруживают ее.

Я создал систему, которая позволяет только определенные IP-адреса и отбрасывает все другие соединения (белый список) с iptables, сбросив все входы. Я знаю, что это работает правильно, и если я пингую, ответа нет, как и ожидалось. Я читал кое-что о DROP и REJECT, но я не очень хорошо понимаю.

Проблема / вопрос заключается в том, что когда начинается атака, она продолжает вызывать задержку на сервере даже при активном белом списке. Почему это происходит?
Iptables сохранить
PD У меня есть скрипт на Python, который добавляет IPS из.php в список, если они еще не в нем
Я думаю, что атака на порт 25565 (игровой сервер)

1 ответ

Решение

DROP vs REJECT

Я читал кое-что о DROP и REJECT, но я не очень хорошо понимаю.

Разница между DROP а также REJECT в том, что DROPну, просто отбрасывает пакет, который действует так, как будто он не прибыл в первую очередь, тогда как REJECT отбрасывает пакет и отправляет причину, по которой пакет был отклонен, обратно к источнику. Причина определяется пользователем и может быть либо сообщением ICMP, либо сбросом TCP.

Какой из них использовать нельзя ответить в общем, и есть много дискуссий, как этот, вокруг этой проблемы. REJECT легче отлаживать, потому что вы знаете, что брандмауэр сбросил пакет. Проблемы с сетью или маршрутизацией могут быть исключены таким образом.

Мое личное мнение, что это зависит от причины, почему вы не хотите ACCEPT пакет. Если это явно поддельный пакет, например, пакет с поддельным IP-адресом, поступающий во внутреннюю сеть, вам следует LOG а также DROP пакет, но в других случаях, таких как закрытие неиспользуемых портов, я бы использовал REJECT с некоторым ограничением скорости, потому что DROP приведет к тайм-аутам.

В случае DDoS-атаки я бы определенно использовал DROP, как REJECT вызовет дополнительную нагрузку на вашу машину, и это еще больше усилит атаку.

Возможные причины проблем с производительностью

Теперь вернемся к вашей главной проблеме: почему проблемы с производительностью все еще существуют, хотя вы использовали iptables. Ну, это трудно ответить, так как есть много потенциальных причин:

  1. Атака просто большая. Даже если вы фильтруете плохие пакеты, они все еще поступают на вашу сетевую ссылку и заполняют буферы. Если пропускная способность злоумышленника достаточно велика, чтобы полностью использовать пропускную способность вашей сети, вы ничего не можете сделать. Вам следует обратиться к поставщику услуг. Они могут отфильтровывать трафик атаки на промежуточном узле или делать что-то еще, как в недавней атаке spamhaus.org, распределяя трафик атаки через многоадресную рассылку.

  2. Количество правил iptables может быть слишком большим. Вы сказали, что добавляете правило для каждого хоста в белый список. Если хостов много, каждый пакет должен сопоставляться с IP-адресом каждого хоста. Вы можете попробовать сгруппировать несколько хостов, если они находятся в одной подсети и совпадают с подсетью.

    iptables -A INPUT -s 1.2.3.0/24 -j ПРИНЯТЬ

Это позволило бы всем хостам с 1.2.3.0 по 1.2.3.255. Или вы можете использовать ipset для этого. Это цели

Если хотите

  • хранить несколько IP-адресов или номеров портов и сопоставлять их с помощью iptables одним махом;
  • динамически обновлять правила iptables для IP-адресов или портов без снижения производительности; выражать сложные IP-адреса и наборы правил на основе портов с помощью одного правила iptables и получать выгоду от скорости наборов IP

похоже, очень хорошо соответствуют вашему варианту использования.

Другие вопросы по тегам