iptables -A INPUT -p tcp -m multiport --dports 80,443,8080,8181 -m state --state NEW -m limit --limit 50/minute --limit-burst 200 -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 80,443,8080,8181 -m state --state ESTABLISHED,RELATED -m limit --limit 50/second --limit-burst 50 -j ACCEPT
iptables -A PREROUTING -t nat -p tcp --dport 80 -j DNAT --to-destination :8080
iptables -A PREROUTING -t nat -p tcp --dport 443 -j DNAT --to-destination :8181
iptables -A FORWARD -p tcp -m multiport --dports 8080,8181 -j ACCEPT
Я пытаюсь перенаправить трафик с 80 на 8080 и с 443 на 8181. Это удалось с использованием предыдущих строк. Теперь я пытаюсь напрямую ограничить доступ к 8080 и 8181, хотя не знаю, как это сделать.
Я знаю, что есть некоторые вопросы по этой проблеме, хотя я не нашел решения. Несмотря на принятый ответ на этот вопрос, я знаю, что это возможно, просто используя iptables.
Любая помощь будет оценена.
Пакеты проходят через цепочки netfilter следующим образом: PREROUTING-> Routing Decision-> INPUT, если их адрес назначения - ваш компьютер. DNAT, который применяется в цепочке PREROUTING, изменяет назначение пакетов, но не заставляет их идти в обе стороны. Таким образом, они попадают в цепочку INPUT с dports 8080 или 8181, ничего не идет с 80 и 443.
UPD: Я наконец понял, что вы пытаетесь сделать. Попробуйте это правило
iptables -A INPUT -p tcp -m multiport --dports 8080,8181 -m conntrack ! --ctstate DNAT -j DROP
Просто ограничьте его в зависимости от интерфейса.
iptables -A INPUT -p tcp -i eth0 --dport 8080 -j DROP
Вы пробовали эти правила? Я думаю, что ограничение на количество пакетов не заблокирует трафик, потому что последняя строка его примет.
Если политика по умолчанию - drop, вы не можете еще больше ограничить доступ. Вы можете разрешить только некоторый трафик - например, своими правилами-.