如何安全地连接应用程序和数据库服务器?

its*_*_me 6 mysql security php

(更新)首先,我在不同的服务器上有我的应用程序和数据库。连接它们很容易,只是我不确定如何保护我的数据库服务器。

这是我已经完成的:

  • mysql_secure_installation安装MySQL之后。所以,所有这些都得到了照顾:

    • 强 64 字符 root 密码
    • 没有匿名用户
    • 仅在本地主机上进行 root 登录
    • 没有测试数据库
  • 用于服务器间通信的非公网(在我的 my.cnf 中,有这样的内容:bind-address = 10.128.2.18,其中 10.128.2.18 是 MySQL 数据库服务器的专用网络 IP 地址)。

  • 数据库的单独用户,不可猜测的用户名和 64 个字符的强密码;用户帐号的IP地址设置为应用服务器的私有IP地址。我用这样的命令创建了用户:

    GRANT ALL ON `app_db`.* TO 'db_user'@'10.128.2.9' IDENTIFIED BY 'password';
    
    Run Code Online (Sandbox Code Playgroud)

    该应用程序是 wordpress,所以我需要GRANT ALL ON避免任何意外问题。

考虑的选项(但未采用):

  • 有人告诉我,SSH 隧道、SSL、OpenVPN、Tinc 和 IPsec等技术通常不使用,因为它们具有性能成本(由于加密、延迟等导致的资源使用)。

那么,我还需要什么,还是我足够好?其他人是怎么做的?请尽可能详细(链接到教程或您建议的内容会很有帮助)。

Gre*_*ker 4

我不知道为什么有人告诉您 VPN 技术并未得到普遍使用。他们有性能成本是正确的,但话又说回来,一切都是如此!对于通常在应用程序服务器与其数据库服务器之间移动的数据量,TLS 的 CPU 开销应该可以忽略不计,尤其是在数据库服务器上。如果情况并非如此,请考虑购买 SSL 卸载硬件。

我的偏好是应用程序服务器中有两个网卡。它和数据库服务器之间的连接与客户端流量通过不同的网络。

如果不可能使用单独的网络,那么我的首选是 TLS 与在数据库服务器上配置防火墙相结合,以仅允许来自少量计算机的传入连接 - 应用程序服务器(显然)、管理工作站、操作管理服务器等。