自 2018 年 Google 指示的网络安全计划以来,我是否应该永远关闭端口 80?

信息安全 tls linux 阿帕奇 港口 ubuntu
2021-08-22 14:29:31

我经常建立 Ubuntu- LAMP环境,在其中托管一些我自己拥有的Drupal Web 应用程序(我不提供任何托管服务,过去从未这样做过)。

每当我建立这样的环境时,我采取的最基本的安全步骤是:

ufw --force enable
ufw allow 22,25,80,443 # All allowed via both TCP/UPD as no restrictions were given;
apt update -y
apt upgrade unattended-upgrades sshguard

在 2017-2018 W3C / Google(?)关于浏览器支持 HTTP 的改革之后,要求或至少鼓励我们所有人使用通过SSL 证书确认的TLS 加密来进行安全的 HTTP 数据传输(HTTPS),我想知道不安全的 HTTP(通常通过端口 80)仍然与我们任何人相关。

笔记:

  1. 我的每个 Web 应用程序都有自己使用Certbot创建的 OpenSSL 证书。
  2. 除了网站之外,我使用的唯一 Web 实用程序是 PHPMyAdmin/PHPMiniAdmin。

我的问题

我可以从端口 80 中删除,ufw allow 22,25,80,443从而使我的系统更不那么“脆弱”吗?

每个答案更新

答案建议从端口 80 重定向到端口 443,而不是仅阻止端口 80。我认为 Certbot 会自动创建这些重定向,因此如果我按照答案中的建议保持端口 80 开放,我会被覆盖。

4个回答

您不应该关闭端口 80。相反,您应该将服务器配置为将 HTTP 端口 80 重定向到 HTTPS 端口 443 以使用 TLS。您可以选择使用HSTS(HTTP 严格传输安全)来告诉浏览器记住在将来连接到您的站点时只使用 TLS。

打开端口 80 并没有什么不安全的地方。仅当 Web 服务器通过未加密的连接提供请求时才会出现安全问题,尤其是当这些请求包含敏感数据时。开放端口 80 并仅发送 HTTP 重定向是非常安全的。

谷歌是互联网的主要搜索引擎(使 Bing 和雅虎都相形见绌)和大多数互联网用户使用的浏览器,一直在通过降低不使用 HTTPS 的网站的页面排名来推动仅使用 HTTPS 的世界,并添加网站不安全时的浏览器警告但是,HTTPS 站点与非 HTTPS 站点的比例仍然太低,无法向所有人推荐 HTTPS 优先策略,因为用户会经常收到可怕的“证书错误”消息或“连接被拒绝”错误。

因此,在 Google 为浏览器连接推荐 HTTPS 优先策略之前,Firefox、Apple 或 Microsoft 也不太可能会推荐此类策略,而且在大多数(可能是 70% 或更多)顶级站点之前不太可能启用了 HTTPS,这将比目前拥有 HTTPS 的约 50% 的顶级网站大幅增加。

大多数有意或无意访问您的 HTTP 站点的用户,如果遇到“连接被拒绝”错误,很可能会转到另一个站点。我没有在这里获得具体数字的好方法,但很可能 70-90% 的互联网用户可能不会在没有自动重定向的情况下发现该站点没有 HTTP 端口;其余的可能要么在技术上足够胜任以意识到他们需要 HTTPS,要么在任何地方都使用 HTTPS,并且无论如何都不会注意到。

绝对使用 HSTS,绝对 301 重定向到 HTTPS 资源(301 表示永久移动到浏览器,因此他们会“记住”此偏好),绝对建议您的用户确保他们看到挂锁并验证证书等。不要此时阻塞端口 80,因为 Internet 还没有为此做好准备。

据我所知,没有禁用 HTTP阻止端口 80 的主要站点。如果这样做,您将打破用户的期望(该站点会将您转发到安全站点),因为大多数用户都赢了'不知道在这里做什么,因为他们不会收到友好的错误消息,只会假设您的网站已损坏并继续前进。

简而言之:通常,保持打开状态并使用它将所有内容重定向到 HTTPS

现在来看看复杂的东西:拿走端口 80 可以阻止那些被动寻找散乱http://corp.com/some/forgotten/thing请求的 cookie 窃贼。TCP 连接不成功,浏览器不发送 GET 和 cookie,坏人无法读取。

有时这是一个合理的防范措施,尤其是考虑到企业环境:遗留应用程序、仅部分实现的HSTS、可能缺乏安全标志或路径或主机限制的 cookie、托管或代理的第三方......

现在,应该阻止它吗?可能不是。

像其他人提到的那样,这会使设置 Let's Encrypt和防止重定向(包括只your.com在地址栏中键入的用户)变得复杂。如果您设置了域范围的 HSTS,则删除重定向甚至可能会被视为适得其反(您可能希望冒一个普通的 HTTP 连接的风险,这样它将保护所有未来的连接)。

另外,请注意,主动攻击者不会被阻止(他们可以人为地完成连接,MITM 代理工具甚至可以默认执行此操作),存在一些极端情况(普通 HTTP 代理,防火墙外的委派域),您可能只是考虑被动攻击对于您的模型来说太复杂了。

最后,您是否应该端口 80 添加到新服务器?好吧,除非您已经有打开它的理由(见上文),否则不会。

除了其他林和 phyrfox 的答案外,ACME http-01 验证使用端口 80 来访问您的服务器。如果关闭端口,您将无法续订或创建证书。