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

Разрешить только HTTP (S) и DNS с помощью iptables

В настоящее время хост NAT и соответствующие клиенты могут получить доступ к любой службе. Мне нравится, что хост NAT (устройство, на котором запущен IPTABLES) может иметь доступ только к HTTP (S), DNS и отправлять / отвечать на запросы ICMP.

Я бы хотел, чтобы внутренние клиенты, стоящие за $ INTIF, имели доступ только к HTTP (S) и DNS. Я пробовал многопортовый, но мне не повезло. Я открыт для других предложений.

*nat
-A POSTROUTING -o "$EXTIF" -j MASQUERADE
COMMIT
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -p tcp -i eth1 --dport 22 --sport 1024:65535 -m state --state NEW -j ACCEPT
-A INPUT -i "$INTIF" -p udp --dport 53 -j ACCEPT
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A INPUT -m limit --limit 3/min -j LOG --log-prefix "input denied: " --log-level 7

-A FORWARD -i "$EXTIF" -o "$INTIF" -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i "$INTIF" -o "$EXTIF" -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i "$INTIF" -o "$EXTIF" -m multiport -p tcp --dports 80,443 -j ACCEPT
-A FORWARD -m limit --limit 3/min -j LOG --log-prefix "forward denied: " --log-level 7

-A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -m limit --limit 3/min -j LOG --log-prefix "output denied: " --log-level 7
COMMIT

Удалите «NEW» из второго правила FORWARD (это то, что принимает все исходящие соединения).

Правила третьего и четвертого форвардов должны выглядеть примерно так:

-A FORWARD -i "$INTIF" -o "$EXTIF" -m multiport -p tcp --dports 80,443,53 -j ACCEPT
-A FORWARD -i "$INTIF" -o "$EXTIF" -p udp --dport 53 -j ACCEPT

Кстати, ваша политика INPUT по умолчанию - accept, поэтому после регистрации «вход запрещен» пакет все равно принимается.