来源:www.cncfan.com | 2006-1-11 | (有3060人读过)
第一部分 Unix历史与发展
1.1 UNIX简介 UNIX 已有数十年的历史,在这期间,它的改变即使没有上亿次,也有数百万次了,有成千上万的个人和公司实现了上千种不同的版本,有上百万系统管理员在从微型嵌入式系统到超级计算机上都安装过它。无可争论,没有两个实际的UNIX操作系统是完全相同的。 UNIX”一词是属于Open Group的一个商标,该组织是一个要求符号得到正确归属的国际协会。在这数十年当中,该标识已经被冲淡到没有具体含义。虽然如此,Open Group仍发布了“The Single UNIX Specification”,这可以在http://www.UNIX-ystems.org/online. html上看到。 “Unix”是双关语,表示名字Multics,它最初被写作“Unics”,表示UNiplexed Information and Computing System。“Unix”和“UNIX”在如今都被广泛使用。曾经有一段时间,Dennis Ritchie试图宣布用小写版本,因为“UNIX”不是开头字母组成。 许多运行Linux等类似UNIX系统的人认为他们运行的是UNIX。正式UNIX系统和非正式UNIX系统通常被认为属于一类----不论是书中、媒介、网上还是社会公认。 按照UNIX FAQ的定义,UNIX是“一个用C语言编写的操作系统,它有层次文件系统并集成了文件和设备I/O,其系统调用接口包括fork ( )和pipe ( )等服务,用户界面包括cc、troff、grep、awk等工具和一个被选择的shell”。可以再加一些,UNIX为多任务提供一致的方式,并内置有创建、同步和终止进程的操作,它可在不同种类计算机间进行移。
1.2 UNIX发展与历史 1969年,Ken Thompson、Dennis Ritchie和其他一些人在AT&T贝尔实验室开始进行一个“little-used PDP-7 in a corner”的工作,它后来成为UNIX。10年里,UNIX在AT&T的发展经历了数个版本。V4(1974)用C语言重写,这成为系统间操作系统可移植性的一个里程碑。V6(1975)第一次在贝尔实验室以外使用,成为加州大学伯克利分校开发的第一个UNIX版本的基础。 贝尔实验室继续在UNIX上工作到80年代,有1983年的System V(“五”,不是字母)版本和1989年的System V,Release 4(缩写为SVR4)版本。同时,加利福尼亚大学的程序员改动了AT&T发布的源代码,引发了许多主要论题。Berkeley Standard Distribution(BSD)成为第2个主要“UNIX”版本。1984年的BSD 4.2版在大学和公司计算部门中得到广泛应用,它的一些特征被吸收到SVR4中。 从90年代开始,AT&T的源代码许可证创造了市场的繁荣,不同开发者开发了数百种UNIX版本。AT&T在1993年把UNIX产业卖给了Novell, Novell两年后又把它卖给了Santa Cruz Operation。同时,UNIX商标被转让给X/Open协会,X/Open协会后来成为了Open Group。 当UNIX的经营从一个实体到另一个实体传递时,几个长期的开发开始收获果实。传统上,要得到一个运行的BSD系统,用户需要从AT&T得到源代码许可证。但到90年代早期,伯克利的开发者在BSD上做了许多工作,使原始的AT&T源代码大部分被改动了。后续的程序员,从William和Lynne Jolitz开始在网络分布环境中开发BSD,后来在1992年成为386BSD 0.1版。这个最初的“免费源代码”BSD具有三个分支,即:Net BSD、Free BSD和Open BSD,都以BSD 4.4为基础。 1984年,程序员Richard Stallman开始开发来源于UNIX的免费GNU(GNU Not UNIX)。到90年代早期,GNU项目出现了几个编程里程碑,包括GNU C库和Bourne Again Shell (bash)的发行。整个系统除了一个关键因素即工作内核外基本完成。 接下来是芬兰赫尔辛基大学的学生Linus Torvalds。Linus看到了一个叫作Minix的小型UNIX系统,觉得自己能做得更好。1991年秋天,他发行了一个叫“Linux”的免费软件内核的源代码—是他的姓和Minux的组合。到1994年,Linus和一个内核开发小组发行了Linux 1.0版。Linus和朋友们有一个免费内核,Stallman和朋友们拥有一个免费的UNIX克隆系统的其余部分。人们把Linux内核和GNU合在一起组成一个完整的免费系统,该系统被称为“Linux”,尽管Stallman更愿意取名为“GNU/Linux System”[6]。有几种不同类别的GNU/Linux:一些可以被公司用来支持商业使用,如Red Hat、Caldera Systems和S.U.S.E;其他如Debian GNU/Linux,更接近于最初的免费软件概念。 Linux现已发展到内核2.2版。Linux能在几种不同体系结构的芯片上运行,并已经被各界接纳或支持。其支持者有惠普、硅谷图像和Sun等有较长历史的UNIX供应商,还有康柏和Dell等PC供应商以及Oracle和IBM等主要软件供应商。或许最具讽刺的是,微软承认无所不在的免费软件的竞争性威胁,但它不愿或不能公开自己的软件源代码。 后来微软开始推出Windows NT (Windows 2000)。到90年代末,许多供应商开始放弃UNIX服务器平台而转向Windows NT。例如Silicon Graphics 公司已决定把Intel硬件和NT作为未来的图形平台
第二部分 Unix典型安全隐患
2.1 RPC守护进程程序的错误使入侵者可以直接获得root权限对Unix威胁最大可以说就是rpc上面的漏洞,远程过程调用(Remote Procedure Call)允许一台计算机上的程序去执行另一台计算机上的程序。它们广泛的应用在各种网络服务中,如文件共享服务NFS。有很多漏洞是RPC本身的缺陷导致的,它们正不停的涌现出来。有很明显的证据表明,1999年末2000年初大规模的分布式拒绝服务攻击中,很多被作为攻击跳板的牺牲品就是因为存在RPC漏洞。在Solar Sunrise事件期间,对美国陆军广为人知的成功攻击就是因为在数百台国防部的系统中找到了一个RPC漏洞。 2.2 一些应用的远程漏洞 远程漏洞可以使远程攻击者在只对开放了有漏洞服务的应用利用的情况下,就可以得到一些权限或者root权限。 例如:BIND程序存在的问题,利用nxt,qinv,in.named可直接得到root权限BIND(Berkeley Internet Name Domain)软件包是域名服务(DNS)的一个应用最广泛的实现软件--我们所有人都通过它来定位Internet上的系统,只需知道域名(如www.cnns.net)而不用知道IP地址,由此可体会它的重要性--这使它成为最受欢迎的攻击目标。 2.3 本地漏洞 本地漏洞虽然没有上面两种漏洞那么严重,但是他也是评估系统安全与否的一个重要因素,它可以使权限地的系统用户来提升自己的系统权限,或者使一个得到了一些权限的远程攻击者,扩大自己的战果,提升权限。 例如,ff.core缓冲区溢出漏洞,一个普通用户只要执行一个简单的脚本,就可以令缓冲区溢出从而的到一个root shell。 2.4 暴露系统信息 严格的说这不是漏洞,但是他核你的系统安全相关。举例子来说,finger暴露了系统合法用户名,默认shell等等信息,这就可以被攻击者利用起来猜密码。再如某个软件的版本号暴露,就会令攻击者,针对此版本来进行攻击,这就使攻击者更容易的入侵的系统。
|