我有防火墙(脑脊液),允许您单独允许传入和传出 TCP 端口。我的问题是,为什么有人想要任何出站端口关闭?
我知道默认情况下您可能想要全部端口对传入连接关闭。从那里开始,如果您正在运行 HTTP 服务器,您可能需要打开端口 80。如果您想运行 FTP 服务器(在主动模式下),您可能需要打开端口 21。但如果它设置为被动 FTP 模式,则需要大量端口来接收来自 FTP 客户端的数据连接......等等以获得附加服务。但仅此而已。与服务器提供的特定服务无关的其余端口,特别是如果您主要是客户端计算机,则必须关闭。
但是关于传出连接?关闭出站连接的目标端口是否有任何安全增益?我问这个问题是因为起初我认为可以应用与传入连接非常相似的关闭所有端口的策略。但后来我意识到,例如,当在被动 FTP 模式下充当客户端时,随机高端口会尝试连接到 FTP 服务器。因此,通过阻止客户端中的这些高端口,您实际上会禁用该客户端中的被动 FTP,这很烦人。我很想允许所有内容传出,但我担心这可能会构成安全威胁。
是这样吗?这是一个坏主意,还是只为传出连接打开所有(或许多)端口以促进被动 FTP 等服务有明显的缺点?
答案1
有人想要关闭传出端口的原因可能有很多。以下是我在不同时间应用于不同服务器的一些内容
- 该计算机位于企业环境中,仅允许出站 Web 流量,并且通过代理进行流量。所有其他端口均已关闭,因为不需要它们。
- 该机器正在运行带有可执行代码(例如 PHP、Ruby、Python、Perl 等)的 Web 服务器。作为缓解可能的代码缺陷的一部分,仅允许预期的出站服务。
- 计算机上运行的服务或应用程序尝试连接到远程资源,但服务器管理员不希望它这样做。
- 良好的安全实践:应拒绝未明确允许的内容。
答案2
扩展@roaima的答案:
纵深防御。
想象一下,一台服务器被恶意软件破坏了。该恶意软件安装一个程序,开始尝试发送垃圾邮件。通过拒绝端口 25 上的传出连接,您可以阻止程序执行此操作的尝试,并限制损害。 (尽管垃圾邮件进程继续在服务器上运行,并且必须尽快处理。)
答案3
如果您的服务器受到恶意软件的破坏,它通常需要与其命令和控制进行通信以获取要部署的有效负载(勒索软件、横向移动、垃圾邮件、比特币挖掘等)。
如果它无法访问互联网,则尝试可能会失败。如果恶意软件足够通用,不关心它在哪里(即这不是有针对性的攻击),则概率会更高。
答案4
除了上述答案之外,根据防火墙规则或设置的配置,组合传出连接的拒绝规则可能会造成一种情况,您可以要求防火墙记录已拒绝的传出连接端口 - 这可能会导致防火墙托管设备充满防火墙日志并进入不良状态,但它会向 IT 人员标记,不仅服务器需要关注,而且它首先表现得很奇怪。
这些日志非常有用,因为潜在的恶意软件可能不会自行记录失败的连接尝试。