连接到MySQL安全 – MySQL的SSL vs Stunnel vs SSH隧道

我们有一个连接到MySQL服务器的PHP应用程序,我们希望保证Web和应用程序服务器和数据库之间的连接安全。

在高峰时段,Web服务器会与数据库build立数百个并发连接,并执行大量的小型读写操作。 我知道这不是最佳的,我正在努力减less与此并行的数据库连接数量。

我们目前没有连接到数据库的持久连接,虽然我们打算在未来,我想独立于此实现这一点。

硬件方面 – 与Web服务器一样,MySQL服务器非常笨重(16核心)。 他们是专用服务器。

然后我的问题围绕保护和encryption到数据库服务器的连接的最高性能的方式。

到目前为止,我的研究表明,主要的性能开销是build立SSL连接 – 一旦连接SSL,性能就会受到影响。 以下是关于确保连接的每种方法:

  1. MySQL SSL证书 – 就像正常的SSL一样工作。 可以使用客户端证书来防止未授权的连接 没有与我们现有的设置持久的连接。 仍然必须让MySQL在防火墙的开放端口上侦听。
  2. 安全通道。 设置一个端口到端口ssl隧道。 不必重新configurationMySQL。 可以closures正常的MySQL侦听端口,以防止恶意的MySQL连接尝试。 不支持持续连接。 未知的performance击中。
  3. SSH隧道。 在客户端和服务器之间创build一个SSH隧道。 不必重新configurationMySQL。 可以closures正常的MySQL侦听端口,以防止恶意的MySQL连接尝试。 支持持续连接,但有时会退出。 未知的performance击中。

这是我所能得到的。 我意识到基准的局限性 – 根据我的经验,模拟真实世界的stream量是非常困难的。 我希望有人根据他们自己的MySQL安全经验提供一些build议?

谢谢

我会用ssh-tunnel去用autossh代替ssh 。 关于性能,我会说,SSH协议是高度可定制的,你可以微调你的连接,如果需要的话。

但是在连接build立之后,我不希望有明显的开销。

通过查看本文的基准(MySQL性能博客),您应该真正避免MySQL的本地SSLfunction。