【问题标题】:Should a web server's firewall block outbound HTTP traffic over port 80?Web 服务器的防火墙是否应该阻止通过端口 80 的出站 HTTP 流量?
【发布时间】:2009-04-03 16:13:04
【问题描述】:

我了解将 Web 服务器置于 DMZ 中并阻止除 80 和 443 之外的所有端口的入站流量的必要性。我也明白为什么您可能还应该阻止大多数出站流量,以防服务器受到威胁。

但是是否有必要阻止通过端口 80 的出站 HTTP 流量?如果是这样,为什么?如今,许多 Web 应用程序依赖于从外部 Web 服务和 API 发送/检索数据,因此阻止端口 80 上的出站流量将阻止此功能。是否存在足够有效的安全问题来证明这一点?

【问题讨论】:

    标签: security http sysadmin firewall


    【解决方案1】:

    我能想到的唯一原因是,如果您的机器在某种程度上受到远程攻击,那么它将无法在端口 80 上对另一个网站进行 DDoS 攻击。不过,这不是我通常会做的事情。

    【讨论】:

      【解决方案2】:

      与其阻止它,不如扼杀它。使用 iptables -m 限制。

      【讨论】:

        【解决方案3】:

        我有几个调用外部 Web 服务的 Web 应用程序,所以我会说阻止输出 HTTP 流量是个坏主意。如果您担心安全问题,可以阻止它并只允许某些目的地。

        【讨论】:

        • 白名单是一个不错的建议,但它不适用于 OpenID,它要求 Web 服务器能够请求任何用作 OpenID 的 URL。
        • 不仅如此,它不适用于任何更改 IP 地址的网站。这就是我需要请求更改的防火墙的工作方式 - 在 IP 级别,而不是域级别(我认为这是为了提高效率?)这真的很痛苦,因为某些 IP 变化很大。
        • 另外,是不是总有一些服务可以被用来对另一台主机进行 DDOS 攻击?例如,在我的 outbound-HTTP-locked-down 主机上,ping 仍然可以联系任何主机。
        【解决方案4】:

        根据您的 SQL 版本,您可能会遇到 SQL Server 2005 的证书身份验证超时问题。

        【讨论】:

          【解决方案5】:

          首先 - 我同意 @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,因此在保留自动备份和安全更新的能力的同时加倍降级是有好处的。

          我希望这会有所帮助。如果不回复并提供更多代码示例以更具体和准确。 #保持安全!

          【讨论】:

            【解决方案6】:

            如果机器受到攻击并且端口 80 上的出站流量被允许,入侵者将更容易将收集到的数据发回给自己。允许出站流量意味着您可以启动从您的机器到外部世界的连接。更好的方法是只允许出站流量到您信任的某些网站/地址(即 Microsoft Windows 更新、Google reCAPTCHA),而不是世界上的任何目的地。

            【讨论】:

              【解决方案7】:

              阻止通过端口 80 的出站流量是什么意思。

              你有两种可能。生成动态规则,允许从客户端到您的网络服务器进行此会话的通信。搜索状态防火墙规则。

              或者您通常允许已建立的连接相互进出通信。

              如果您通常阻止通过端口 80 的所有出站流量,您的 Web 服务器将无法回复任何客户端。

              反之,如果您的网络服务器需要获取一些 API,例如一个 jquery 库,他不会使用端口 80 作为他的端口来与持有 API 的 Web 服务器通信。

              您的 Web 服务器通常会选择一个 > 1024 的端口并将其用于他的请求以从远程服务器获取 API。

              因此,阻止端口 80(作为您连接的端口)上的所有流量不会阻止您的服务器发送任何对 api 的请求等。因为他做客户端时不使用80端口。

              【讨论】:

              • 我说的是允许 Web 服务器向 Internet 上的其他服务器发起出站 HTTP 连接(端口 80)。例如,您可能有一个 PHP 页面,上面有一个天气小部件。该脚本需要从外部网络服务请求天气数据。
              • 啊好吧,我以为你的意思是阻止端口 80 作为启动端口。如果您阻止它,那么您将无法从其他页面加载 api 和此类内容。您可能可以将一些您信任的站点添加到您的规则中。但我会说阻塞 80 端口通常没有多大意义。
              • 从另一个角度来看,如果您的服务器被黑客入侵并且您阻止了该流量,它就无法从其他站点加载 abituary 代码。但是谁保证黑客/机器人/任何使用端口 80 来满足他的请求 :)
              猜你喜欢
              • 2012-03-06
              • 2021-03-10
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-02-08
              • 1970-01-01
              相关资源
              最近更新 更多