评估安全策略
通过隐匿性来实现安全的例子很多。它们可以是系统和网络管理员采取的措施,也可以是由软件开发人员启动的操作。然而,它们的共同点都是通过对潜在攻击者隐藏漏洞来缓解问题。
这些做法难道一点好处也没有吗?断定通过隐匿性来实现安全都有害真的公平吗?对于其中一些措施,您肯定会找到支持者。例如,在 Windows® 的 Windows 资源管理器中隐藏驱动器名。许多环境,尤其是学校的计算机实验室,使用此技术防止用户将数据保存到硬盘驱动器。当然,多数应用程序能仍然可以将数据保存到隐藏的硬盘驱动器,因此它不能作为最终安全性措施。然而,实施这种措施的机构经常宣称它减少了硬盘驱动器中的数据。
Windows 上经常实施的另外一种类型的通过隐匿性来实现安全是关闭管理网络共享(如 C$,Admin$,等等)。这被认为可以防止攻击者从远程连接到计算机。实际上,这不仅不正确,而且,一旦攻击者知晓可使用管理共享的帐户,就可以从远程重新启用那些几乎完全相同的共享。但是许多组织却坚称禁用这些共享可以减少网络上出现的恶意软件。
对于这种把精力错放的情况,我们最津津乐道的一个示例便是 Windows 中的“允许在未登录的情况下移除”设置。如果将其设置为禁用,则将对登录屏幕隐藏“移除计算机”按钮。实施者认为这样可以防止攻击者轻松地移除计算机。当然,任何入侵者都可以轻松地将计算机和基座一同塞到袋子里带走,无论那个按钮是否可见。这种可能性甚至与通过隐匿性来实现安全毫无关系。
另一明显的示例是“允许服务器操作者安排任务”设置,顾名思义,此设置允许作为 Server Operators 组成员的用户安排任务。这是个敏感的问题,因为此类任务可以作为“本地系统”运行,并且应该只有管理员才能安排作为“本地系统”运行的任务。当然,服务器操作员可能会通过各种途径使其成为管理员,因此通过这种方式阻止系统操作员安排任务也没有多大价值。
然而许多组织喜欢此设置,因为它允许工程师作为服务器操作员而不是管理员,这意味着他们不太可能意外地损坏服务器。这本身多少有些好处。
那么结论是什么?很明显,这些问题当中有些可能非常复杂。我们花费了很多时间愉快地讨论这些类型的措施。Roger 坚定地认为这类做法有价值;Jesper 则深信大多数情况这些措施只是在浪费时间。我们来探讨一下通过隐匿性来实现安全的其中一个最常提及且最有争论的案例:重命名管理员帐户。Roger 支持此措施,Jesper 则反对。安全性方面的知名人士 Aaron Margosis 和 Steve Riley 也以辩论双方参加了这场有关“重命名管理员帐户”和“不要更改默认设置”的讨论。
隐藏管理员帐户
安全性专业人员常常建议将重命名管理员帐户 — 相对标识符 (RID) 500 — 更改为一般人不知道的名称,很多 Microsoft 强化指南中也提倡这种做法。组策略甚至包括重命名管理员帐户的设置,如图 1 所示。其理论基础是:如果重命名了管理员帐户,则攻击者就很难以真正的管理员身份登录。当然,使用组策略进行此操作的问题很明显,那就是经过重命名的管理员帐户在应用此组策略对象的每台计算机上都具有相同的名称。这无疑降低了该特定安全性措施的隐匿性价值。

图 1 重命名管理员帐户

