阻止除 SSH 之外的所有传出网络请求

阻止除 SSH 之外的所有传出网络请求

我有一种 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

相关内容