使用以下规则时:
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,或者有一个规则来删除其他所有内容。