Назад | Перейти на главную страницу

Как исключить применение iptables DROP к определенному порту?

# 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.