我们的网络管理员坚持认为,托管在 DMZ 中的 Web 服务器访问防火墙后面的 DB 服务器是不安全的。为了解决这个问题,我们通过 Web 服务或 WCF 访问数据。我觉得这是一个不必要的性能负担,如果 Web 服务器可以直接访问 DB,就可以消除这种负担。
我给出的原因是,如果黑客能够登录到 Web 服务器,他们就可以访问数据库。是否可以只为 IIS 打开端口,还是不能那么具体?如果我们可以将其锁定为 IIS,那么黑客是否很容易利用这一点?
我读过互联网上的各种帖子,但似乎找不到明确的答案。
铝
答案1
我为大型企业设置了平台,通常的做法是确保您的数据库与 Web 服务器位于不同的 VLAN 上,并在两者之间设置防火墙,仅将流量路由到数据库服务器端口,并在 Web 服务器前面设置防火墙。通常,您的前端防火墙会将端口 80 (HTTP) 和端口 443 (HTTPS) 转发到您的 Web 服务器。位于 Web 服务器和数据库服务器之间的防火墙会将来自 Web 服务器的流量转发到您的数据库使用的端口(如果使用 Microsoft SQL Server,通常为端口 1433)。
为了提高安全性:
- 确保使用最低权限帐户访问数据库服务器
- 如果您使用的是 ASP.NET,则可以在 web.config 中加密数据库连接字符串
- 聘请第三方公司进行渗透测试,以发现任何漏洞
- 确保定期安装更新和服务包。
如果您的数据库是 MI6 或 CIA 数据库,那么您的网络管理员可能是对的,但在我看来,他们似乎反应过度。
如果数据库确实包含绝对不能暴露给公共网络的数据,但数据库所需的数据并不是那么敏感,您是否可以考虑将您的网站所需的表复制到托管环境中的数据库中?
我会问他们一个问题:
- 如果黑客获得了对网络服务器的访问权,他们可以调用您的网络服务吗?
- 如果在 IIS 中发现漏洞,使他们能够访问您的 Web 服务器,那么他们肯定会利用托管您的 Web 服务的 Web 服务器上的相同漏洞吗?
- 他们是否可以安装监视用户输入的软件来嗅探内存中的密码?
答案2
您的 Web 服务器也可以位于防火墙后面,只需将端口 80 转发到正确的服务器即可。您的 Web 服务器不需要的所有其他端口都应在最外部的防火墙上关闭。然后,您的 Web 服务器和数据服务器之间应该有一个防火墙。在该防火墙中,您只允许打开数据库所用的端口。
以下是一张图表
互联网 --> 防火墙 --> Web 服务器 --> 防火墙 --> 数据库
仅供参考,我是一名开发人员,尽管由于我们是一家小公司,所以我经常与公司的 IT 员工一起工作。