在一个接口上启用 iptables

nix*_*win 18 iptables

我希望 iptables 只过滤一个面向 WAN 的接口 eth0。如何才能做到这一点?我想在 eth0 上保持 ftp 和 ssh 端口打开。

sci*_*rus 31

因此,对于除一个接口之外的所有接口,您都希望接受所有流量,并且在 eth0 上您希望丢弃除 ftp 和 ssh 之外的所有传入流量。

首先,我们可以设置默认接受所有流量的策略。

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
Run Code Online (Sandbox Code Playgroud)

然后,我们可以重置您的防火墙规则。

iptables -F
Run Code Online (Sandbox Code Playgroud)

现在我们可以说我们想要允许 eth0 上的传入流量,这是我们已经允许的连接的一部分。

iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

此外,我们希望允许 eth0 上的传入 ssh 连接。

iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

但是应该删除 eth0 上传入的任何其他内容。

iptables -A INPUT -i eth0 -j DROP
Run Code Online (Sandbox Code Playgroud)

如需更深入的信息,请参阅此 CentOS wiki 条目

FTP 比 ssh 更棘手,因为它可以使用随机端口,因此请参阅上一个问题

  • 警告!!!在“iptables -F”之前执行“iptables -P...”。如果您当前的规则默认设置为丢弃流量,则运行 -F 会将您锁定在您的盒子之外。这就是为什么保持默认策略允许,并专门添加一个规则来丢弃所有其他流量是最佳实践。 (7认同)

Bar*_*Vos 8

这样的事情应该可以完成这项工作:

iptables -A INPUT -i eth1 -p all -j DROP
iptables -A INPUT -i eth0 -p all -j ACCEPT
Run Code Online (Sandbox Code Playgroud)