28
2014
05

10个通用安全准则

准则1:通过隐藏来实现安全是行不通的

  就像电影里所说的,你可以跑但不能藏.用户也许会想自己运行的是一个不出名的UNI XWeb服务器,没有人会想着侵入它.但在这个时代,成千上万带恶意的年轻人会通过接触强大的网络扫描工具发现用户的系统及其弱点,所以躲避是不能保证安全的.也许用户认为已把关键数据藏在好几层目录之下了,但当看到UNIX中强大的搜索工具时就会觉得自己错了.软件或硬件供应者也许认识到自己的产品存在漏洞但仍四处销售,想着没有人会发现它.这些漏洞总会被发现的.通过隐藏最多只能得到临时的安全保护,但不要被它所蒙骗—花很少的努力和时间就会发现秘密.像DeepThroat在X-档案中指出的:”总有人在监视着你”.

  准则2:完全暴露缺陷和漏洞对安全有好处

  像上面所说的,有些供应商在销售有安全漏洞的软件时心安理得,期望着软件足够复杂和保密而无人会发现它们—树在倒的时候没有人听见就不能算倒.有些安全职业人员在公布发现的安全漏洞和问题时总感到心里不安.他们担心宣布了安全漏洞会给”坏人”提供怎样攻击系统的思想.另一方面,Internet上的安全组织把有关漏洞和可能问题的知识进行共享:许多像bugtraq这样的邮件列表和comp.security.unix这样的新闻组都维持公开的讨论来试图指出并解决漏洞.这有些似是而非,但公开暴露安全问题的方式对整个Internet及其上面系统的安全都有好处.通过暴露来达到安全是可行的.注意:这并不是说应该在发现一个漏洞后马上广泛地公开宣传.协议要求首先与系统供应商或程序的编写者联系,给他们一个机会来修改.发现并宣布安全漏洞是好事,但最好是在修复后再宣布.

  准则3:按直接使用的比例降低系统安全级别

  这是Farmer定律(计算机安全研究人员Dan Farmer提出):”计算机系统的安全要按直接使用系统的人数按比例降低级别”[22].暂时忽略可用性,一台关闭的计算机比开启的更安全.一台关闭的计算机,锁在箱子里,放在地下防空洞,由看守守卫就更安全了.一旦有一个人使用它,则危险增加,一旦两个或更多人使用系统,则危险增加更多.把系统放入Internet并提供某些服务可以肯定用户能接受这个想法.像Dan说的,”无知或有恶意的用户对系统安全的破坏比其他因素都大”[23].在安全和使用/功能之间权衡是经典的计算机安全难题.许多Linux发布系统为最多功能而开发,在销售时有大量的程序集和开放的安全设置.另一个极端是防御主机作为防火墙的一部分而建立了.它们有许多只做一件事(例如在网络A和网络B之间过滤包).分析一下自己的需要来在安全和功能之间进行权衡并做出正确规划.

  准则4:在某些人犯错之前把它做好

  计算机安全从不可能在真空中应用.仅建立安全机制并不能保证它们会按计划工作.安全措施和机制必须面对用户的正常需要:也就是必须正确工作.一个机构可以宣告没有用户能拥有Internet访问权,但将会发现聪明的用户会买便宜的调制解调器来对付该措施,这样就会增加该机构的弱点.最好是设置更实际的措施并对访问网络进行监测和控制.一个防火墙管理员可能决定应用一个法西斯式的防火墙,仅允许通过80接口的HTTP/Web访问,让需要Telnet访问的用户到其他地方去.结果,这些用户也许发现可以把禁止的协议封装在HTTP包中.管理员最好提供正常的需求而不是鼓励绕过潜在和未知的冒险.最好是自己把事情做好,而不是等别人来犯错误.

  准则5:担心被抓住是聪明的开始

  不要低估障碍的价值.许多潜在的攻击可能会因攻击者逐渐害怕而被制止[24].障碍可能对业余的白领罪犯或内部人员特别有效.其目标是阻止攻击者试图到达关键的行动.有许多保护程序可以阻止一次攻击,从登录标志警告”警告!使用本系统应同意安全监测和测试.所有活动都和你的主机名及IP地址一起记录下来”[25]到提醒与计算机相关的法律、背景检测、安全简报和审查等.当然,这些保护程序不能阻止坚定的计算机罪犯,但甚至职业罪犯在勘测一个新系统后发现一个像Tripwire这样监测工具已配置好把每天的文件系统完整性报告写入只读介质时,也会再三考虑的.

  准则6:总有某个人比你更精明,拥有更多知识和更精良的设备

  要仔细设想自己系统所面临的相关威胁.甚至冗余安全机制和仔细的监测也不能保护用户免遭uebercracker的攻击.考虑下面从DanFarmer和WietseVenema的文章”Improvingthe Securityof YourSiteby Breaking IntoIt”中摘录的一段话:[26]“什么是uebercracker很明显它是从尼采的uebermensch偷来的,文字上译成英语是”overman”.尼采并没用它指连环画中的超人,而是指一个人超越普通人的无能、卑劣和虚弱.uebercracker是已超越用简单方式侵入系统的系统破坏者.uebercracker通常没有动机来执行随机的破坏行为.目标不是随意的—它有一个目标,不论是个人金钱利益、搜索各种信息或袭击一个重要的或著名的站点或网络.一个uebercracker很难被检测到,更难被制止,最难的是把他屏蔽在站点之外.”许多安全威胁模型假设一个坏人是一个孤癖的人或是对搜索系统有兴趣的小家伙.冗余安全机制和监测也许会使系统在这些模型下得到保护,但它不能阻止一个坚定并有技巧的职业人员—uebercracker.比uebercracker更有威胁的是攻击单元—一组复杂的人在一起工作来攻击系统以达到某个目的.当一个机构准备预防孤僻的攻击者时,也许会遭到一些有足够金钱和技术资源的职业人员的攻击.一个攻击单元也许包括一个从市场上雇佣的社会工程专家,一个用”UNIX工具针对UNIX工具”来解剖用户网络的系统专家,一个花费数年开发用户工具的安全程序员和一个通过中间媒介传递信息的话务员通.它也许有显著的研究和开发能力,或者甚至是政府机构的后援[27].本书中讨论的所有工具和技术仅在书中有效.若读者的UNIX系统(或任何系统)包含商业或政治机密,则要准备对安全管理、物理安全和人员安全进行实质的调查,并要对系统和网络安全进行重点的研究.

  准则7:没有完全包办的安全方案

  商业和Internet相连接后,就希望能买到完全包办的安全措施.安全提供者不会同意,作者不相信有完全包办的方案.有太多的因素需要考虑,也存在太多种类的安全措施、威胁模型、系统配置和连接.用户要避免MaginotLine症状:依赖单独一个防火墙这样的保护程序也许会导致系统的失败.安全不是买来作为一次性事情处理的,它是一个持续的过程,需要持续的计划、监测和求精.该准则的一个标准为:没有一个检查表能包括所有的弱点.安全性检查表是一个检查错误和疏忽的著名的方式,但不要被它们所蒙蔽.安全检查表方法将在一个有智慧的攻击者面前失效,若他已看到公布的检查表并设计出不在其中的攻击方式.

  准则8:好与坏混合起来就成为灰色

  所有计算机安全的定义都包含一个隐藏的假像:存在”好人”和”坏人”,或是”白帽”和”黑帽”.几乎所有流行的书和电影都沉迷这种假像,从CliffordStoll的TheCuckoo’sEgg中狡猾的伯克利黑客追捕国际间谍到TheNet中SandraBullock扮演一个被贼抢掠的系统管理员.有时,计算机安全的对抗本质把它变成了一种游戏.不幸的是对于安全人员,这种游戏是”与未知的敌手在未知的时间和地点策划未知的破坏进行对抗”.当有人对用户的系统安全感到关注时,用户将感到自己在一个盛大的戏剧中扮演角色,本书和相关工具可以帮助用户对抗那些无时无地不存在的无名攻击者.作者建议用户不要坠入该假像.用户也许给了自己太多的荣誉而给”对手”的太少.不要忽略一个事实,就是多数安全违规是由公司内部人员造成的.罪犯看起来更像一起在餐桌旁坐着的、不引人注目的家伙,而不是电影中精通技术的狂徒.永远不要忘了在每个白帽和黑帽角色之间,还有上百个戴着灰色帽子.计算机安全职业包含了大量的人员,包括受过高等教育的人、退伍军人、商业供应商的推销员以及被改造过的破坏者.没有人小看计算机安全职业中所需技术的发展,也没有一个可接受的道德规范.这种情况下,职业人员类似于他的敌人:广大的、多民族的、多文化的攻击团体,从开发复杂程序的”老手”到从幼年开始就被教育说计算机犯罪就像双击一个简单的”小家伙”.与其鲜明地把维护计算机和破坏计算机的人分开,不如考虑两种人有多紧密的关系并有大量的人掉入之间的灰色区域.考虑一下”tigerteam”这个团体—他们是计算机安全职业者,被雇来以攻击手段检测系统的安全.某些情况下,这些团体由被改造的、以前有着罪恶史的系统破坏者组成.甚至IBM把该服务以”道德的黑客”来进行宣传.另一方面,许多攻击者屡次去重要的防御站点—通过侵入来宣布他来过,这实际是给受害者帮忙.相反,在几乎所有任何机构内部都有不只一个职业人员认为犯罪就是报酬.就像计算机安全文化中在”白帽”和”黑帽”之间没有明确的界限一样,在”道德黑客”发现漏洞和破坏者发现漏洞之间,在开发安全的工具和破坏安全的工具之间也没有明确界线.一个工具就是工具,本书中讨论的任何安全工具可以用来做好事也可做坏事,就像一个锤子能用来造房子也可以破坏房子一样.一个密码攻击程序可以用来在攻击之前发现太简单的密码,也可以被攻击者用来获得入口.一个安全审查程序可以帮助系统管理员或系统破坏者发现漏洞.甚至像防火墙这样纯粹防御的工具和措施也被破坏者用来支持他们的攻击.只有最天真的攻击者才不会想到受害者也许会反攻击.最老练的破坏者要建立可靠的防御来隐藏他们的活动.相反,有些机构采取”反击”方式来支持他们的防御.

  准则9:试着去喜欢敌人

  该准则是由计算机安全的对立性本质得到的—上面讲的好和坏混成灰色,计算机安全的”游戏理论”以及”没有包办的安全方案”准则.如果计算机安全是游戏,则敌人制定规则.这就是为什么从设置防御规则得到的检测表和防火墙等常见方案被证明对精明对手是无效的.假设另一边有最强的能力,就像”总有比你更精明、更有知识或更好设备的人”所说的.考虑那些可能对系统造成威胁的人,想想他们的动机、能力和世界观.到包含侵入系统的文章和工具的”黑客”站点去看看.基于面对的威胁来发展剧情;假如自己是一个与自己进行竞争的机构的UNIX系统程序员,那么会怎样来破坏本机构的安全

  准则10:信任是一个相对的概念

  为了得到最大限度的计算机安全,”不相信任何人”是一个最强的策略.任何一个软件或硬件可能出现一个特洛伊木马或其他恶意的功能.当然,除非用户能自己建造硬件并编写自己所有的软件,否则就不得不去相信某些人.大部分计算机和软件公司都是相对可信的,甚至他们不以全公开方式来提供源代码或详尽的硬件说明书.多数公开代码的程序相对更可信一些.甚至公开源代码也不能对恶意代码提供完全的防范.


« 上一篇 下一篇 »