在iptables中,ESTABLISHED状态是否需要以后的状态NEW来build立一个ESTABLISHED连接?

使用以下规则时:

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

…你需要添加特定的规则,包括NEW状态,以允许ESTABLISHED连接?

像这样:

 iptables -A INPUT -p tcp -m state --state NEW --dport 443 -j ACCEPT 

…或者只是通过接受而build立连接?

我已经阅读了几篇关于这方面的教程,而且我无法在任何地方find这个说明。

通常情况下, NEW状态将用于过滤不希望看到的stream的第一个数据包。

例如 :

 iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP 

将丢弃所有看起来不是有效的TCP SYN数据包的东西。

如果您的使用案例是允许世界连接到您的服务器端口443,请允许您的服务器回复并build立连接,则需要添加第二条规则,但NEW状态不是强制性的

所以你的configuration可以是:

 iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp -m state --state NEW --dport 443 -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 

要么

 iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 

或更好)

 iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 

这样做就足够了:

 iptables -A INPUT -p tcp --dport 443 -j ACCEPT 

当然,对于不接受连接,您已经需要将策略设置为DROP,或者有一个规则来删除其他所有内容。