iptables 规则用于阻止所有其他规则中未指定的流量

iptables 规则用于阻止所有其他规则中未指定的流量

有没有办法在 iptable 中添加一条规则来阻止其他所有规则中未指定/涵盖的流量?我知道我们可以使用 ! 来阻止特定端口和 IP 地址,但我的 iptable 中的规则太多,无法单独处理每条规则。

谢谢

答案1

您可以使用接受方法创建规则。

iptables -A INPUT <good traffic> -J ACCEPT
iptables -A INPUT <good traffic> -J ACCEPT
iptables -A INPUT <good traffic> -J ACCEPT
iptables -A INPUT <good traffic> -J ACCEPT
iptables -A INPUT DROP

最后一件事是删除您之前未接受的所有内容。如果您有多个网卡,设置会变得更加复杂。

为了简化配置,如果您还没有使用链,您应该使用它。

iptables -A INPUT -i eth0 -j input_eth0
iptables -A INPUT-i eth1 -j input_eth1
iptables -A INPUT-i eth2 -j input_eth2

ETC

然后你按我建议的去做。

iptables -A input_eth0 <good traffic> -J ACCEPT
... 
iptables -A input_eth0 -J DROP

iptables -A input_eth1 <good traffic> -J ACCEPT 
iptables -A input_eth1 -J DROP

此外,列表顶部的这些规则将确保来自网络内部的现有流量存在并可以自由进入您的网络。

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

答案2

$IPTABLES -A 输入 -j DROP   
$IPTABLES -A 输出 -j DROP
$IPTABLES -A FORWARD -j DROP

答案3

davidgo 和 cybernard 指定的规则是正确的,cybernard 也正确地定位了它们。让我来解释一下原因。

Iptables 规则按顺序应用:从上到下。一旦找到适用于相关数据包的规则,就会应用此“第一”规则指定的操作,并忽略所有后续规则。

因此,iptables 规则列表的典型结构包括一条“默认规则”,该规则被放在最后。它是默认规则,即当所有其他规则都不适用时我们应用的规则,因此我们应该将其放在最后。如果默认规则是 DROP 规则,则所有前面的规则都将只是 ACCEPT 规则。然后,任何没有适用 ACCEPT 规则的数据包都必须被丢弃,这是通过默认规则来处理的。换句话说,如果默认规则是 DROP,那么您只需要 ACCEPT 规则,如果默认规则是 ACCEPT,那么您只需要 DROP 规则。

最后,您可以使用以下指令实现相同的目的

iptables -P INPUT -J DROP

它为链 INPUT 定义了一个“默认策略”(-P),并且该默认策略是 DROP。它与上面讨论的规则具有相同的效果,但其使用受到更多限制(请参阅Linux 中有关 iptables 的手册页在这里

相关内容