# rate-limit repeated new requests from same IP to any ports
iptables -I INPUT -i $ETH0ORSIMILAR -m state --state NEW -m recent --set
iptables -I INPUT -i $ETH0ORSIMILAR -m state --state NEW -m recent --update --seconds 60 --hitcount 12 -j DROP
С указанными выше настройками я бы разорвал любое соединение, которое неоднократно попадало на мой сервер более 12 раз в течение 60 секунд.
Можно ли сделать это для всех портов, но, скажем, для порта 8080?
В качестве еще одного решения вы можете добавить к своему iptables
rules Правило ACCEPT перед правилом DROP. Он принимает все пакеты на порт 8080 и устанавливает ограничение скорости для всех остальных портов.
iptables -I INPUT -i $ETH0ORSIMILAR -m tcp --dport 8080 -j ACCEPT
iptables -I INPUT -i $ETH0ORSIMILAR -m state --state NEW -m recent --set
iptables -I INPUT -i $ETH0ORSIMILAR -m state --state NEW -m recent --update --seconds 60 --hitcount 12 -j DROP
Это решение позволит вам открывать порты для доступа без изменения правил.
Вы можете просто изменить свой DROP
Правило читать:
iptables -I INPUT -i $ETH0ORSIMILAR -p tcp ! --dport 8080 -m state --state NEW -m recent --update --seconds 60 --hitcount 12 -j DROP
Вам нужно добавить параметры -p tcp ! --dport 8080
для соответствия TCP-трафику, предназначенному для любого порта, кроме 8080. Обратите внимание, что это правило не будет соответствовать другим протоколам, таким как UDP.
Другая возможность - иметь правило ACCEPT перед этими двумя правилами для порта 8080.