📄 00000018.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: ruster (尘埃*星辰*领悟), 信区: Linux <BR>标 题: 第十章 安全性 <BR>发信站: BBS 水木清华站 (Thu Dec 21 13:54:10 2000) <BR> <BR>第10章 安全性问题 <BR> <BR> 本章要点: <BR> <BR> 本章介绍Linux系统安全的一些基础知识。 <BR> <BR> 本章具体包括以下内容。 <BR> <BR> 安全性基本概念 <BR> <BR> 对系统的访问控制 <BR> <BR> 加密和解密 <BR> <BR> 常见的攻击手段和反措施 <BR> <BR> 安全性的网络资源 <BR> <BR> 10.1 安全性问题概述 <BR> <BR> 安全性的问题总是被媒体的炒作弄的沸沸扬扬。可惜本书不是小说,无法提供一些有 <BR>趣的故事给你。相反,本节的内容可能是相当乏味的。如果你能看下去,我对你的耐心 <BR>表示感谢,如果不能,我也不准备道歉。 <BR> <BR> 10.1.1 安全性级别 <BR> <BR> 我们首先要考虑一下什么是我们关心的安全性。如果你是系统管理员,你必须考虑某 <BR>个用户的数据是否会被别的用户看到,比如说,没有人喜欢自己的私人电子邮件被别人 <BR>张贴到大学食堂的门口,更不用说被别人领走银行里的存款了。 <BR> <BR> 另外一种安全性相关的问题是如何保证系统能够正确运行。如果在每天晚上9:00-11: <BR>00大学女生宿舍的电话交换机停机会怎么样?厂商可能会被愤怒的大学生砸扁。 <BR> <BR> 许多人总是对安全性的内容存有浪漫的想象,或者大惊小怪。事实上,由于Linux是一 <BR>种UNIX系统,这就决定了你永远也不可能得到真正的安全。许多商业化的UNIX或者其它 <BR>类型的操作系统都以自己的安全性进行标榜,特别是,在一段时间以前,关于某几种操 <BR>作系统的“C2级”安全性的宣传充斥了各种IT媒体。那么,所谓的C2级别的安全性是什 <BR>么呢? <BR> <BR> 所谓安全性级别,是美国国防部制订的用来评估一个系统的安全性的基本分类,共有 <BR> ABCD 四级, 每个级别里面还可以有子级别,例如C级里面有C1和C2两个级别。级别之间 <BR>的关系是A 级最高, D 级最低,其中 B,C 两级又分两个子级。各级别的具体定义大致如 <BR>下: <BR> <BR> D :标准的DOS属于这一级别。简单地说,这个级别的系统就是一个单用户操作系统, <BR>任何坐在终端前面的人都可以随意破坏数据的完整性。当然,Windows 95 和CP/M之类的 <BR>东西也属于 D 级。 <BR> <BR> C :这个级别开始引入了简单的身份控制能力,它被分为 C1 C2 两级: <BR> <BR> C1 :1. 所有的用户都被分组; <BR> <BR> 2. 对于每个用户,必须登记后才能使用系统; <BR> <BR> 3. 系统必须记录每个用户的登记; <BR> <BR> 4. 系统必须对可能破坏自身的操作发出警告. <BR> <BR> C2 :在 C1 的基础上,增加以下几条要求: <BR> <BR> 1. 所有的对象都有且仅有一个物主; <BR> <BR> 2. 对于每个试图访问对象的操作,都必须检验权限,对于不符合权限要求的访 <BR>问,必须予以拒绝; <BR> <BR> 3. 有且仅有物主和物主指定的用户可以更改权限; <BR> <BR> 4. 管理员可以取得对象的所有权,但不能归还; <BR> <BR> 5. 系统必须保证自身不能被管理员以外的用户改变; <BR> <BR> 6. 系统必须有能力对所有的操作进行记录,并且只有管理员和由管理员指定 <BR>的用户可以访问该记录. <BR> <BR> B :这个级别进一步强化了身份控制的能力,与C级类似,它被分为 B1 B2 两级: <BR> <BR> B1 :在 C2 的基础上,增加以下几条要求: <BR> <BR> 1. 不同的组成员不能访问对方创建的对象,但管理员许可的除外; <BR> <BR> 2. 管理员不能取得对象的所有权. <BR> <BR> B2 :在 B1 的基础上,增加以下几条要求: <BR> <BR> 1. 所有的用户都被授予一个安全等级; <BR> <BR> 2. 安全等级较低的用户不能访问高等级用户创建的对象. <BR> <BR> A :这个级别简直就是一个“理论值”,据说目前商品化的系统还没有一个是A级的。 <BR>它在 B2 的基础上,增加以下要求: <BR> <BR> 系统的整体安全策略一经建立便不能修改. <BR> <BR> 看了安全级别的定义,是不是觉得很失望?这个安全级别的定义仅仅是对身份控制的 <BR>一种强化,而且这个定义是一个典型的学院派定义(不愧是美国政府的定义),大而无 <BR>当。更糟糕的是它的奇怪的C1、C2分类,容易看出,这里的分类效果是把正常的UNIX, <BR>比如Solaris,BSD刚好给划分到了两个级别中间(我们姑且不说Linux)。 <BR> <BR> 不管怎么说,让我们来考虑一下这个安全性级别。很明显,如果我们硬要对某种操作 <BR>系统定义安全性,那么大部分UNIX都潜在地是C2安全性的。如果某个系统没有达到C2安 <BR>全性,有两个原因,要么系统管理员没有正确地对系统进行配置,要么是由于一些UNIX <BR>的固有后门,如setuid和setgid。当然这句话可以反过来说,C2安全性仅仅是一种普通 <BR>的UNIX经过适当配置应该达到的安全性,也就意味着C2安全性其实并不是什么“安全” <BR>。如果按照挑剔一点的眼光来看,B2级别才是核心应用可以接受的起点。不过,首先是 <BR>没有哪种UNIX系统能够达到B2级别,其次是B2级别意味着这个系统难以想象地不方便, <BR>想一想系统管理员无权控制一个文件是什么样的后果! <BR> <BR> 按照一般的说法,Windows NT和SCO UNIX是C2级别的。据说有个版本的solaris也是C <BR>2安全级别的。你可能会奇怪为什么只有这样少的系统“具有C2安全级别”。回答是,这 <BR>些系统得到了所谓的“C2安全性认证”。这个认证具有许多不可思议的地方,首先是它 <BR>可能要消耗数年的时间(windows NT只有3.5版本通过了C2安全认证,4.0和2000都没有 <BR>,因为等不起),在这个过程中相应的软件系统通常早已过时;其次是C2安全性认证只 <BR>授予“一个计算机系统”而不是“一个操作系统”,换句话说,这个认证只是对软硬件 <BR>都已经安装完毕的一台计算机。正因为如此,对于通用的软件,尤其是在x86上运行的操 <BR>作系统,C2安全性认证没有多少实际意义。 <BR> <BR> 关于C2安全性还有一个问题,如同你知道的那样,TCP/IP协议本质上是没有身份控制 <BR>的,你不可能在网上的每个数据包里面加上发送者的身份认证信息吧。即使是windows <BR>NT 3.5,所谓的C2安全性也仅仅是对于没有联网的一台计算机。有什么连在Internet上 <BR>的系统通过了安全级别验证吗?我没有查过………… <BR> <BR> 10.1.2 你安全吗? <BR> <BR> 从上面的解释中,你可以看到,让许多人津津乐道的C2安全性其实仅仅是大部分UNIX <BR>的共性。幸运的是,在大部分UNIX系统应用中,C2安全性尽管并不可靠,但是确实比没 <BR>有要好。然而,即使一个系统是C2级安全性的,这能保证它真的能对用户的身份进行控 <BR>制吗? <BR> <BR> 在UNIX中,我们可以明确地回答这个问题,不能。因为任何软件都会有错误,会存在 <BR>一些漏洞或者设计上的后门。这些漏洞和后门才是我们真正要面对的主要问题,它和系 <BR>统是什么级别的安全性其实无关。举个简单的例子,通过主板的CMOS Setup程序可以对 <BR>你的PC加上密码,这样可以防止别的用户趁你不在的时候使用你的计算机。问题是,许 <BR>多早期的BIOS里面都有通用密码,输入通用密码就可以解除你设置的密码,那么这样的 <BR>密码还有什么实际意义呢? <BR> <BR> UNIX系统总是被这样的问题所困扰。举个例子来说,在最早的一些Sun OS上的http服 <BR>务器中有一个名字叫phf的cgi程序,由于某种原因,这个程序被设置为可以用来从远程 <BR>执行系统上的程序。特别是,某些系统的http服务程序被设置为以root身份运行,结果 <BR>是,很多服务器就这样被远程的破坏者轻易地摧毁或者侵入(直到一年以前,我还在某 <BR>些单位的服务器上看到过这个phf被允许执行)。对于这种性质的问题,C2安全性能够帮 <BR>你什么呢? <BR> <BR> 不幸的是,厂商对于这样的问题往往抱着“眼不见为净”的态度,并且认为,只要这 <BR>些漏洞不被广泛流传,就不必理会它们。许多厂商甚至希望用户什么也不知道,这样他 <BR>们就不会发现系统中存在的问题。对于这种厂商,你除了相信他们会送给你正确的东西 <BR>之外就只能祈求上帝保佑了。 <BR> <BR> 作为一个UNIX系统的管理员,你必须不断地关注你使用的程序,不停地修补新发现的 <BR>漏洞或是堵死厂商留下的后门。如果你对此感到厌倦,你总有一天会看到你的系统被侵 <BR>入或者摧毁。没有人能对你负责,毕竟UNIX本来并不是为安全可靠而设计的。如果你这 <BR>样做了,那么你的运气会好一点,或许你直到改行还没有碰到系统被恶意侵入,或者即 <BR>使被侵入也不是你的责任。 <BR> <BR> 关于Linux和作为它基点的GNU,我们有一些需要额外说明的东西,Linux是作为开放源 <BR>代码的软件发行的,我们前面提到的大部分其它产品,如sendmail,Apache也是如此。 <BR>这意味着你在使用一个大家都很清楚的产品,任何人只要愿意就可以得到你的源代码, <BR>并且研究里面有什么样的漏洞。这种特性是一柄双刃剑。首先,它使得每个人都有可能 <BR>发现你的系统有什么漏洞,这样漏洞被发现的机会肯定大大增加;反过来,由于源代码 <BR>是开放的,因此人们只要知道了漏洞的性质,就很容易做出对应的补丁程序。这种特性 <BR>到底好不好,那只有你自己去判断。 <BR> <BR> 一般来说,由于UNIX类型系统中的全能root账号的存在,试图攻击系统的企图大部分 <BR>是关于如何非法地取得root账号的。UNIX本身没有什么防御机制,任何一个用户只要得 <BR>到了密码就可以成为root用户。在Linux中,添加了一些安全性认证机制,但是它们是否 <BR>可靠也只能靠你自己去判断。 <BR> <BR> 另外一种常见的攻击是用某种方式使系统瘫痪。在笔者写这本书之前不久,各大网络 <BR>服务商纷纷受到了来自网络的攻击,攻击的目标是使其服务器瘫痪。在后面我们将会看 <BR>到,这一类攻击由于TCP/IP的性质实际几乎是不可能真正防范的。 <BR> <BR> 当面对攻击的时候,详细的系统日志是发现和处理攻击的重要信息来源。因此,一旦 <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -