设置默认的 DROP 策略是否真的提高了安全性?

信息安全 防火墙 服务器
2021-08-24 09:27:08

目前的现状似乎是配置防火墙以丢弃任何不是发往专门打开的端口的数据包。许多防御性端口扫描器(例如ShieldsUP!)似乎对每个具有 DROP 策略的端口都赞不绝口。如果您要对世界上任何一个顶级域进行端口扫描,几乎所有这些域都会显示其默认策略是 DROP,但需要的端口(例如 80 和 443)除外。

这背后的心理是什么?它不能用于隐身,因为如果端口 80 和 443 响应,那么看到主机已启动将是极其微不足道的。它也不能用于防御 SYN 泛洪,因为您可以将数据包定向到打开的端口。我唯一能想到的是,在向外的界面上运行着其他服务,但是管理员没有花时间正确配置这些服务,而是在它前面扔了一个防火墙。尽管如此,人们仍会认为世界上的顶级网站将齐心协力,足以正确配置其服务器。

我在这里错过了什么吗?设置默认的 DROP 策略真的可以提高正确配置服务器的安全性吗?

编辑:

我只是想稍微澄清一下我的问题。我不明白的是为什么人们觉得需要放置一个层来丢弃数据包而不是让它们通过并让网络堆栈完成它的工作。(建立一个用 RST 人为响应的层本质上是一样的,它提出了同样的问题。)

我并不是要暗示防火墙是无用的,但似乎人们不信任网络堆栈,以至于他们禁止直接接触它,除非在允许的端口上。暴露它并尽可能少地干扰它的真正危害是什么?

4个回答

对所有端口使用默认的 DROP 规则(对于网站来说,这些端口是 80/443)可以减少网络上给定站点的攻击面。丢弃数据包而不是配置服务更方便(也更便宜),这样它就给定策略而言是安全的。

可以对您的问题提出几种不同的看法,但我要解决的是 DROP 对于不允许的端口是否比 REJECT 更好?

丢弃数据包——静默地,没有 TCP RST 或 ICMP 被禁止——至少有两个原因是可取的。

  1. 它会减慢试图攻击大量端口的扫描仪,因为它们没有得到积极的反馈。
  2. 它减少了扫描时的误报 - 看到 RST/禁止消息的扫描仪会期待它们,并且在进行大型扫描时,有时这些数据包会丢失。如果您从不发送响应,那么它们就不会在扫描时丢失丢弃的数据包,并且会关闭它们。

如果您正在扫描自己(例如为了合规性检查),减少这些误报是一个显着的改进。而且,如果您要降低恶意扫描程序的误报,那么我宁愿他们不要兴奋地来查看实际关闭的端口;我宁愿他们有一个准确的扫描,看着它,决定去别处钓鱼。

我会把它归结为深度防守。是的,您可以将服务配置为仅侦听 localhost 或您的内部网络。即使正确配置,仍然有可能由于代码中的错误,它错误地接受了所有流量。接受 UDP 数据包的服务也可能容易受到 IP 欺骗攻击。TCP 可以抵抗这种攻击,因为连接设置永远不会发生,但是您最终可能会得到许多半开放的 TCP 连接,这可能会破坏您的服务。这可以执行,因为攻击者可以欺骗允许访问服务的内部 IP 地址。这种攻击通常称为 SYN 洪水攻击。更多信息:http ://searchsecurity.techtarget.com/definition/SYN-flooding

归根结底,采取额外的预防措施会增加攻击者为破坏您的系统而必须做的工作量。额外的安全措施还可以减少单个错误导致违规的机会。

你正确地理解了情况;将流量丢弃到封闭端口的好处微乎其微。但是,它仍然被认为是“最佳实践”。

我认为 ShieldsUP 报告此问题的原因可能表明存在配置错误。如果防火墙管理员打算阻止所有关闭的端口,并且由于某种原因错过了一个,那么 ShieldsUP 可以在扫描中检测到这一点。他们是否对这一发现进行了风险评级?如果它高于“低”,那么我会认真质疑这一点。

自 90 年代后期以来,网络防火墙技术并没有太大变化,很多建议都来自一个“更多的锁定是好的”时代,而对锁定的实际帮助没有深入了解。防火墙所取得的大部分进展都超出了网络层并进行“深度检查”。但是在一个封闭的港口,绝对不需要进行深度检查。