将数据库与 Web 服务器分离(2 层 Web 架构)可以获得什么安全性?

将数据库与 Web 服务器分离(2 层 Web 架构)可以获得什么安全性?

我将机密数据存储在 mysql 数据库中,该数据库由在同一物理机上运行的 Web 服务器提供服务。如果我将两台服务器分开(甚至在它们之间设置防火墙),当 Web 服务器受到攻击时,我究竟是如何让访问 mysql 数据库变得更加困难的?Web 应用程序将连接字符串存储在纯文本配置文件中。黑客所要做的就是使用这些凭据连接到数据库服务器,而数据库服务器无法知道这不是授权客户端。

答案1

分离可以防御另一种攻击方法。如果攻击者足够幸运,能够获得 Web 服务器的 shell 访问权限,他们就可以自己抓取数据库文件进行离线分析,或者使用任何其他方法抓取数据。通过将数据库放在单独的服务器上,他们只能通过他们能找到的任何身份验证令牌来查询任何内容,这可能不足以获取有用的信息。

答案2

安全有许多方面,其中一个重要的概念是预防和检测。

防火墙显然是预防性的,但你也应该安装检测系统。有了检测系统,任何减慢黑客速度的系统都会对他/她造成时间压力。想象一下,一所房子里有两扇锁着的门,这可能会吓跑一个只会想“我要去个更轻松的地方”的窃贼。

实际上,您还可以确保您的连接文件只能由相关帐户读取,而即使攻击者获得了该盒子的某种访问权限,他也不一定能读取这些文件。

还请记住,您的外围防火墙可能已受到攻击,此时,如果只有一层防火墙,攻击者就能够直接查询您的数据库。如果是两层防火墙,他们就必须攻破另一层防火墙。

答案3

除了将各层分配到不同的机器之外,还有很多事情要做。你还需要限制 Web 应用可以执行的操作通过使用最小权限连接到数据库来访问数据库。如果您以数据库所有者的身份进行连接,那么攻击者只要找到在 Web 服务器进程中运行任意代码的方法,就能对数据库执行任何操作。

因此,以最小权限连接到远程数据库非常重要。如果你这样做,那么你会得到一些好处。当然,如果你不听从马克的建议并实施某种形式的检测,你就不会得到那么多好处。如果攻击者在你的网络服务器上站稳脚跟,他会从那里开始攻击你的数据库服务器,如果你不知道这种情况正在发生,他最终可能会找到进入的方法。分离会减慢攻击速度,这样你就有时间注意并做出反应(例如,修补最初允许漏洞利用的网络服务器/应用程序中的问题)。

相关内容