Любой способ улучшить производительность белого списка 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. Ну, это трудно ответить, так как есть много потенциальных причин:
Атака просто большая. Даже если вы фильтруете плохие пакеты, они все еще поступают на вашу сетевую ссылку и заполняют буферы. Если пропускная способность злоумышленника достаточно велика, чтобы полностью использовать пропускную способность вашей сети, вы ничего не можете сделать. Вам следует обратиться к поставщику услуг. Они могут отфильтровывать трафик атаки на промежуточном узле или делать что-то еще, как в недавней атаке spamhaus.org, распределяя трафик атаки через многоадресную рассылку.
Количество правил 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
похоже, очень хорошо соответствуют вашему варианту использования.