所有服务器都需要使用 HTTPS 协议还是只需要面向公众的服务器?

dan*_*y74 38 linux https

我有一个通过 HTTPS 运行的前端 Web 服务器 - 这是面向公众的 - 即端口是开放的。

我还有一个后端 API 服务器,我的网络服务器向它发出 API 请求 - 这是面向公众的并且需要身份验证 - 端口是开放的。

这 2 个服务器通过 HTTPS 运行。

在 API 服务器的背后,还有很多其他的服务器。API 服务器反向代理这些服务器。这些其他服务器的端口不对传入流量开放。他们只能通过 API 服务器进行交谈。

我的问题......“许多其他服务器”是否需要通过 HTTPS 运行,或者,鉴于它们无法从外部访问,它们是否可以安全地通过 HTTP 运行?

我认为这将是一个常见问题,但我找不到答案。谢谢。如果这是一个骗局,请指出我正确的答案。

Tim*_*ham 50

这是一个见仁见智的问题,也与监管问题有关(如果您面临任何问题)。

即使目前没有必要,我也大力提倡在任何应用程序级防火墙/负载平衡器/前端服务器和后端服务器之间启用 HTTPS。攻击面少了一个。随着更敏感的信息开始传递,我与需要转换的地方签订了合同 - 最好从那里开始。

我通常会建议使用内部 CA(如果可用)或自签名(如果没有内部 CA)后端服务器。我们会将到期日期设置得很好,并且可以设置得很远,以避免不必要的更改。

  • 这是一个好主意。你不想要 NSA [制作你的网络拓扑的愚蠢图](http://www.zdnet.com/article/google-the-nsa-and-the-need-for-locking-down-datacenter-traffic /)。 (12认同)
  • “`我们会将到期日期设置得很好,并且可以设置得很远,以避免不必要的更改。`”并且请在您首选的监控套件中添加一条规则,以在即将到期时向您发出警告。请! (8认同)
  • 加密您的所有通信还可以防止内部窃听——无论是实习生的计算机在浏览猫图片时感染了木马,还是插入未使用办公桌后面的网络端口的小型嗅探器,或共享的 wifi 密码有点太松了。 (3认同)
  • @GnP 我也这样做 - 如果它是一个 10 年期限的证书,我们的政策总是要求在该期限内更换后端服务器.. 使它有点多余,似乎没有必要在答案中提及。 (2认同)

Tom*_*Tom 19

TL;DR你应该加密流量,除非它在同一台主机上。

你不能相信你的网络。您自己网络中的恶意软件可以拦截/修改 http 请求。

这不是理论上的攻击,而是现实生活中的例子:


use*_*571 16

“许多其他服务器”是否需要通过 HTTPS 运行,或者鉴于它们无法从外部访问,它们是否可以安全地通过 HTTP 运行?

这实际上取决于您要实现的目标。了解使用 HTTPS 的目的是保护两点之间传输的数据。如果您担心网络内部的数据被嗅探,那么也许应该首先解决这个问题。如果您需要保护网络内部传输中的数据,您的意思是您要么担心在网络内部传输系统的数据的安全性,要么出于某种与合规性相关的原因对传输中的数据进行加密。

这实际上更像是一个意见问题,但答案是视情况而定。你想做什么?你要加密什么样的数据?您试图防御哪些威胁?您是否有法律要求(例如 PCI-DSS、HIPAA 等)要求对传输中的数据进行加密?如果数据是敏感的,并且您担心它在您的网络内传输时可能会被滥用,那么我建议与管理层一起解决问题。所以最后,你想保护什么,为什么要保护它?


Kat*_*ard 13

过去,人们认为内部网络就像房子一样安全。我曾经与一位主管发生争执,他对我面向内部的服务器运行其内置防火墙感到震惊。“如果你不能信任你的内部网络,你还能信任谁?” 我指出我们的内部网络上有学生笔记本电脑,学生笔记本电脑和我的服务器之间没有防火墙。刚接触学术界的他,似乎对这些信息感到自己的宇宙已经破败不堪。

即使您的网络上没有学生笔记本电脑,内部网络也不再那么安全。有关一些示例,请参阅 Tom 的回答。

也就是说,是的,这取决于传输的信息、任何法律合规性问题等。您可能会决定不关心是否有人嗅探,例如天气数据。这就是说,它是可能的,即使发送的数据不敏感,现在,有人可能会决定以后的功能添加到您的应用程序,它敏感的,所以我会建议更多的偏执狂(包括HTTPS)。


小智 8

今天,有了专门的 CPU 指令来加速加密,以及新的传输协议在未加密的链接(HTTP/2、gRPC 等)上根本无法运行或性能下降,也许更好的问题是:是否有任何为什么需要将网络链接降级为 HTTP?如果没有具体原因,那么答案是使用 HTTPS。


Dmi*_*yev 5

我能想到的禁用加密的唯一原因是性能。但是,在您的情况下,内部服务器是通过 HTTP 连接的,这意味着它们已经承担了运行 Web 服务器、支持 HTTP 协议和以 HTTP/JSON 格式编码数据的性能成本。禁用加密可能会释放 100KB 的 RAM,并且每 KB 传输的数据为您赚取几微秒,这对整体性能没有明显影响。另一方面,由于您现在在 Intranet 中运行 HTTP,因此您必须更加注意安全性。事实上,更严格的防火墙配置可能会减慢速度,而不是禁用加密会加快速度,从而导致最终用户感知到的性能更差。

这就像在拖拉机上安装扰流板一样:理论上你几乎一无所获,但实际上却带来了很多不便。