网络安全技术与观点

时间:2022-09-05 10:07:21

网络安全技术与观点

摘要:本文畅谈了当前形势下网络安全技术和产品的主流技术以及人们在网络安全上的一些常见的错误认知。针对这些常见的错误认知和由此导致的防范失误,进行了纠正并提出了正确的防范方法和解决之道。

关键词:防火墙技术;入侵检测技术;身份认证技术;物理安全;安全的软件工程

中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)03-10670-03

1 引言

在IT行业越来越发达、世界的运转越来越依赖于IT业的今天,IT业的每个领域都遭受着越来越严重的安全威胁。以下是安全威胁的两种主要形式。

(1)黑客攻击:黑客攻击的目标包罗万象,包括:互联网服务器、路由器、防火墙、局域网服务器、联网PC、手机、GSM/GPRS基站、通讯卫星、传真/电话系统等。

(2)病毒/蠕虫:几乎每个人都遇到过各式各样的病毒或蠕虫。它们的能力已经越来越强。删除文件、格式化硬盘、破坏PC机的BIOS、制造大量垃圾数据堵塞网络、窃取受害者的秘密(如信箱密码、银行帐号)并在网络上公布、冒充受害者给他的朋友发信等。

黑客攻击的目的:无聊或为了显示自己的能力;泄私愤:如离职员工对原公司的攻击;商业竞争:如商业间谍窃取竞争对手的秘密;军事,政治目的:如在战争中对敌方计算机网络实施的攻击 … …。

病毒/蠕虫的传播速度也越来越快,最快的记录是2003年1月爆发的SQL蠕虫创造的,它传遍全球仅仅用了5个小时左右。而之后令人谈虎色变的“冲击波”病毒,更是让每个系统管理员的神经高度紧张。

2 网络安全的主流技术

根据要解决的问题不同,安全技术和产品主要可划分为以下几个领域。

2.1 防火墙(Firewall)技术

防火墙位于两个网络之间、或网络和计算机之间、或两台计算机之间,所有网络流入或流出的数据均要经过防火墙的过滤。防火墙可以是硬件,也可以是软件。

防火墙能够拒绝一些恶意的网络通信,避免对其所防护的网络或计算机造成危害。例如,拒绝来自特定IP地址的数据、关闭某个端口、屏蔽特定信息的流出等。

2.2 入侵检测(Intrusion Detection System)技术

入侵检测系统能够自动检测到攻击行为的发生,并自动通知系统管理员。入侵检测是一门相当复杂的技术,比较依赖于人工智能技术,所以至今还不是很成熟。

2.3 防病毒

这是公众比较熟悉的领域,最常见的就是杀毒软件,已经比较成熟。对于企业而言,应该采用高端的企业级杀毒软件。

2.4 加密技术

加密技术使得攻击者即使窃得数据仍无法解读其内容。主要包括数据传输的加密,数据存储的加密等。

2.5 身份认证技术

对用户身份进行验证,防止攻击者冒名顶替。例如RSASecureID,指纹识别、声音识别、视网膜识别等。

2.6 数据备份/恢复技术

2.7 对数据进行备份,在灾难来临时可以以最快速度恢复。这和另一个热门领域相关,就是存储技术。高端的技术有海量存储、实时备份、异地备份等。

2.8 物理安全

物理安全是指对设备物理上的保护,例如:禁止无关人员进入服务器机房,防火防水设施、笔记本电脑的防盗装置、使用UPS以防止突然断电对硬件造成的损坏等。

2.9 安全管理

安全管理是指从安全的角度对企业的软硬件以及员工进行管理,包括技术和非技术的。例如:对网络服务器以及每台PC进行安全设置、定期检查服务器的安全设置、及时安装补丁、制定防灾预案、定期备份重要数据、制定安全操作规程、对员工进行安全培训等。

2.10 安全的软件工程

安全的软件工程是指在软件的整个开发阶段,都应注重安全问题。以安全的方式设计、编码、测试程序,避免留下安全隐患。传统的开发人员主要关注程序的功能、性能、可扩展性、可维护性,却不太注意程序的安全问题。现代的开发人员应该树立这样一个观念,高质量的程序除了具备以上性能、可扩展性等优点以外,还应该有安全的设计和制作流程。

3 网络安全观点

3.1 安全不是膏药

安全不是膏药,贴上去就能解决问题。对安全的考虑应贯穿于整个系统的生命周期,而不是发现问题时才找医生开一副膏药贴上去。从需求分析开始就必须考虑系统的安全问题,概要设计也是如此,然后是详细设计、编码、测试、维护。

安全不是独立运行的子系统,而是每个子系统都应该考虑的问题。

就像系统的性能问题一样,如果设计不当,系统的性能会很差;如果编码不当,同样有问题;如果系统的设计和编码都没问题,而系统管理员设置不当,也会造成性能问题。系统的性能必须从需求分析开始就考虑进去,安全问题也是一样。

诚然,为系统安装一个防火墙,会提升系统的安全强度,就像为系统增加物理内存,增加额外的处理器,会提高系统的性能一样。但这不是万能的,决不能把全部希望寄托在这些“膏药”上。

所以,安全问题不是某一个人的问题,而是所有参与系统的人员都需要注意的,无论你是开发人员还是系统管理员。

3.2 纵深防御

这是借用了一个军事术语,军事上的纵深防御是对敌人设置多道防线,敌人突破了防线,还有第二道防线、第三道防线。千万不要指望第一防御线能够抵挡住敌人的攻击。

在网络安全上,纵深防御原则是指我们应该使用尽量多的安全防范手段,不要因为有了一项安全措施就忽略其它。要不厌其烦的把能使用的手段全用上,也就是在主流安全技术中所列举的各种手段。设置尽量多的防线来抵御攻击。这样即使系统某个地方有漏洞,攻击者攻进来,还有其它安全措施限制他不能为所欲为。

当系统的一些防御机制被破坏了,例如攻击者成功的破坏了防火墙使之失效,我们不能就此举手投降,要继续战斗直至最后一刻。

3.3 安全不是纯技术问题

最有效的黑客攻击手段是什么?不是密码猜解,不是漏洞扫描,不是拒绝服务攻击,而是社会工程(social engineering)。软件有漏洞,管理也有漏洞,社会工程就是针对管理上的漏洞进行攻击。

社会工程最简单的例子是:攻击者冒充系统管理员打电话给用户,说由于进行系统维护,需要知道用户的密码,警惕性不高的用户就会信以为真说出了自己的密码。

注意,这只是最简单的例子,真正的社会工程的作用比一般人想象的要大得多。

管理上的漏洞,比软件的漏洞更可怕。

提出这个观点,也是为了巩固第一个观点“安全不是膏药”,或称整体安全观念。我们往往容易把网络安全简单化。实际在很大程度上,安全是一个非技术问题,它涉及我们的管理制度、规范操作、防范意识,任何一个地方的疏忽都可能产生严重的后果。

3.4 最小化原则

从网络服务器的安全管理角度,最小化原则是指应使一台服务器的功能尽量单一,安装的软件尽量少。不安装可有可无的软件,不使用可有可无的功能。

服务器的功能越单一,其可能产生的漏洞就越少,即使被攻破所产生破坏的影响也越小。

一些可有可无的软件或功能,一律不安装或禁用。这样可能会使管理服务器时麻烦一些,但是换来的是更高的安全强度。

举个例子,我们有一个原则:不在服务器上使用IE。就是从最小化原则的应用。因为众所周知,IE有很多漏洞,如果不小心访问了恶意站点,就会给服务器带来麻烦;由此带来的IE补丁的搜集、评估、安装等也增加了服务器的维护工作量;另外在服务器上使用IE还会暴露服务器的IP地址。

从权限设置角度,最小化原则是指对所有用户都只设置确实需要的权限,决不增加可有可无的权限。这样做的目的是最大限度地减小单个用户帐号被盗用所带来的损失。这里的用户包括操作系统用户、数据库用户、以及各种应用系统的用户。

例如,我们把IIS匿名用户的权限设置为只允许访问Web目录,不允许访问其它如数据库、系统目录等,这样假如攻击者能利用IIS的某个漏洞访问任意磁盘文件,他也只能访问IIS匿名用户能访问的文件。

3.5 安全威胁无处不在

尽管人人都在谈论安全是多么重要,但实际上大多数人都心存侥幸,不相信黑客会黑到自己头上。虽然真正的黑客一般不会对一台普通的联网PC感兴趣,但由于很多软件中愚蠢的漏洞(不光是Windows,UNIX/LINUX也有很多)以及很多黑客工具的流行,特别是后者,导致成为初级黑客的技术门槛大大降低。这意味着一些大学生甚至中学生,以及稍有计算机基础的人,都可能下载并使用黑客工具来尝试攻击他们感兴趣的目标,例如公司同事的电脑、邻居的电脑、或者任何随手扫描到的IP地址。这些初级黑客(或称为script kiddie)固然攻击手段有限,但他们手中的黑客工具却都是高级黑客编写的,具有很强的杀伤力。最近几年出现的以尼姆达为代表一批蠕虫,更是把这些黑客工具自动化了,它们包含了病毒、特洛伊木马、漏洞攻击等技术,自动攻击、自我复制、自动传播,简直就是一个自动化的黑客机器人。

举一个最简单的例子:用Google找一个黑客工具站点,下载一个IP地址扫描器,然后用IP扫描器扫描几个网段,就能看到很多不设防的机器,有些机器甚至把整个C盘D盘都共享出来,你可以在里面翻箱倒柜,找到许多私人文件。相信不少人都这样干过,大多数人其实并没有什么恶意,只是因为这一切都太容易了,好奇心促使他们这样做。但是如果怀有恶意的人借此拿到了别人的银行帐号和密码、教师编写的考试题、公司签订的合同、商业计划、财务档案、工资表等,会造成什么后果可想而知,这就是媒体宣传的所谓高科技犯罪,简直太容易了。

我敢说,任何一网的机器都至少被攻击过一次。只是大多数攻击都没有成功,并且被攻击者没有察觉。不管你的机器安全地存活了多久,你永远不能保证下一分钟它仍然是安全的。在网络安全问题上,过于自信的人将会受到惩罚。

3.6 系统的稳定决定于管理员

本文强调系统管理员在安全上所起的作用。系统管理员除了要保证系统的正常运行,在安全管理上,应该对系统进行仔细配置、定期检查维护、及时安装补丁。一个优秀的系统,碰上一个不合格的系统管理员,也就变成了一个愚蠢的系统。一个愚蠢的系统,进行了仔细配置并安装了所有补丁之后,也能变得稳固可靠。

举例1:SQL蠕虫(Slammer)

北京时间2003年1月25日下午两点左右,一个SQL蠕虫(Slammer)开始发作,在之后的短短5个小时之内传遍全球,导致亚洲和欧洲的互联网瘫痪,全球的互联网变得极其缓慢,造成难以估计的损失。SQL蠕虫利用微软的SQL Server 2000的一个漏洞进行快速传播,并同时进行拒绝服务攻击(DoS)。虽然SQL Server 2000的那个漏洞是个愚蠢的漏洞,但微软早在2002年7月就发现了这个漏洞并了相应的补丁,同时这个补丁也被包含在SQL Server 2000 SP3中。也就是说,SQL蠕虫利用的实际上是一个早已被发现的旧的漏洞,如果SQL Server的管理员们能够及时安装这个补丁,就不会受到SQL蠕虫的攻击。灾难过后,安全领域的专家在反思的时候,不再象以前那样严厉的批评微软的产品漏洞,而是更多的批评那些懒惰的SQL Server管理员们。

举例2:“冲击波”病毒(Blaster)

北京时间2003年8月11日,正如一些研究人员预料的那样,一种利用Windows安全漏洞的蠕虫已经开始传播。安全专家认为,这种蠕虫所利用的Windows安全漏洞简直是到处都有。

研究人员之所以能够预料,是因为微软在7月16日就了一套修补该漏洞的软件程序。然而结果全球到底有多少部电脑遭到Blaster的感染呢?预估数据不一,从35万至超过100万皆有。

其实,以前曾经兴风作浪的蠕虫如红色代码、蓝色代码、尼姆达等,利用的都是旧的漏洞,及时打了补丁的服务器就不会有危险。只有懒惰的管理员的服务器才会被感染。有的服务器竟然在安装了Windows NT/2000之后没有做任何设置也没有安装任何补丁就接入了互联网,这样的服务器简直就是蠕虫和黑客的天堂。

系统管理员的工作是一项长期的工作,不能有一天的松懈。不管你做了多长时间的合格的系统管理员,忽然某一天一时糊涂做一个愚蠢的操作,同样会导致系统的安全问题甚至灾难。系统管理员只能尽量的努力和小心,勤劳的打补丁,经常检查服务器设置。网络安全上就是这样,你永远也无法知道自己的服务器是否是真正安全的,一直没有问题并不代表服务器是稳固的,只有出了问题的时候,你才能确定服务器是不安全的,但这时候已经晚了。换句话说,所谓安全都是相对的,绝对的安全是不存在的。系统管理员所做的,就是给攻击者尽量多的制造麻烦,使攻击者要达到目的必须花费大量的时间和精力(即成本),这又是另外一个问题了,就是安全的成本问题,以后再讨论。

3.7 绝对的安全是不存在的

这实际上是一个哲学观点,任何事情都不是绝对的,安全也是这样。绝对的安全是不存在的。

从安全成本角度看,安全强度越高,成本越高,而且是非线性增长,假设我们花费了100万元(用于诸如购置设备、人员培训、日常维护)使系统达到了一个比较高的安全强度,我们希望安全强度再提高10%,这时就可能需要再花费200万元;如果在此基础上再提高1%,可能需要花费1000万元才行。此时已经花费了1000+200+100=1300万元,但企业的总资产(包括我们要保护的数据)才500万元,显然是得不偿失了。

在物理学上有很多可以类比的例子,比如光速。根据相对论,质量不等于0的物体的速度越快,需要的能量越高,而且是非线性增长,要达到光速,则需要的能量为无穷大。

况且安全问题还不像光速问题那么简单,如安全和方便是矛盾的,安全强度越高,可用性就可能越低,有的时候我们不得不降低一些安全强度以换取可用性,这时逃避不掉的矛盾。最安全的系统是拔掉网线,拔掉电源,放到纽约联邦储备银行的地下金库中的电脑,显然这样的系统可用性为0。

所以,要追求绝对的安全,最后的结果就是花费了天文数字的成本,得到了很高的安全强度和很差的可用性。即使这样,也不能说是绝对安全。绝对的安全是不存在的,我们要做的,就是在安全和成本之间平衡,在安全和可用性之间平衡。

3.8 安全和方便是矛盾的

安全和使用的方便往往是矛盾的,有些时候,我们必须为了安全舍弃一些方便性。

我们在设置一些网络安全策略的时候,总会听到一些用户抱怨“使用不方便”。例如某公司使用了一套身份认证技术,要求用户在输入用户名和密码后再输入一串加密器产生的认证码(或者把加密器插到机器的USB口上),用户会觉得这给他们进入系统造成了障碍,太麻烦了。这种想法是很正常的,但却是必须纠正的。如我在前面几个观点中阐述过的,安全不是单纯的技术问题,它还包含对用户的教育,为了安全,我们必须牺牲一些方便性。因为安全和方便是矛盾的。

上一篇:基于XSLT的动态搜索技术研究与实现 下一篇:建立数据中心,设计统一数据平台