我理解需要将 Web 服务器放在 DMZ 中并阻止除 80 和 443 之外的所有端口的入站流量。我还可以理解为什么您可能还应该阻止大多数出站流量,以防服务器受到损害。
但是是否有必要阻止通过端口 80 的出站 HTTP 流量?如果是这样,为什么?如今,许多 Web 应用程序依赖于从外部 Web 服务和 API 发送/检索数据,因此阻止端口 80 上的出站流量将阻止此功能。是否存在足够有效的安全问题来证明这一点?
我能想到的唯一原因是,如果您的机器以某种方式远程受损,那么它将无法在端口 80 上对另一个网站进行 DDoS 攻击。但这不是我通常会做的事情。
与其阻止它,不如扼杀它。使用 iptables -m 限制。
我有几个调用外部 Web 服务的 Web 应用程序,所以我会说阻止输出 HTTP 流量是个坏主意。如果您担心安全性,您可以阻止它并只允许某些目的地。
根据您的 SQL 版本,您可能会遇到 SQL Server 2005 的证书身份验证超时问题。
首先 - 我同意@vartec 对节流的看法,“而不是阻止它,节流它。使用 iptables -m limit”作为解决方案的至少一部分。
但是,我可以提供另一个理由来始终不阻止端口 80 出站。如果您打开了自动安全更新,则服务器无法通过端口 80 访问 PPA 以启动安全更新。因此,如果您设置了自动安全更新,它们将不会运行。在 ubuntu 上,自动安全更新在 14.04 LTS 中打开:
sudo apt-get install unattended-upgrades update-notifier-common && \
sudo dpkg-reconfigure -plow unattended-upgrades
(then select "YES")
更优雅的解决方案是自动打开端口的 ansible 脚本,如果您在 AWS,除了 iptables 之外,还可能通过 CLI 修改 AWS 安全组规则。我更喜欢通过由隐身盒启动的 AWS CLI 临时修改我的出站规则。这会强制将更新记录在我的 AWS S3 日志存储桶中,但不会出现在服务器本身的日志中。此外,启动更新的服务器甚至不必位于私有子网 ACL 中。
也许两者都做?您有时必须考虑到攻击会中继您子网中的内部 IP,因此在保留自动备份和安全更新的能力的同时,加倍降级是有好处的。
我希望这有帮助。如果不回复并提供更多代码示例以更具体和准确。#注意安全 !
如果机器受到攻击并且允许端口 80 上的出站流量,那么入侵者将更容易将收集到的数据发回给自己。允许出站流量意味着您可以启动从您的机器到外部世界的连接。更好的方法是只允许出站流量到您信任的某些网站/地址(即 Microsoft Windows Update、Google reCAPTCHA),而不是世界上的任何目的地。
阻止通过端口 80 的出站流量是什么意思。
你有两种可能。生成动态规则,允许从客户端到您的网络服务器进行此会话的通信。搜索状态防火墙规则。
或者,您通常允许已建立的连接相互进出通信。
如果您通常阻止通过端口 80 的所有出站流量,您的 Web 服务器将无法回复任何客户端。
反过来,如果您的 Web 服务器需要获取一些 API,例如 jquery 库,他不会使用端口 80 作为他的端口来与持有 API 的 Web 服务器通信。
您的 Web 服务器通常会选择一个 > 1024 的端口并将其用于他的请求以从远程服务器获取 API。
因此,阻止端口 80 上的所有流量(作为您连接的端口)不会阻止您的服务器发送任何对 api 和此类事物的请求。因为他作为客户端不使用80端口。