我一直在阅读关于IP表的一整天,规则是如何工作的,基本的web服务器的规则集等等。现在我正在尝试使用这个线程来configuration我的web服务器,使用这个线程作为出发点: 良好的iptables服务器启动规则?
既然我不想复制粘贴任何有用的东西,我只是按规则添加规则,并考虑每个规则,为什么我会需要它。 我来发现,我基本上需要通过端口80,443,22,587(邮件服务器)访问。
但是,添加这些规则后,我无法通过域访问我的网站。 所以我比较我提到的线程,我发现我没有这个规则:
# Allow traffic already established to continue iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
所以我添加了这个规则来testing事情,突然之间我可以访问我的网站。 然后我想,也许这是因为我已经连接到这个IP的网站,但如果我通过其他IP /networking连接,我仍然可以访问我的网站,依赖于这个规则。
因为我想了解这一点,我真的不明白为什么访问我的网站是依赖于该规则。 已经有一个规则,允许通过端口80(这是我的networking服务器端口上运行的端口)传入stream量,但只是显示规则是不够的? PS,这是我现在打开80端口的规则:
target prot opt source destination ACCEPT tcp -- anywhere anywhere tcp dpt:http
我希望有人能够阐明这个规则,为什么我可以用这个规则访问我的网站,而不是没有。
编辑:我得到为什么要添加这个规则,我认为它会加快的事情,因为它不必再经历所有其他规则,但我只是想了解为什么在我的情况下,这是至关重要的规则为了访问我的网站..
谢谢!
iptables是一个防火墙statefull ,与stateless statefull相反,这意味着它将连接识别为与状态相关的stream。 首先启动连接(NEW状态),(tcp的SYN数据包或UDP的第一个数据包)。 然后,做出决定(BLOCK,DROP或ACCEPT)。 这是您在ESTABLISHED规则之前创build的内容。 如果一个数据包在NEW状态被接受,那么属于同一个连接的数据包将不再是必须的(对于tcp来说,它不是一个新的状态),它将是一个SYN-ACK,ACK,Push,Push-ACK。 ..包)。 这些数据包属于ESTABLISHED状态。 通常情况下,ESTABLISHED包被接受,使其工作。
如果你不激活这个规则,你将有一个stateless防火墙。 要使其工作,您需要接受与您所选端口相对应的every数据包。 这可能会导致安全问题(考虑客户端防火墙试图访问Web服务器;每个数据包到Web服务器端口80 或从Web服务器端口80来的将被接受(对于Web服务器的答案)如果有人欺骗Web服务器的IP地址,那么它完全只要尝试连接源端口80 , 就绕过防火墙。
RELATED在这里没有必要。 它对应于不属于连接的stream量,但有时是有用的:
FTP等协议, 即使没有明确的规则与其关联,RELATED也会授权数据stream量。 更多在这里