我在专用服务器上有一个 MySQL 数据库,我想将其复制到 Amazon RDS 以便始终拥有最新的备份。
为此,Amazon RDS 需要能够连接到我的主 MySQL 服务器。
我不想3306
向全世界开放 MySQL 端口,因为尽管 MySQL 有自己的权限,但我认为如果 MySQL 中发现安全问题,则会有额外的安全风险。
因此,我想向 iptables 添加一条规则以允许来自 的所有连接*.rds.amazonaws.com
。但据我了解,即使 iptables 允许指定主机名而不是 IP 地址,它也是在创建规则时解析的,而不是在检查数据包时解析的。
而且由于 RDS 的设计方式,RDS 实例主机名背后的 IP 地址可能会在其生命周期内发生变化,所以这不是一个好的解决方案。
我还有什么其他选择可以只向 RDS 开放我的 MySQL 服务器?
答案1
以下是 Unix 和 Linux Stack Exchange 问题的链接:UFW:仅允许来自具有动态 IP 地址的域的流量
TCP/IP 级别的阻止可能不适用于动态 IP 地址。虽然接受的答案提到了脚本,但它可能容易出错。AWS 确实发布了IP 范围列表,但这种情况可能会随着时间而改变。
不幸的是,你最好的选择可能是在 MySQL 中进行用户身份验证。你可以通过用户和主机名来限制权限:指定帐户名称。
答案2
我认为最正确的做法是使用VPC 安全组。您可以编写一个安全组,以仅允许来自具有该安全组的其他实例在端口 3306 上进行 TCP 流量:
如果您有一个实际上想要公开访问的实例,则添加另一个安全组,将“0.0.0.0/0”列为端口 3306 的源。这样,两个规则就会重叠。