与另一台服务器的数据库连接

与另一台服务器的数据库连接

我有 2 个服务器 - 一个用于 PHP,一个用于 MySQL

两台服务器都经过了强化 - 现在我的问题是,从 PHP 建立到数据库服务器的连接的正确方法是什么?可能通过 SSH?或者只打开 MySQL 端口就足够了?

但是,如果仅通过开放端口,我如何确保没有暴力攻击试图通过该开放端口获取 root 密码?我能以某种方式限制对 Web 服务器的 IP 访问吗?(如果可以,怎么做?)

基本上,我只是想问一下设置/配置这种连接的常见/最佳方法是什么。


更深入的分析

我添加了 iptables 条目,添加了 ufw 条目(基本上生成了相同的 iptable 条目),等等,等等 - 遗憾的是,似乎什么都没起作用。我尝试从 Web 服务器连接到 mysql,但总是被阻止(我mysql-client在 Web 服务器上安装了,使用mysql命令进行测试 - 结果:/xxx用于混淆)

ERROR 2003 (HY000): Can't connect to MySQL server on 'xxxx' (111)

我添加了LOGiptables 条目,并检查了ufw日志,syslog但显然包没有被阻止(没有 [UFW BLOCK])。经过一番搜索,我猜可能是这样apparmor,但安装后auditd没有可见的阻止mysql

netstat显示 mysql 正在正确的端口上监听。

我该如何进一步分析这个问题?阻塞的原因可能是什么?


找到解决方案

讽刺的是,我在编辑一分钟后找到了答案:

缺少的是 mysql 配置文件的更改,即bind-address必须更改为外部 IP。

港口防护工程

答案1

您说您的服务器已经强化了,所以您应该已经采取了某种方式来降低风险,但请检查一些事项。

  • 确保操作系统防火墙仅允许从 php 服务器连接到 MySQL。对于 Linux 服务器,您可以使用 iptables 来执行此操作

    iptables -A INPUT -p tcp -s php.server.address --dport 3306 -j ACCEPT iptables -A INPUT -p tcp --dport 3306 -j DROP

  • 确保 MySQL 根用户只能从数据库服务器本身连接。

  • 确保您的数据库用户只能从您的 php 服务器连接,并且他们只有足够的权限来执行必要的操作。

    GRANT SELECT, INSERT ON mydb.* TO 'someuser'@'php.server';


正如 Lucas 建议的那样,你可以将 SSL 添加到连接中 - MySQL 手册中对此进行了介绍这里

相关内容