我有一种 Linux,我只想用它通过 SSH 连接到其他机器。我正在尝试阻止出站流量以防止自动更新、病毒等。
我可以使用它来阻止所有流量,除了环回接口上返回本地主机的流量之外:
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
现在我如何仅允许 SSH 流量流出此接口?只需保持端口 22 打开即可(非特定于 SSH 协议)。
我可以在远程计算机上使用 X 服务器吗?
答案1
这是一个最小的 iptables 配置:
iptables -P INPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P OUTPUT DROP
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT
这将允许仅通过 IP 地址进行连接。
如果您想启用 DNS 解析,请添加以下两条规则:
iptables -A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
如果您知道 DNS 服务器的 IP 地址,则仅允许与它们的连接是有意义的。添加到上面两个命令-d DNS_IP_ADDRESS
,例如iptables -A OUTPUT -d 1.2.3.4 -p tcp -m tcp --dport 53 -j ACCEPT