我在政府内部的一家小组织工作。我们在政府 DMZ 上维护自己的 Windows Server 2003 Web 服务器。我们必须在 7 月之前迁移到 Windows Server 2008 或 2012。此外,我正在用 .Net 重建网站,现在将使用 SQL Server 数据库而不是 MS Access。
我读到过,将 IIS 和 SQL Server 放在同一个机器上并不是一个好主意,尤其是暴露在外的机器上。由于预算和政策原因,我们只考虑一台服务器。我们现有的服务器无法升级;它不符合 Windows Server 2008+ 的最低要求。
我目前正在为新服务器配置,并考虑在虚拟机上运行 SQL Server,而 IIS 在主机上运行。这种设置有哪些安全隐患?黑客有可能窃取我的虚拟机并获得完全访问权限吗?所有数据都不会被保密,因为所有数据都可以通过我们的公共网站访问。
编辑-添加服务器规格
戴尔 PowerEdge T430 塔式机 (FT430)
- 2 个英特尔至强 E5-2620 v3 2.5GHz,15M 缓存
- 8 x 8GB RDIMM,2133MT/s,双列 x8 数据宽度
- PERC H730 RAID 控制器(将使用 RAID 5)
- 4 个 600GB 15K SAS 2.5 英寸热插拔 HDD
- 板载 Broadcom 5720 双端口 1Gb LOM
- 双、热插拔、冗余电源 (1+1)、495W
答案1
我们确实不知道您实际上正在查看哪个服务器,我们只能猜测。
补充 GregL 和 Jim B 所说的内容。
我猜您正在使用通过 OLEDB 静态连接的 ASP 经典代码页从 Server 2003 Standard、IIS 6.5、Access 2007 进行迁移。您可能计划使用 Upsizing Wizard(大多数情况下都有效)导入 Access,或者您可以尝试 32 位应用程序导入/导出。
对于您的新设置,我认为 MS Server 2012 Standard 许可用于 1 个物理安装和 2 个虚拟安装。这将为您提供在不同的 VM 中独立运行 SQL 和 IIS 的选项。但是,这可能不是您的最佳方法。
不要:从 hyper-V HOST OS 运行公共应用程序。我还建议不要在 HOST 上启用 RDP。将主机视为服务器的电源线。如果它坏了,您需要到现场修理。
您可以:在虚拟机中安装 IIS> 内存取决于你的代码,如果你运行的是 ASP classic 或 .Net
您可以:在虚拟机中安装 MS SQL> 虚拟机的大小取决于MS SQL 版本. Express 版本提供高达 10GB 的总开销(比较版本)。
根据 7 年后的情况规划您的服务器。示例:第一天虚拟服务器驱动器大小为 128GB,第五年为 1.5TB,计划为 3TB。
IIS 7.5 及以上版本在虚拟环境中运行得很好。在虚拟环境中运行为您的操作系统设计的 MS SQL Express 也很好。其背后的想法是能够从单个物理服务器运行比以前更多的程序。如果它在独立安装中运行,则应该在虚拟安装中找到。不包括数据中心版本,这些版本受益于使用所有物理连接的设备和内存。在同一台虚拟机上同时使用 IIS 和 SQL Express 可以减少我的管理时间,因为无需监视第二台服务器。除非您计划运行数据中心版本,否则您希望它在自己的物理机器上。
以下是我的 Server 2008 R2 Standard 的一些数据。CPU 3.3Ghz,8 核,1 个物理 1 个虚拟 Windows 服务器,2 个虚拟 Ubuntu 服务器,2 个 Win8 虚拟桌面,2 个 Win7 虚拟桌面。
IIS = 3.4Gb(27 个 IIS www 站点,3 个 ASP Classic,24 个 .Net)
2008 SQL Express = 1.14Gb(28 分贝活跃)
操作系统 2008 R2 VM = < 2Gb
总内存 10Gb 从未全部使用过。
您的 64Gb 内存机器会很好,但请采用您的实际数字并调整您的系统以匹配加上 20% 或操作系统的建议。
至于黑客,他们确实存在,但脚本也确实存在。规划系统恢复时,要像计划每晚被黑客入侵一样。练习恢复过程,直到完美无缺,这样在需要时它才会真正发挥作用。
答案2
不,黑客无法“窃取您的虚拟机并获得完全访问权限”。他们需要侵入虚拟机管理界面,如果他们成功入侵,您的政府部门将面临更大的麻烦。
从技术上讲,在同一台服务器上同时运行 IIS 和 SQL 是没有问题的,但是否好主意实际上取决于您的负载情况是否允许。
如果是小型网站,那就没问题了。我见过很多这样的一次性项目运行得很好。只需确保您有足够的资源(CPU、RAM 和磁盘 I/O)让 IIS 和 SQL 运行良好,将 SQL 限制在 CPU/RAM 的子集上也不错,这样它就不会占用所有资源。因为如果您允许,它就会占用所有资源。
如果网站规模非常大/非常繁忙,那么您需要重新考虑。鉴于您目前正在使用 MS Access,我无法想象会出现这种情况。
就安全问题而言,这实际上取决于您想如何管理各个部分。如果您打算从桌面连接到 SQL 实例,那么您必须暴露端口 1433,这意味着其他人也可以通过这种方式进入。除非您的防火墙设置为仅允许来自内部区域的此类连接。如果您乐意通过 RDP 进入服务器并在本地完成所有操作,则只需暴露 IIS 端口(80 和/或 443),其安全性不会低于您现在拥有的端口。
重新阅读问题和评论后,我发现您想要一台物理服务器。它将运行 IIS 以及用于 SQL 的 VM。
这毫无意义。要么将服务器视为直接的虚拟机管理程序,并在单独的虚拟机中运行两个层,要么在硬件上本地运行它们。混在一起只会导致失败。
答案3
没关系。区别在于,如果您入侵了 Web 服务器,那么您就免费入侵了 SQL 服务器。由于它位于 DMZ 上,请确保管理端口已通过防火墙关闭,并且您在 SQL 服务器上配置了内存限制。