在 IPTables 中,这两条规则有什么区别?

在 IPTables 中,这两条规则有什么区别?

这两者有什么区别或者它们本质上是同一件事吗?

iptables -t filter -A FORWARD -s $EXTERNALNET -d $INTERNALNET -p tcp --dport 22 -j ACCEPT
iptables -t filter -A FORWARD -s $INTERNALNET -d $EXTERNALNET -p tcp --sport 22 -j ACCEPT

答案1

第一条规则接受从 转发到$EXTERNALNET的流量,$INTERNALNET并使用目的地端口 22/tcp。

第二条规则接受从 转发到$INTERNALNET的流量$EXTERNALNET,并使用来源端口 22/tcp。

在正确配置状态防火墙(如 iptables)时,不需要基于源端口允许流量的规则,因为有效建立的 TCP 流的两个方向都是允许的。否则,可能会导致安全漏洞——在这种情况下,只要源端口为 22/tcp,就会允许所有出站流量。

对于无状态配置,给出的示例可能是可以实现的最佳示例。

答案2

-s 是源,-d 是目的地,因此这些规则与任一方向的流量有关。

$INTERNALNET 和 $EXTERNALNET 是变量,可能是子网或网络范围。我假设这是从你在某处得到的 bash 脚本中获取的?

答案3

--dport 22 ACCEPT

该指令告诉防火墙允许发往端口 22 的流量通过到您的服务器。

--sport 22 ACCEPT

该指令告诉防火墙允许从外部机器的端口 22 发送的流量通过到您的服务器。

相关内容