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

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

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

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

第二种是针对多个服务,通过精心设置,拦截INPUT除状态连接之外的所有数据包,拦截除状态连接之外的所有数据包。它还会拦截除状态连接之外的所有数据包。NEWESTABLISHEDOUTPUTESTABLISHED

后者提供了什么样的安全性而第一种简单的解决方案无法管理?

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

答案1

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

第二种防火墙是有状态的。它能够跟踪连接状态,确定特定数据包是否与已知良好的连接相关联,并接受或拒绝它。它在捕获无效流量方面比无状态防火墙要好得多。如果没有一些压倒性的担忧,所有防火墙应该为了实现最大程度的安全,保持状态。

答案2

前者通常归结为计划不周。被动的安全解决方案/扑灭火灾。例如,“哦,该死,他们在 123 上攻击我们,封锁它!”或者更确切地说,黑名单。后者是白名单的一种形式(最佳实践),通常归结为通过隐式排除来锁定事物并根据需要打开您需要的东西。

选择哪一个通常取决于您的环境/风格。

相关内容