在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 

第一个规则接受从$EXTERNALNET转发到目标端口为22 / tcp的$INTERNALNETstream量。

第二个规则接受从$INTERNALNET转发到端口为22 / tcp的$EXTERNALNETstream量。

在像iptables这样的状态防火墙的适当configuration中,不应该允许规则允许基于源端口的通信,因为允许有效build立的TCPstream的两个方向。 否则会导致安全漏洞 – 在这种情况下,只要具有22 / tcp的源端口,就允许所有出站通信。

对于非状态configuration,给出的例子可能是可以实现的最好的。

-s是源代码,-d是目的地,所以这些规则与在任一方向上传播的stream量有关。

$ INTERNALNET&$ EXTERNALNET是variables,可能是子网或networking范围。 我假设这是从一个bash脚本你得到的地方?

 --dport 22 ACCEPT 

这个指令告诉防火墙允许去往端口22的stream量通过你的服务器。

 --sport 22 ACCEPT 

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