为什么我们对允许的服务有复杂的 iptables 设置?

dro*_*nus 1 iptables

在几个服务器系统上,我遇到了两种主要风格的iptables防火墙配置:

第一个是阻塞INPUT除提供的服务(如 HTTP)的端口之外的所有端口。

第二个是阻塞INPUT除了NEW几个服务的连接状态的每个数据包,精心设置和ESTABLISHED状态连接的所有数据包。OUTPUT除了处于ESTABLISHED状态的连接之外,它还阻止所有数据包。

后者提供了第一个简单解决方案无法管理的哪种安全性?

当然,出于某种原因阻止用户使用传出端口可能会很有用,但是如果我不需要保护服务器免受其自身用户的侵害,而仅需要保护服务器免受外部威胁,那么两种方法是否相同,或者第二种方法是否仍会提供好处?

Mic*_*ton 9

您描述的第一种防火墙是无状态的。它很简单,不跟踪连接;它只是尽可能快地检查给定的规则。除非在防火墙性能是一个重大瓶颈的情况下,通常不再推荐这样做,因为它允许的流量比乍一看明显要多得多。特别是,与合法连接无关的流量可以通过这样的防火墙。

第二种类型的防火墙是有状态的。它能够跟踪连接状态,确定特定数据包是否与已知良好的连接相关联,并接受或拒绝它。与无状态防火墙相比,它在捕获无效流量方面要好得多。没有一些压倒一切的顾虑,所有防火墙都应该是有状态的,以最大限度地提高安全性。

  • 停止。[阅读 RFC](http://serverfault.com/a/477468/126632) 了解 TCP 和 IP。了解它们的工作原理。评论线程真的不是解释此类基本内容的好地方。 (2认同)