多少年来,黑客的信条就是"信息是免费的"。黑客想要信息,公司不想让他们得到。黑客掌握着主动,他们选择攻击的方法和时间。相反地,公司处于被动状态。这就需要建立安全体系,抵御有着主动性的敌人。?
本文是介绍网络安全性原则系列的第一部分。我会评论主流操作系统和网络平台的安全性能,综合介绍安全方面的资源。我在一家生产、销售和支持网络安全的软件公司工作。我会谈到我司的一些产品,但是不会推荐我不支持的产品。
建立安全策略 任何安全项目都有四个阶段:计划、设计、实施和强制。本文包括计划和设计策略的内容,实施和强制会在后面的文章中讲到。首先,最重要的安全原则是制定明确的安全策略。需要先回答两个问题:
1. 什么东西构成了良好的安全策略?
2. 不了解威胁的程度如何制定安全策略?
什么是好的安全策略?
明确的安全策略要满足你的需要并让你远离危险。制定和评估信息安全策略有三条原则。
1. 保密性。必须能保密信息,阻止未授权的访问。
2. 完整性。没有授权,不能修改数据。
3. 可用性。授权用户需要数据时,可以使用。
你的网络中可能有和Internet连接的文件服务器、网络服务器、邮件服务器和FTP服务器,也可能需要ICQ、AOL、PointCast、RealAudio、聊天室和其他一些功能,所有这些都可能危及安全。在设计安全策略时,就要在使用者的需要和安全的等级之间掌握平衡。
比如你有两个保密数据库:信用卡数据库和人力资源记录。所有不应该读取数据的人都不能读取,任何人都不能向外发送所有不应该被发送的数据。
那么安全策略的基本需要就是:
1. 内部人员可以共享文件、访问文件服务器。
2. 财务人员可以读取信用卡数据库。
3. 人力资源人员可以读人力资源数据库。
4. 内部用户可以访问Web站点(HTTP)。
5. 内部用户可以访问FTP站点。
6. 内部用户可以收email(POP3、IMAP、SMTP)。
7. 内部用户可以发email(POP3、IMAP、SMTP)。
8. 外部用户可以访问你的Web站点(HTTP)。
9. 外部用户可以访问你的FTP站点。
10. 所有用户(内部的和外部的)都没有任何其他服务。
对于前面的第一个问题。安全策略决定你的需要,而不是决定如何实现那些需要。不要将安全策略和安全计划混淆,当制定安全策略时,说明策略包括的内容,而不是说明如何利用这些策略达到目标。
第二个问题有助于理解如何制定好的安全策略。"不了解威胁的程度如何制定安全策略?",这个问题说明了安全的第二重要的原则,即没有明确允许的就是明确禁止的。
没有明确允许的就是明确禁止的
这条原则是说不要把精力集中在威胁上面。好的安全策略只允许对公司运作必要的功能,即不能妨碍公司运作必需要的功能。在实施策略阶段有的是时间考虑威胁的问题。
深入防御
先看一下政府是如何进行安全保护的。首先,进入有保安的停车场。然后进大门,大门上有读卡器或其他的保安设备。在到达办公室之前,还有另一个读卡器或小键盘,然后在同事那里签到。最后在计算机中输入密码。这就是彻底地防卫。如果有很多保护措施,千万不要只使用一种。
所有的系统都有它的弱点,每个篱笆都有洞,每个软件都有错误。如果只用一种防御方式,某些人就能找到漏洞或错误,进入你的网络。你总是不能阻止所有的攻击。那么怎么做呢?总不能放弃防御,然后说,我这里的信息随便拿。
实施安全体系:防火墙
一旦设计了明确定义的安全策略,就应该设计安全体系了。时刻牢记安全策略,并使用深入防御的原则。
第一个防御就是网络访问控制。网络访问控制就是不允许未经授权的用户或服务进入你的网络。最常用的方法是使用防火墙。 防火墙指的是攻击方和受保护的网络之间的屏障,就像汽车在发动机壳不让里面的火喷出来伤人。Internet防火墙(或其他的网络访问控制设备)是外部数据通讯和你的网络之间的屏障。只有明确说明允许的数据通讯才能进入和退出你的网络。可以在防火墙中规定控制网络访问的条款。这些条款有很多种安全模型,最普通的是用户身份验证、源控制、目标控制和协议控制。
用户身份验证
用户身份验证就是说只有被授权的人或组织(需要用户名和密码)才可以通过防火墙。理论上讲,这是限制用户读取信息的最安全的方法。所有可以连接网络的操作系统(从Windows 3.11到Cray超级计算机上的操作系统)都使用身份验证安全模型。
这种方法有优点也有缺点。一个优点就是,别人进入办公室,坐在你的计算机旁,但是他不能使用计算机。不过,尽管所有的网络访问控制解决方案使用用户身份验证,但是实际上做得并不好。尤其是有几百个或几千个用户的时候更是如此。
用户身份验证让用户输入用户名和密码。如果用户记不住这些信息,则可能发生把用户名和密码写在纸上丢失的事情。而搞破坏的人可能去猜密码。
源控制
源控制限制源(如某台计算机、网络或域)的访问,这种方法通常被称为"被信任的主机或域模型"安全。这种控制和用户身份验证一样,都是最基本的安全模型。源控制可以限制哪些计算机可以访问。
使用源控制无需记住密码,也无需输入任何信息。这种安全模型对用户是透明的。这种模型的问题在于识别信任的源。身份验证最普通的方法是使用IP地址识别,但是IP地址很容易伪装(称为"电子欺骗")。而且,很多网络使用DHCP,所以根本不可能保证客户端的IP地址一直是同一个。
可以用其他方法识别源。有些厂商现在使用cookies,有些使用专有软件。但是,到现在为止,都有欺骗的方法。
目标控制?
目标控制限制源(如某台计算机、网络或域)的访问。这种安全方法的优点和源控制类似,它对用户也是透明的,几乎不需要管理。而且,允许数据通信通过防火墙进入Internet没有危险。目标控制也是阻止所有访问特定计算机或网络的很好的方法。
当使用这个模型访问内部网络时会出现问题。黑客可以欺骗服务器,然后传输到该服务器的数据就转到其他地方。还有,如果用目标控制的话,限制某几个用户访问也很难。目标控制对DoS(拒绝服务)攻击也没有防御作用。
当某人无限制地连接你的网络、占用存贮空间或者恶意地向服务器发送致命数据时,就造成了DoS攻击,可以导致服务器中断服务一段时间。这种方法是攻击第三条安全标准--可用性的。
拒绝服务是公众网络和邮件服务器最普通的攻击,因为,这些服务器任何人都可以访问。这种方法对于缺乏经验的攻击者来说是很容易的,但是如果没有网络访问控制设备的话,却很难阻止这种攻击。
协议控制
协议控制就是用某种协议限制信息的读取,而不是前面讲的源和目标。这是路由器、包过滤器和所有的匿名公共服务器最常用的安全模型,这种方法对于阻止已知不需要的数据通讯很有帮助。例如,如果运行纯Solaris网络的话,就不需要NetBIOS(在微软网络中工作)。把139号TCP端口封住,就可以防止外部的NetBIOS身份验证。
这种控制方法对网络服务器、代理服务器和任何网络设备都特别有用。因为你不知道源、目的地和想读取信息的用户,那么剩下的可以控制的可能只有协议了。
每种安全模型(用户身份认证、源控制、目标控制和协议控制)本身都没有什么安全性,它们只有相互配合,才能提供更完全的控制。比如一个纯UNIX网络,在防火墙外添加了几台Windows NT服务器,在防火墙内部添加了几台Windows 95客户端。就需要允许NT服务器和95客户端之间的NetBIOS数据通讯,但是又不想让任何Internet其他地方的用户访问内部计算机。在这种情况下,就需要把几种模型结合起来进行控制。源控制允许NT服务器的数据进入防火墙,目标控制把读取数据限制为Win95系统,用协议控制限制NetBIOS通讯。