Я хочу разрешить людям подключаться к портам 22, 80 и 443. Также я хочу иметь возможность выполнять поиск DNS с моего сервера.

Вот что я пытаюсь:

iptables -A INPUT -m tcp -p tcp --dport 1 -j ACCEPT
iptables -A INPUT -m udp -p udp --dport 1 -j ACCEPT

iptables -A INPUT -m tcp -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -m udp -p udp --dport 53 -j ACCEPT

iptables -A INPUT -m tcp -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m udp -p udp --dport 80 -j ACCEPT

iptables -A INPUT -m tcp -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -m udp -p udp --dport 443 -j ACCEPT

iptables -A INPUT -m tcp -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m udp -p udp --dport 22 -j ACCEPT

iptables -A INPUT -m tcp -p tcp -j REJECT
iptables -A INPUT -m udp -p udp -j REJECT

iptables -A OUTPUT -m tcp -p tcp -j ACCEPT
iptables -A OUTPUT -m udp -p udp -j ACCEPT

iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:tcpmux
ACCEPT     udp  --  anywhere             anywhere             udp dpt:1
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     udp  --  anywhere             anywhere             udp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     udp  --  anywhere             anywhere             udp dpt:https
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     udp  --  anywhere             anywhere             udp dpt:ssh
REJECT     tcp  --  anywhere             anywhere             tcp reject-with icmp-port-unreachable
REJECT     udp  --  anywhere             anywhere             udp reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp
ACCEPT     udp  --  anywhere             anywhere             udp

Если я опущу эти строки:

iptables -A INPUT -m tcp -p tcp -j REJECT
iptables -A INPUT -m udp -p udp -j REJECT

Я могу отключиться, но тогда я не закрываю все порты по умолчанию, что является целью. Почему правило INPUT влияет на мою возможность поиска по имени хоста (например, "ping google.com" с моего сервера?)

2 ответа2

2

Вам необходимо снова разрешить связанный трафик (т. Е. Ответы на исходящий трафик DNS). Кроме того, вы можете захотеть использовать удаление по умолчанию, а не определенное правило запрета на все, чтобы сэкономить место.

iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -j ПРИНЯТЬ

iptables -A INPUT -m состояние - СОСТОЯНИЕ ОТНОШЕНО, УСТАНОВЛЕНО -j ПРИНЯТЬ

iptables -P INPUT DROP

Ваши правила цепочки OUTPUT не нужны, так как в цепочке в настоящее время есть ПРИНЯТИЕ по умолчанию, а правила порта 53 не нужны, потому что вы не размещаете DNS-сервер, просто используете его, поэтому трафик уходит через цепочку OUTPUT , а не входной.

1

Как объяснено здесь, вы должны разрешить входящий трафик для УСТАНОВЛЕННОГО / СВЯЗАННОГО соединения, поэтому просто добавьте следующее правило в начале:

iptables -A INPUT -m состояние - УСТАНОВЛЕНО, СОПУТСТВУЕТ -j ПРИНЯТЬ

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .