面向公众的数据库实例可能面临哪些威胁?

信息安全 防火墙 数据库 硬化 mysql 威胁
2021-08-13 15:14:32

快速介绍:小公司,资源非常有限。我几乎什么都做,包括倒垃圾。

多年来,我们一直在内部运行一个 MySQL 实例,它运行良好,但我认为这在很大程度上只是运气好。我们有几台客户端计算机部署到供应商位置,有时还部署在贸易展览会上。这些客户端机器需要访问数据库。目前,我们正在通过 VPN 促进对我们网络的安全访问。我们的防火墙没有为 MySQL 打开一个洞。

VPN 解决方案很痛苦,并且有其自身的安全隐患。我也越来越担心保持我自己的 MySQL 实例在线和可用。我遇到了 Amazon AWS 的 RDS 服务,它听起来很完美!但是,我立即遇到了安全组问题,并意识到我需要授予对所有 IP 的完全、无限制的访问权限,因为我无法控制客户端计算机的 IP 范围。相信我,我不知道他们的 IPS 会是什么。

我读过将数据库公开给公众是一种非常糟糕的做法,当您绝对必须这样做时,最好将 Web 服务 API 部署到数据库。这样做会很好,但我没有时间(此时)为所有应用程序编写 Web 服务端点。

所以最后......我的问题是:将我们的数据库实例暴露给所有 IP 会面临哪些威胁?我们不是银行,也不是上市公司——甚至没有人真正了解我们,因此似乎不太可能进行有针对性的攻击。但是,我完全不知道安全威胁和“那里有什么”-是否存在扫描所有 IP 范围以寻找服务器进行响应的威胁,然后它们何时“只是为了好玩”进行攻击?

需要明确的是,我知道这违反了最佳实践,我不需要讲课,我正在寻找关于攻击可能性的现实建议——如果可以确定的话。

顺便说一句,我发现了这个问题,它是相关的,但不完全是我需要的。我只是想包含它,这样其他人就不会通过链接来响应。 公共 Amazon RDS 数据库?

4个回答

听起来您已经对威胁有了不错的了解,知道从安全的角度来看您现在正在做的事情是可取的,并且正面临成本/收益分析。考虑到这一点,这里有一些替代的想法:

  • 使用 SSL 前端配置 MySQL。MySQL 中为此提供了一些功能,但 stunnel 可能会让您不那么疯狂。虽然客户端证书有些理想,但我想从您的 VPN 斗争中可能不会出现这种情况。

  • 在您的机器上运行 MySQL 并将其配置为监听世界并使用系统的 iptables(防火墙)功能拒绝任何连接。创建一个非常简单的 Web 服务,在成功验证后将源 IP 添加到允许的主机列表中。每隔一段时间,您可以清除 iptables 统计信息并删除几天不产生流量的主机。将其视为带有审计跟踪的端口敲门。

当我说有扫描仪在网上日以继夜地运行时,请相信我。当您向公众开放数据库时,您会在服务器日志中看到各种扫描尝试。

盲目攻击的一些示例包括专门针对 MS SQL 的 SQL Slammer 蠕虫、LizaMoon 大规模 SQL 注入和针对 MySQL 中的弱密码的 SpoolCLL。

因此,如果您必须公开 MySQL,请至少使用不同的端口。

对于贸易展览,您是否必须连接到您的实时数据库?您能否在本地计算机上使用(最近的)副本。

贸易展上的额外风险是,您被竞争公司包围,这些公司对您的数据或使您的应用程序不可用(崩溃服务器)具有商业利益。在提供的网络上收听的可能性也更大。

您是否可以使用亚马逊数据库,但只能通过精心构建的前端应用程序通过 ec2 盒访问它,或者甚至可能只是直接到 ec2 实例的 ipsec 隧道?