针对需要访问 SQL 数据库的面向 Internet 的 Web 应用进行设计

针对需要访问 SQL 数据库的面向 Internet 的 Web 应用进行设计

我需要创建一个 Web 应用程序来访问我们公司 LAN 上的 SQL 数据库。这是一种好方法吗?安全吗?

  1. 创建一个 DMZ,目前还没有。

  2. 将 Web 服务器(运行 IIS)放置在 DMZ 中,将其放入自己的工作组中,而不是使其成为企业域的成员。据我所知,我们只需要一个盒子,因此无需为 DMZ 创建单独的域。

  3. 在 DMZ 前面(路由器和 Web 服务器之间)放置防火墙,只允许 HTTP 和/或 HTTPS 访问 Web 服务器。

  4. 在 DMZ 后面(Web 服务器和 LAN 之间)放置另一个防火墙,只允许从 Web 服务器到 LAN 上的 SQL 服务器的 SQL 连接,并阻止其他所有连接。

对于上述配置,我们需要购买 2 个防火墙、一个路由器以及一个运行 IIS 的服务器。该应用程序基本上只是一个 .Net 表单,它可以访问数据库并在完成后创建可保存的 .pdf。我认为我们应该研究应用程序层防火墙,以帮助防止 SQL 注入/跨站点脚本等)?

该网络设计是否有效?还有其他更具成本效益和/或更安全的布局方案吗?

答案1

您的架构基本上是合理的,但请注意,您可能只需要一个防火墙设备,DMZ 规则用于隔离应用服务器。
请考虑以下内容,它仅显示理论应用服务器的进出流量。

在此处输入图片描述


其他一些零散的想法:

  • 看看我对你的问题的评论。
    问问自己:Do I *need* to access my main SQL server at all?——如果你能将提取的数据推送到 DMZ 应用程序,而不是让其穿过防火墙并访问你的公司网络,那么从安全角度来看,你会处于更有利的位置。

  • 如果你必须直接访问您的 SQL 服务器,确保使用具有尽可能最小权限的帐户。

    • 不要让它从任何不需要读取的表中读取。
    • 不要让它写入任何不需要写入的表
      (最好不要写入任何东西!批量更改并让另一个程序加载它们,该程序首先对它们进行健全性检查。)

相关内容