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.
Что я сделал не так?
1 ответ
Не блокируйте все исходящее правило, оно не выберет порт 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