1

Я настраиваю сервер, который хочу защитить от DoS-атак, устанавливая ограничение с помощью iptables:

iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
(default policy DROP) # of course

Дело в том, что мой веб-сайт будет использоваться многими компьютерами за одним и тем же маршрутизатором, выполняющим NAT. Допустим, это 100 компьютеров.

Определяет ли iptables эти 100 компьютеров как разные клиенты или считает, что все они одинаковы, потому что NAT заменяет исходный адрес на публичный адрес? (и меняет исходный порт на «случайный»)?

Если он рассматривает их как одного клиента, то мне придется повысить 25/ минуту до 2500/ минуту ...

1 ответ1

2

Вы сопоставляете пакеты по этим строкам, что означает, что вы допускаете только 25 пакетов в минуту.

Вместо этого вам нужно сопоставить количество сеансов, тогда вас не будет беспокоить количество клиентов, использующих тот же IP-адрес, потому что вы будете учитывать только новые сеансы, то есть пакеты SYN TCP.

Если 100 клиентов используют один и тот же IP-адрес, им все равно нужно открыть 100 новых сеансов, поэтому, если вы примете только первые 25 новых сеансов, остальные 75 сеансов будут отброшены.

Вы можете использовать --limit, чтобы избежать различных атак типа «отказ в обслуживании» (DoS) с большей скоростью, чтобы повысить скорость отклика.

Защита от наводнений:

# iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

Портативный сканер портов:

# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

Пинг смерти:

# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

Для получения более подробной информации, cceck http://www.netfilter.org/documentation/HOWTO//packet-filtering-HOWTO-7.html.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .