在一个接口上启用 iptables

在一个接口上启用 iptables

我希望 iptables 仅过滤一个面向 WAN 的接口 eth0。该怎么做?并且我希望保持 eth0 上的 ftp 和 ssh 端口打开。

答案1

因此,对于除一个接口之外的所有接口,您需要接受所有流量,而在 eth0 上,您需要丢弃除 ftp 和 ssh 之外的所有传入流量。

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

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

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

iptables -F

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

iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

我们还想允许 eth0 上的传入 ssh 连接。

iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

但是 eth0 上的任何其他传入都应被丢弃。

iptables -A INPUT -i eth0 -j DROP

如需更多详细信息,请参阅此 CentOS wiki 条目

FTP 比 ssh 更复杂,因为它可以使用随机端口,因此请参阅先前这个问题

答案2

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

iptables -A INPUT -i eth1 -p all -j DROP
iptables -A INPUT -i eth0 -p all -j ACCEPT

答案3

在 iptables 规则中指定接口的选项是-i,例如:-i eth0

答案4

这很简单,当你制定iptables规则时,你必须指定接口。指定iptables应该在其上运行的 LAN 卡的选项是-i

遵守规则可以给你一个良好的榜样

iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 21 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 -j REJECT --reject-with tcp-reset 

最后一条规则是拒绝任何不符合前两条规则的数据包。所有规则都iptables按给定顺序执行,因此拒绝数据包的规则始终是最后一条。

相关内容