我正在尝试配置设备上的 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