我有保存在一个MySQL数据库中的机密数据,由运行在同一个物理盒子上的Web服务器提供服务。 如果我将两台服务器分开(甚至在两者之间插入一个防火墙),如果Web服务器受到攻击,究竟是如何更难访问mysql数据库? Web应用程序将连接string存储在纯文本configuration文件中。 所有黑客所要做的就是使用这些证书连接到数据库服务器,而数据库服务器没有办法知道这不是授权客户端。
还有另一种分离防御的攻击手段。 如果攻击者有幸能够通过shell访问Web服务器,他们就可以自己抓取数据库文件进行离线分析,或者使用其他方法获取数据。 通过将数据库放置在一个单独的服务器上,它们被限制在任何可以通过它们可以find的任何身份validation令牌查询的方式,这可能不足以获得好的东西。
它们对安全性有很多方面的要求,一个重要的概念是预防和检测。
防火墙显然是预防性的,但是你也应该有检测系统。 有了检测,那么任何降低黑客的系统都会成为他/她的时间压力。 想象一下,在房子里有两套锁着的门,如果这样做可能会推翻一个只会认为“我会更容易去的地方”
实际上,您也可以确保您的连接文件只能由相关帐户读取,如果攻击者在箱子上进行某种访问,攻击者不一定会拥有这些帐户。
另外请记住,它可能是您的外围防火墙,只有一层攻击者才能够直接查询您的数据库。 有两层,他们必须击败另一个防火墙。
还有一点就是把分层分离到不同的机器上。 您还需要通过以最小权限连接到数据库来限制Web应用程序可以执行的操作 。 如果连接成为数据库所有者,那么攻击者如果在您的Web服务器进程中find了运行任意代码的方法,就可以对该数据库执行任何操作。
所以将最小权限连接到远程数据库是很重要的。 如果你这样做,那么你会得到一些好处。 当然,如果你不遵循马克的build议,并实施某种forms的检测,你将不会获得如此多的好处。 如果攻击者在你的Web服务器上立足,他会从那里开始攻击你的数据库服务器,如果你不知道发生了这种事情,他最终可能会find一个办法。分离减缓攻击,所以你有时间注意并作出反应(例如,在允许利用的Web服务器/应用程序中首先解决问题)。