我们将默认的登录审核设置更改为 Failure。此操作将登录 SQL Server 数据库的所有失败尝试都写到错误日志和事件日志,该信息对识别攻击数据库的尝试非常有用。
然后,我们删除了默认的 Northwind 和 Pubs 数据库,以减少暴露给潜在攻击的表面区域。
完成所有步骤后,我们创建了最终解决方案中使用的 Awards 数据库。然后仔细检查表和存储过程,并确保与应用程序关联的帐户对存储过程只有执行权限,而对实际表没有任何权限。这使我们能够控制对存储过程的访问并限制对它的操作,而不必担心针对表直接运行的特殊 SQL 查询。此外,我们还确保了此帐户在 SQL Server 中没有任何其他的特权和权限。
密码
确保任何服务器安全性的关键一步是选择不会被轻易猜出的长而复杂的密码。理想情况下,一个出色的密码应至少包括以下四组字符中的三组:小写 a 至 z、大写 A 至 Z、数字 0 至 9,以及非字母数字符号(如“>”、“*”、“&”等)。为了尽可能保证安全,密码应由以上四组中的每一组字符以及使用 ALT 键生成的字符组成。利用这些字符集创建长度至少为八个字符的密码,可最大限度地降低攻击者推测出登录凭据的机会。这是 OpenHack 解决方案中的每个服务器都使用的方法,也是我们极力向您推荐的方法。
小结
确保 OpenHack 解决方案安全性所采取的所有步骤并非适用于每个 Web 解决方案。这些步骤也并不能代表开发人员和系统管理员在确保解决方案的安全性时应采取的所有方法。每个项目都具有独特性,需要开发人员和管理员一起找出潜在的攻击因素及预防措施。也就是说,OpenHack 4 表明上述建议非常有价值。即使它们不能全部直接应用到您的解决方案中,也应从中提取一些关键的好方案,以便在构建安全解决方案时以一种形式或另一种形式加以应用:
1.在原始设计中考虑安全问题。这包括开发进程以采用最新的 Service Pack 和修补程序。
2.总是安装最新的 Service Pack 和修补程序。
3.总是使用复杂且不明显的密码。
4.关闭所有不必要的功能以减少暴露给攻击者的表面区域。
5.坚持“最低权限”原则。决不授予并非绝对必需的权限。
6.预测可能发生的故障并总是采用“层层设防”以减少负面影响。
7.使用 IIS 时,运行 IIS 锁定工具和 URLScan。
8.验证所有输入数据。