是这样说的:
A) OUTPUT链是由机器本身“ 生成 ”的包,即OUTPUT链影响connect()函数。
B) INPUT链是用于“ 寻址到 ”的数据包,并将在机器上结束,即INPUT链影响bind()和listen()函数。
如果是,为什么要在防火墙上控制这些function? 防火墙不是监听端口80的Web服务器或连接到该端口的客户端。
我是否正确地假设这些链条只是为了满足多用途机器(也就是说,防火墙和networking服务器)的需求?
你的陈述是真实的,但他们是不完整的。
只是看看整个图片: http : //upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg
这可能会回答你的现在和许多未来的问题。
许多人想要防火墙,因为:
– 计算机作为一个路由器,所以阻止一些stream是一个理想的function
– 电脑是由人类操作的。 而人类并不完美。 因此,如果您忘记卸载某个服务器,或者如果服务器出现故障(例如,即使您要求他不要回答的“常规”ntpd,它总是想要监听每个接口,那么使用防火墙也很酷)
– netfilter可以用来redirect端口(到另一个端口,或到另一台计算机)
– netfilter可以用来允许只有一些IP访问Web服务器,或者实现端口连接等
– 还有很多其他的东西
INPUT和OUTPUT链按照您的描述工作。
即使防火墙机器不是“多用途”计算机,最好将其INPUT和OUTPUT链设置为仅允许明确期望的通信的入口和出口。 如果你有在“多用途”计算机上使用这些链的规则,那么当攻击者尝试使用出站HTTP连接将第二阶段漏洞利用代码下载到他正在攻击的服务器时,你就会获得优势。
INPUT / OUTPUT链提供了很大的安全性。 许多应用程序对接受来自(或可以连接的地方)的连接的地方没有细粒度的控制,所以我们需要一个通用的方法来控制它。
另外还有很多iptables可以缓解的攻击/攻击。 说一个非常简单的连接泛滥攻击是在有人一次打开大量连接的情况下进行的。 您的应用程序的传入连接队列可能会导致合法连接失败。 Iptables可以防止这种情况发生。
有一个普遍接受的最低iptables规则列表,应该在所有服务器上实现安全。 看到这里 (这些规则有一个更“官方”的来源,但我不记得它在哪里)。
那么,而不是使用OUTPUT链,你可以“确保”:
而不是使用INPUT链,你可以“确保”:
TL; DR iptables为您提供了一个基本的强制访问控制(MAC)在其他任意访问控制(DAC),甚至完全不可控制的领域。