使用防火墙阻止端口与首先不在该端口上启动服务之间有什么区别?

信息安全 网络 防火墙 港口
2021-08-10 07:38:07

我正在考虑在我的 Web 服务器上设置软件防火墙 (pf) 并对其进行了一些研究。如果我这样做,它将基本上阻止与除 80、443 和我用于 SSH 连接的非标准端口之外的所有端口的连接。

但是,既然我的服务器已经只在这些端口上运行了服务,那会没有意义吗?我现在真的不需要区域阻止 IP 或类似的复杂内容。

简单来说,对IP网络不太了解的人都能理解,这样配置防火墙对我还有用吗?从功能上讲,它与继续不在我要阻止的端口上运行服务有何不同?

2个回答

TL;博士

它可以防止必须手动配置服务以仅在 localhost 上侦听,因为您必须手动允许它们进行网络连接,并且它增加了攻击者必须付出的努力来侦察您的机器。这意味着它是针对攻击者和不良配置的有效工具。是的,您应该运行防火墙。

细节

端口有 2 个主要状态:

  1. 打开(服务正在监听)
  2. 关闭(没有任何东西在听)

您似乎熟悉这两种状态 - 端口默认为“关闭”,如果有服务侦听,则切换为“打开”。枚举打开和关闭的端口非常快——操作系统实际上会发送一个响应,说“这里有服务”(端口是开放的),或者说“这里没有服务”(端口被关闭)。

如果您使用防火墙,它会提供过滤端口的选项。对于过滤的端口,操作系统根本不响应。这意味着攻击者必须花费更多时间来确定端口状态,因为他们无法知道计算机是否没有发送任何响应,或者响应是否在传输过程中丢失。

此外,如果您正在运行防火墙,您可以保护自己免于意外将其他服务暴露给 Internet。

我已经在我的防火墙关闭的情况下对我的桌面进行了示例扫描(特别注意发现的端口数量,以及扫描花费了多长时间):

$ nmap 192.168.1.26

Starting Nmap 6.40 ( http://nmap.org ) at 2015-01-24 21:41 EST
Nmap scan report for TehPwner (192.168.1.26)
Host is up (0.00017s latency).
Not shown: 987 closed ports
PORT      STATE SERVICE
135/tcp   open  msrpc
139/tcp   open  netbios-ssn
445/tcp   open  microsoft-ds
902/tcp   open  iss-realsecure
912/tcp   open  apex-mesh
2869/tcp  open  icslap
5357/tcp  open  wsdapi
8081/tcp  open  blackice-icecap
49152/tcp open  unknown
49153/tcp open  unknown
49154/tcp open  unknown
49163/tcp open  unknown
49176/tcp open  unknown

Nmap done: 1 IP address (1 host up) scanned in 2.30 seconds

现在我启用了我的防火墙:

$ nmap 192.168.1.26

Starting Nmap 6.40 ( http://nmap.org ) at 2015-01-24 21:42 EST
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn

Nmap done: 1 IP address (0 hosts up) scanned in 3.03 seconds

再一次,跳过 ping 探测:

$ nmap 192.168.1.26 -Pn

Starting Nmap 6.40 ( http://nmap.org ) at 2015-01-24 21:42 EST
Nmap scan report for TehPwner (192.168.1.26)
Host is up (0.00090s latency).
Not shown: 996 filtered ports
PORT     STATE SERVICE
902/tcp  open  iss-realsecure
912/tcp  open  apex-mesh
2869/tcp open  icslap
5357/tcp open  wsdapi

Nmap done: 1 IP address (1 host up) scanned in 49.29 seconds

理想世界中,没有任何服务运行的开放端口与未开放的端口相同。现实世界中,人类会犯错误。您对系统的控制越少,对系统的任何攻击就越有可能被错误放大。

防火墙通过向您的计算机系统添加额外的控制层来减轻您的错误。它通过根据您的配置接受、拒绝或丢弃连接来实现。作为副作用,它有助于降低攻击者对您的操作系统 (OS) 进行指纹识别以发起更有针对性的攻击的能力。

如果您不熟悉您的操作系统,您可能会意外地重新启用禁用的服务或启动通过系统升级安装的新服务。除非您始终使用诸如 之类的程序进行检查,否则netstat这些服务将在您不知情的情况下悄悄地侦听传入连接随着时间的推移,其中一些可能会变得容易受到攻击,并为攻击者破坏您的系统提供空隙。

通过运行防火墙并在没有活动服务的情况下阻止端口,您实际上是在通过提供冗余来强化您的系统,以防在系统生命周期中安全控制失败或漏洞被利用。这种方法被称为纵深防御。