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

iptables, чтобы разрешить только ssh и https

Я пытаюсь настроить iptables на своем устройстве, чтобы разрешить только SSH и HTTPS трафик. В частности, протокол HTTPS используется для вызова некоторых REST API к удаленному серверу из клиента Java.

Это мои iptables:

iptables -F

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

#SSH
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

#DNS
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

#HTTPS
iptables -A OUTPUT -p tcp --sport 443 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

Все работает как положено, кроме трафика HTTPS, который блокируется iptables.

Что я сделал не так?

Не блокируйте все исходящее правило, оно не будет выбирать порт 443 в качестве источника для получения данных с другого сервера. И я думаю, что правил блокировки входящего трафика вполне достаточно, чтобы обеспечить безопасность вашего сервера. Отдых - все хорошо. Вы можете использовать следующие правила, если хотите.

iptables -F
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp -j DROP