
У меня следующий сценарий:
я хочу разрешить доступ только к портам 22, 80 и 443, а все остальное разрешить.
Мой iptables -L
выглядит так:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:https
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere state RELATED,ESTABLISHED
DROP all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Но я не могу добиться желаемого эффекта, и даже со своего сервера я больше ничего не могу пропинговать (не могу выйти в интернет).
Кроме того, я рассмотрел возможность установки INPUT
политики DROP
и ручного открытия нужных портов, но это также не дало желаемого эффекта.
Есть ли разница между установкой DROP
политики в INPUT
цепочке и ручным открытием нужных портов и тем, как я это сделал, сбросив весь трафик в качестве последнего правила?
Спасибо большое,
всего наилучшего.
решение1
Ваша текущая настройка INPUT
цепочки позволяет клиентам подключаться к вашему серверу по TCP 22, 80 и 443 иtcpсоединения, которые вы инициируете, чтобы получить ответ. Вот и все! Нетicmp(для пинга), нетудп(DNS-поиск).
Имея ESTABLISHED, RELATED
правило для ALLOW
всех протоколов, а не толькоtcp, следует исправить вышеизложенное.
Относительно отказа от всего с использованием правила, а не DROP
политики:
iptables -P INPUT DROP
То же самое, что иметь:
iptables -A INPUT -j DROP
Как ваше последнее правило.
Кроме того, если вы точно не знаете, что делаете, вам следует полностью разрешитьпетлятрафик.