安全很重要,这不只是对 Microsoft SQL Server 和 Microsoft 而言的,而是对每个产品和每家企业都很重要。遵循简单的最佳做法,大多数安全漏洞都可以避免。
安装 SQL Server 前的工作
若要使 SQL Server 安装尽可能安全,请在设置服务器环境时遵循以下最佳做法:
增强物理安全性
物理和逻辑隔离是构成 SQL Server 安全的基础。若要增强 SQL Server 安装的物理安全性,请执行以下任务:
- 将服务器置于专门的房间,未经授权的人员不得入内。
- 将数据库的宿主计算机置于受物理保护的场所,最好是上锁的机房,房中配备水灾检测和火灾检测监视系统或灭火系统。
- 将数据库安装在公司 Intranet 的安全区域中,任何时候都不要直接连接到 Internet。
- 定期备份所有数据,并将副本存储在远离工作现场的安全位置。
使用防火墙
防火墙是保护 SQL Server 安装所不可或缺的。若要使防火墙发挥最佳效用,请遵循以下指南:
- 在服务器和 Internet 之间放置防火墙。
- 将网络分成若干安全区域,区域之间用防火墙分隔。先阻塞所有通信流量,然后有选择地只接受所需的通信。
- 在边界防火墙上,始终阻塞发往 TCP 端口 1433(由默认实例监视)的数据包和发往 UDP 端口 1434(由计算机上的实例之一监视)的数据包。如果命名实例正在侦听其他端口,则也阻塞那些端口。
- 在多层环境中,使用多个防火墙创建屏蔽子网。
- 如果在 Windows 域内部安装服务器,请将内部防火墙配置为允许 Windows 身份验证。
- 打开 Kerberos 或 NTLM 身份验证所使用的端口。
- 如果应用程序使用分布式事务处理,可能必须要将防火墙配置为允许 Microsoft 分布式事务处理协调器 (MS DTC) 在不同的 MS DTC 实例之间以及在 MS DTC 和资源管理器(如 SQL Server)之间进行通信。
隔离服务
隔离服务可以降低风险,防止已受到危害的服务被用于危及其他服务。若要隔离服务,请遵循以下指南:
- 任何时候都不要在域控制器上安装 SQL Server。
- 在不同的 Windows 帐户下运行各自的 SQL Server 服务。
- 在多层环境中,在不同的计算机上运行 Web 逻辑和业务逻辑。
创建具有最低特权的服务帐户
SQL Server 安装程序自动向一个或多个服务帐户授予对与 SQL Server 相关的文件的完全控制权限,以及对本地管理员组的完全控制权限。
但是,通过创建具有运行 SQL Server 服务所需的最低特权的 Microsoft Windows 帐户,可以将未经授权的访问降至最低。
配置安全的文件系统
使用恰当的文件系统可以增加安全性。对于所安装的 SQL Server 软件,应执行以下任务:
- 使用 NTFS 文件系统 (NTFS)。NTFS 是所安装 SQL Server 软件的首选文件系统,因为该系统比 FAT 文件系统更稳定,可恢复性更强,并可以启用安全选项(如文件和目录访问控制列表 (ACL) 和加密文件系统 (EFS) 文件加密)。有些 SQL Server Database Engine 功能依赖于 NTFS,其中包括数据库快照和联机 DBCC。请注意,基于 FAT 的系统有 4 GB 的文件大小限制。在安装过程中,如果 SQL Server 检测到 NTFS,则它将对注册表项和文件设置相应的 ACL。不应对这些权限进行任何更改。
注意: 如果使用 EFS,则数据库文件将以运行 SQL Server 的帐户的身份加密。只有此帐户才能解密这些文件。如果必须更改运行 SQL Server 的帐户,则应首先在旧帐户下解密这些文件,然后再在新帐户下重新加密这些文件。 - 对关键的数据文件使用独立磁盘冗余阵列 (RAID)。
禁用 NetBIOS 和服务器消息块
边界网络中的服务器应禁用所有不必要的协议,包括 NetBIOS 和服务器消息块 (SMB)。
NetBIOS 使用以下端口:
- UDP/137(NetBIOS 名称服务)
- UDP/138(NetBIOS 数据报服务)
- TCP/139(NetBIOS 会话服务)
SMB 使用以下端口:
- TCP/139
- TCP/445
Web 服务器和域名系统 (DNS) 服务器不需要 NetBIOS 或 SMB。在这些服务器上,禁用这两个协议可以缓解用户枚举的威胁。
安装 SQL Server 后的工作
安装完成后,若要增强所安装的 SQL Server 软件的安全性,请遵循以下有关帐户和身份验证模式的最佳做法:
服务帐户
- 以可能的最低特权运行 SQL Server 服务。
- 将 SQL Server 服务与 Windows 帐户相关联。
身份验证模式
- 连接 SQL Server 时要求 Windows 身份验证。
强密码
- 始终为 sa 帐户指派强密码,即使使用了 Windows 身份验证。
- 始终对所有 SQL Server 帐户使用强密码。