【ChinaBeta.Cn 操作系统中心】
概览:
- 定义通过隐匿性来实现安全
- 评估通过隐匿性来实现安全措施
- 评估重命名管理员帐户的价值
- 制定明智的风险管理决策
“通过隐匿性来实现安全”这种说法经常遭到安全性人员(特别是那些喜欢以专家自居的人)的嘲笑。他们对此不屑一顾,认为很愚蠢。
简而言之,通过隐匿性来实现安全违反了 Kerckhoffs 原理,该原理认为应该靠 系统的设计来确保 系统安全性,而不是让攻击者无法知晓 系统的设计来确保 系统安全性。Kerckhoffs 原理的基本前提是秘密迟早会被揭开。
Windows NT ® LAN Manager (NTLM) 身份验证协议就是一个很好的例子,该协议最初被认为是设计机密。为了对基于 UNIX 操作 系统实施 Samba 互操作性产品,Samba 小组不得不对该协议进行反向工程。结果导致有关 NTLM 最完备的文档全部泄露 ( monyo.com/technical/samba/translation/ntlm.en.html),同时也发现了许多错误。由于加密产生了太多安全性问题,并且很多机密设计也被揭示,因此很多安全性实践人员都认为所有信息安全性都应遵循 Kerckhoffs 原理。
但通过隐匿性来实现安全总是有害吗?在这篇文章中,我们会解释什么是通过隐匿性来实现安全,阐述为什么许多人认为这是浪费时间(另外一些人则不以为然),并向您说明为什么答案总是比最初看起来要复杂得多。
通过隐匿性来实现安全简介
这里讨论的通过隐匿性来实现安全,并不包括对缓解问题完全没有任何实质作用的措施。例如,如果某组织在边界路由器处禁用了网络新闻传输协议 (NNTP) 以防止员工阅读新闻组,但是却允许出站 Secure Shell (SSH),则不算是通过隐匿性来实现安全。因为 SSH 允许通过每个协议,所以问题很明显;实施的愚蠢缓解措施除了防止合法用户在不违反安全性策略的前提下完成合法任务外,没有任何意义。这样的措施不算是通过隐匿性来实现安全;它们只是愚蠢的做法,没有任何意义。
正如“通过隐匿性来实现安全”这种说法中的“安全性”所暗示的那样,您应该确实可以从这种措施中得到保护。然而,同时也暗示了实际上您并未采取任何措施来阻止对一个或多个平台的攻击,这也是问题所在。(攻击平台实质上是攻击者访问 系统所采用的一种方法。)
例如,假定您有一个易受攻击的 Web 服务器,可以通过 TCP 端口 80 利用公开漏洞对此 服务器进行攻击。要堵上这个漏洞,您可以修补 Web 服务器或者将其关闭;其中任一操作都将完全停止此平台。通过使用防火墙或 IPsec 来关闭除几台选定计算机之外的所有计算机的端口 80,可以在某种程度上停止攻击平台。此操作不能完全阻止攻击平台,但是可以极大地缓解问题。
另一方面,通过隐匿性来实现安全需要采取不停止攻击平台而只是隐藏它的措施。例如,您可以将 Web 服务器移动到端口 81 而不是端口 80,以便只有知道 Web 服务器所在位置的人才可以找到它。这也是争论焦点。实际上,将 Web 服务器移动到端口 81 只能停止一些攻击,主要还是给最终用户带来不便。强大的入侵者只需对大量端口运行端口扫描程序和 Web 标志获取程序即可发现位于非标准端口上的 Web 服务器。只要找到一个,就可以对 服务器进行攻击,因为您实际上并未消除攻击平台,只是(临时)隐匿它而已。
这是否意味您根本不应该尝试?这要具体问题具体分析。与“信息安全性”领域的所有其他方面一样,全都与风险管理息息相关。为了理解要考虑的关键因素,我们将快速了解一下更多通过隐匿性来实现安全的措施,然后详细讨论其中一项 — 重命名管理员帐户。
评估安全策略
通过隐匿性来实现安全的例子很多。它们可以是 系统和网络管理员采取的措施,也可以是由软件开发人员启动的操作。然而,它们的共同点都是通过对潜在攻击者隐藏漏洞来缓解问题。
这些做法难道一点好处也没有吗?断定通过隐匿性来实现安全都有害真的公平吗?对于其中一些措施,您肯定会找到支持者。例如,在 Windows® 的 Windows 资源管理器中隐藏驱动器名。许多环境,尤其是学校的计算机实验室,使用此技术防止用户将数据保存到硬盘驱动器。当然,多数应用程序能仍然可以将数据保存到隐藏的硬盘驱动器,因此它不能作为最终安全性措施。然而,实施这种措施的机构经常宣称它减少了硬盘驱动器中的数据。
Windows 上经常实施的另外一种类型的通过隐匿性来实现安全是关闭管理网络共享(如 C$,Admin$,等等)。这被认为可以防止攻击者从远程连接到计算机。实际上,这不仅不正确,而且,一旦攻击者知晓可使用管理共享的帐户,就可以从远程重新启用那些几乎完全相同的共享。但是许多组织却坚称禁用这些共享可以减少网络上出现的恶意软件。
对于这种把精力错放的情况,我们最津津乐道的一个示例便是 Windows 中的“允许在未登录的情况下移除”设置。如果将其设置为禁用,则将对登录屏幕隐藏“移除计算机”按钮。实施者认为这样可以防止攻击者轻松地移除计算机。当然,任何入侵者都可以轻松地将计算机和基座一同塞到袋子里带走,无论那个按钮是否可见。这种可能性甚至与通过隐匿性来实现安全毫无关系。
另一明显的示例是“允许 服务器操作者安排任务”设置,顾名思义,此设置允许作为 Server Operators 组成员的用户安排任务。这是个敏感的问题,因为此类任务可以作为“本地 系统”运行,并且应该只有管理员才能安排作为“本地 系统”运行的任务。当然, 服务器操作员可能会通过各种途径使其成为管理员,因此通过这种方式阻止 系统操作员安排任务也没有多大价值。
然而许多组织喜欢此设置,因为它允许工程师作为 服务器操作员而不是管理员,这意味着他们不太可能意外地损坏 服务器。这本身多少有些好处。
那么结论是什么?很明显,这些问题当中有些可能非常复杂。我们花费了很多时间愉快地讨论这些类型的措施。Roger 坚定地认为这类做法有价值;Jesper 则深信大多数情况这些措施只是在浪费时间。我们来探讨一下通过隐匿性来实现安全的其中一个最常提及且最有争论的案例:重命名管理员帐户。Roger 支持此措施,Jesper 则反对。安全性方面的知名人士 Aaron Margosis 和 Steve Riley 也以辩论双方参加了这场有关“重命名管理员帐户”和“不要更改默认设置”的讨论。
[1] [2] 下一页
(责任编辑:hahack)
|