当前位置学海荡舟 -> 电脑乐园 -> XteamLinux

XteamLinux    

XteamLinux
什么是XteamLinux
安装XteamLinux
XteamLinux系统配置
KDE介绍
中文环境
KDE下的应用程序
Linux基础命令
XteamLinux系统管理
系统引导与关闭
管理用户
备份数据
管理文件系统
软件安装与系统升级
系统安全控制
Internet下的使用
附录

  本教程由冲浪平台(中国)软件技术有限公司提供。


请您留言
谈谈您的看法

 

8.6 系统安全控制

8.6 系统安全控制

    8.6.1 安全管理概要
    8.6.2 安全检查
        8.6.2.1 记帐
        8.6.2.2 其它检查命令
        8.6.2.3 系统泄密后怎么办? 
    8.6.4 系统管理员的安全意识
        8.6.4.1 保持系统管理员个人的登录安全
        8.6.4.2 保持系统安全要点
    8.6.5 用户安全要点

    安全控制对于一个Linux系统来说非常重要,这一章我们将从系统管理员和系统用户两个角度,讨论有关系统安全的几个常见问题。

    8.6.1 安全管理概要

    系统的安全管理主要分为四个方面:

    (1)防止未授权存取:这是计算机安全最重要的问题,即未被授权使用系统的人进入系统。用户意识、良好的口令管理(由系统管理员和用户双方配合)、登录活动记录和报告、用户和网络活动的周期检查、这些都是防止未授权存取的关键。

    (2)防止泄密:这也是计算机安全的一个重要问题。防止已授权或未授权的用户存取相互的重要信息。文件系统查帐,su登录和报告,用户意识,加密都是防止泄密的关键。

    (3)防止用户拒绝系统的管理:这一方面的安全应由操作系统来完成。一个系统不应被一个有意试图使用过多资源的用户损害。不幸的是,UNIX不能很好地限制用户对资源的使用,一个用户能够使用文件系统的整个磁盘空间,而UNIX基本不能阻止用户这样做。系统管理员最好用PS命令,记帐程序df和du 周期地检查系统。查出过多占用CUP的进程和大量占用磁盘的文件。

    (4)防止丢失系统的完整性:这一安全方面与一个好系统管理员的实际工作(例如:周期地备份文件系统,系统崩溃后运行fsck检查,修复文件系统,当有新用户时,检测该用户是否可能使系统崩溃的软件)和保持一个可靠的操作系统有关(即用户不能经常性地使系统崩溃)。

    8.6.2 安全检查

    像find和secure这样的程序称为检查程序,它们搜索文件系统,寻找出SUID/ SGID文件,设备文件,任何人可写的系统文件,设有口令的登录用户,具有相同UID /GID的用户等等。

8.6.2.1 记帐

    UNIX记帐软件包可用作安全检查工具,除最后登录时间的记录外,记帐系统还能保存全天运行的所有进程的完整记录,对于一个进程所存贮的信息包括UID,命令名,进程开始执行与结束的时间,CPU时间和实际消耗的时间,该进程是否是root进程,这将有助于系统管理员了解系统中的用户在干什么。

    acctcom 命令可以列出一天的帐目表。系统中有多个记帐数据文件,记帐信息保存在文件/usr/adm/pacct*中,/usr/adm/pacct是当前记录文件,/usr/adm/pacctn 是以前的记帐文件(n为整型数)。若有若干个记帐文件要查看,可在acctcom命令中指定文件名: acctcom /usr/adm/pacct? /usr/adm/pacct 要检查的其中一个问题是:在acctcom的输出中查找一个用户过多的登录过程,若有,则说明可能有人一遍遍地尝试登录,猜测口令,企图非法进入系统。此外,还应查看root进程,除了系统管理员用su命令从终端进入root,系统启动,系统停止时间,以及由init(通常init只启动getty,login,登录shell),cron启动的进程和具有root SUID许可的命令外,不应当有任何root进程。由记帐系统也可获得有关每个用户的CPU利用率,运行的进程数等统计数据。

8.6.2.2 其它检查命令

    *du:报告在层次目录结构(当前工作目录或指定目录起)中各目录占用的磁盘块数,可用于检查用户对文件系统的使用情况。

    *df:报告整个文件系统当前的空间使用情况,可用于合理调整磁盘空间的使用和管理。

    *ps:检查当前系统中正在运行的所有进程。对于用了大量CPU时间的进程,同时运行了许多进程的用户,运行了很长时间但用了很少CPU时间的用户进程应当深入检查。还可以查出运行了一个无限制循环的后台进程的用户,未注销户头就关终端的用户(一般发生在直接连线的终端)。

    *who:可以告诉系统管理员系统中工作的进展情况等等许多信息,检查用户的登录时间,登录终端。

    *su:每当用户试图使用su命令进入系统用户时,命令将在/usr/adm/sulog文件中写一条信息,若该文件记录了大量试图用su进入root的无效操作信息,则表明了可能有人企图破译root口令。

    *login:在一些系统中,login程序记录了无效的登录企图。每天总有少量的无效登录,若无效登录的次数突然增加了两倍,则表明可能有人企图通过猜测登录名和口令,非法进入系统。

    这里最重要的一点是:系统管理员越熟悉自己的用户和用户的工作习惯,就越能快速发现系统中任何不寻常的事件,而不寻常的事件很可能意味着系统已被人窃密。

        8.6.2.3 系统泄密后怎么办? 

    发现有人已经破坏了系统安全的时候,这时系统管理员首先应做的是面对肇事用户。如果该用户所做的事不是蓄意的,而且公司没有关于"破坏安全"的规章,也未造成损坏,则系统管理员只需清理系统,并留心该用户一段时间。如果该用户造成了某些损坏,则应当报告有关人士,并且应尽可能地将系统恢复到原来的状态。

    如果肇事者是非授权用户,那就得做最坏的假设了:肇事者已设法成为root 且本系统的文件和程序已经泄密了。系统管理员应当想法查出谁是肇事者,他造成了什么损坏?还应当对整个文件做一次全面的检查,并不只是检查SUID、SGID及设备文件。如果系统安全被一个敌对的用户破坏了,应当采用下面的步骤:

    * 关系统,然后重新引导,不要进入多用户方式,进入单用户方式。

    * 安装含有本系统原始Linux版本的软盘。

    * 将/bin,/usr/bin,/etc,/usr/lib中的文件拷贝到一个暂存目录中。

    * 将暂存目录中所有文件的校验和(用原始版本的sum程序拷贝做校验和,不要用/bin中的sum程序做)与系统中所有对就的文件的校验和进行比较,如果有任何差别,要查清差别产生的原因。如果两个校验和不同,是由于安装了新版本的程序,确认是否的确是安装了新版本程序。如果不能找出校验和不同的原因,用暂存目录中的命令替换系统中的原有命令。

    * 在确认系统中的命令还未被窜改之前,不要用系统中原命令。用暂存目录中的shell,并将PATH设置为仅在暂存目录中搜索命令。

    * 根据暂存目录中所有系统命令的存取许可,检查系统中所有命令的存取许可情况。

    * 检查所有系统目录的存取许可,如果用了perms,检查permlist文件是否被篡改过。

    * 如果系统UNIX(Linux)的校验和不同于原版的校验和,并且系统管理员从未修改过核心,则应当认为,一个非法者"很能干",从暂存缓冲区重新装入系统。系统管理员可以从逐步增加的文件系统备份中恢复用户的文件,但是在检查备份中的"有趣"文件之前,不能做文件恢复。

    * 改变系统中的所有口令,通知用户他们的口令已改变,应找系统管理员得到新口令。

    * 当用户来要新口令时,告诉用户发生了一次安全事故,他们应查看自己的文件和目录是否潜伏着危害(如SUID文件,特洛依木马,任何人可写的目录),并报告系统管理员任何异乎寻常的情况。

    * 设法查清安全破坏是如何发生的?如果没有肇事者说明,这也许是不可能弄清的。如果能发现肇事者如何进入系统,设法堵住这个安全漏洞。

    第一次安装系统时,可以将shell,sum命令,所有文件的校验和存放在安全的介质上(带,软盘,硬盘和任何可以卸下并锁起来的介质)。于是不必再从原版系统盘上重新装入文件,可以安装备份介质,装入shell和sum,将存在上面的校验和与系统中文件的校验和进行比较。系统管理员也许想自己写一个计算校验和的程序,破坏者将不能知道该程序的算法,如果将该程序及校验和保存在盘上,这一方法的保密问题就减小到一个物理的安全问题,即只需将它锁起来。

    8.6.3 小系统安全

    任何足够小,运行于办公室的Linux系统就是小系统。根据安全观点,使用小系统特别值得注意的有以下几点:

    * 小系统的用户比大系统的用户少,通常是很小一组用户,使系统管理员能熟悉每个人,安全问题可以直接地面对面处理。

    * 由于小Linux系统管理更简单,可能只需要一个系统管理员,因而维护系统安全的责任只有一个人担负。

    * 如果既是用户又是系统管理员,就不能花大量时间考虑系统安全。

    * 如果自己拥有系统并且是系统管理员,就可能有权直接将违反规定的用户从系统中删除,而没有几个大系统的管理员能有这种权利。

    * 如果自己是系统的唯一用户,则将既是用户又是管理员,维护系统安全的任务就很简单了,只须确保系统中所有登录户头的口令是好的。

    * 如果不能将系统锁起来,就把敏感的数据存放在软盘上,把软盘锁起来。

    * 即使系统中有若干个用户,但如果系统的终端之间是有线连接,并且用户们保持门上锁,则系统也将是安全的,至少在本组用户内是安全的。

    * 小系统通常有可移动的介质(软盘),可用mount命令将其安装到系统上,提供一种安全的方法让用户自己在系统上安装软盘,否则系统管理员要一天到晚地干这些琐碎的安装盘事务。允许用户安装软盘的通常做法是给用户一个SUID程序,该程序基本完成与系统管理员安装用户软盘同样的操作,首先检查软盘上有无SUID/SGID/设备文件,若发现任何奇怪的文件,则拒绝安装该软盘。

    * 小系统的系统管理员在使用Linux系统方面常不如大系统管理员有经验,而安全地管理系统需要一定的使用系统的知识。

    8.6.4 系统管理员的安全意识

        8.6.4.1 保持系统管理员个人的登录安全

    若系统管理员的登录口令泄密了,则窃密者离窃取root只有一步之遥了,因为系统管理员经常作为root运行,窃密者非法进入到系统管理员的户头后,将用特洛依木马替换系统管理员的某些程序,系统管理员将作为root运行这些已被替换的程序。正是因为这个原因,在Linux系统中,管理员的户头最常受到攻击。即使su命令通常要在任何都不可读的文件中记录所有想成为root的企图,还可用记帐数据或ps命令识别运行su命令的用户。正因为如此,系统管理员作为 root运行程序时应当特别小心,因为最微小的疏忽也可能"沉船"。下列一些指导规则可使系统管理员驾驶一艘“坚固的船”:

    * 不要作为root或以自己的登录户头运行其他用户的程序,首先用su命令进入用户的户头。

    * 决不要把当前工作目录排在PATH路径表的前边,那样实际是招引特洛依木马。当系统管理员用su命令进入root时,他的PATH将会改变,就让PATH保持这样,以避免特洛依木马的侵入。

    * 敲入/bin/su执行su命令。若有su源码,将其改成必须用全路径名运行(即su要确认argv[0]的头一个字符是"/"才运行)。随着时间的推移,用户和管理员将养成敲/bin/su的习惯。

    * 不要未注销户头就离开终端,特别是作为root用户时更不能这样。当系统管理员作为root用户时,命令提示符是"$",这个提示符对某些人来说可能是个红灯标志。

    * 不允许root在除控制台外的任何终端登录(这是login的编译时的选项),如果没有login源码,就将登录名root改成别的名,使破坏者不能在root登录名下猜测各种可能的口令,从而非法进入root的户头。

    * 经常改变root的口令。

    * 确认su命令记下了想运行su企图的记录/usr/adm/sulog,该记录文件的许可方式是600,并属root所有。这是非法者喜欢选择来替换成特洛依木马的文件。

    * 不要让某人作为root运行,即使是几分钟,即使是系统管理员在一旁注视着也不行!

    8.6.4.2 保持系统安全要点

    * 考虑系统中一些关键的薄弱环节:

    a. 系统是否有MODEM?电话号码是否公布?

    b. 系统是否连接到网络?还有什么系统也连接到该网络?

    c. 系统管理员是否使用来源不可靠的程序?

    d. 系统管理员是否将重要信息放在系统中?

    e. 系统的用户是熟悉系统的还是新手?

    f. 用户是否很重视安全?

    g. 用户的管理部门是否重视安全?

    * 保持系统文件安全的完整性。检查所有系统文件的存取许可,任何具有SUID许可的程序都是非法者想偷换的选择对象。

    * 要特别注意设备文件的存取许可。

    * 要审查用户目录中具有系统ID/系统小组的SUID/SGID许可的文件。

    * 在未检查用户的文件系统的SUID/SGID程序和设备文件之前,不要安装用户的文件系统。

    * 将磁盘的备份存放在安全的地方。

    * 设置口令时效,如果能存取UNIX的源码,将加密口令和信息移到仅对root可读的文件中,并修改系统的口令处理子程序。这样可增加口令的安全。修改passwd,使passwd能删去口令打头和末尾的数字,然后根据spell词典和/etc/passwd中用户的个人信息,检查用户的新口令,也检查用户新口令中子串等于登录名的情况。如果新口令是spell词典中的单词,或/etc/passwd 中的入口项的某项值,或是登录名的子串,passwd将不允许用户改变口令。

    * 记录本系统的用户及其授权使用的系统。

    * 查出久未使用的登录户头,并取消该户头。

    * 确保没有无口令的登录户头。

    * 启动记帐系统。

    * 查出不寻常的系统使用情况,如大量的占用磁盘,大量的使用CPU时间,大量的进程,大量的使用su的企图,大量无效的登录,大量的到某一系统的网络传输,奇怪的uucp请求。

    * 修改shell,使其等待了一定时间而无任务时终止运行。

    * 修改login,使其打印出用户登录的最后时间,三次无效登录后,将通讯线挂起,以便系统管理员能检查出是否有人试图非法进入系统。确保login不让root在除控制台外的任何地方登录。

    * 修改su,使得只有root能以过期口令通过su进入某一户头。

    * 当安装来源不可靠的软件时,要检查源码和makefile文件,查看特殊的子程序调用或命令。

    * 即使是安装来源可靠的软件,也要检查是否有SUID(SGID)程序,确认这些许可的确是必要的。如果可能,不要让这些程序具有系统ID(或组)的SUID (SGID)许可,而应该建立一个新用户(或给)供该软件运行。

    * 如果系统在办公室中,门应上锁,将重要数据保存在软盘上或带上,并锁起来。

    * 将secure,perms和任何其它做安全检查的shell程序存取许可置为仅执行,更好的是将这些shell程序存于可拆卸的介质上。

    * 记住,只要系统有任何人都可调用的拨号线,系统就不可能真正的安全。系统管理员可以很好地防止系统受到偶然的破坏。但是那些有耐心,有计划,知道自己在干什么的破坏者,对系统直接的有预谋的攻击却常常能成功。

    * 如果系统管理员认为系统已经泄密,则应当设法查出肇事者。若肇事者是本系统的用户,与用户的管理部门联系,并检查该用户的文件,查找任何可疑的文件,然后对该用户的登录小心地监督几个星期。如果肇事者不是本系统的用户,可让本公司采取合法的措施,并要求所有的用户改变口令,让用户知道出了安全事故,用户们应当检查自己的文件是否有被窜改的迹象。

    如果系统管理员认为系统软件已被更改了,就应当从原版软盘上重装所有系统软件,保持系统安全比道歉更好。

    8.6.5 用户安全要点

    (1)保持口令的安全

    * 不要将口令写下来。

    * 不要将口令存于终端功能键或MODEM的字符串存储器中。

    * 不要选取显而易见的信息作口令。

    * 不要让别人知道。

    * 不要交替使用两个口令。

    * 不要在不同系统上使用同一口令。

    * 不要让人看见自己在输入口令。

    (2)不要让自己的文件或目录可被他人写。

    * 如果不信任本组用户,umask设置为022。

    * 确保自己的。profile除自己外对他人都不可读写。

    * 暂存目录最好不用于存放重要文件。

    * 确保HOME目录对任何人不可写。

    * uucp传输的文件应加密,并尽快私人化。

    (3)若不想要其他用户读自己的文件或目录,就要使自己的文件和目录不允许任何人读。

    * umask设置为006/007。

    * 若不允许同组用户存取自己的文件和目录,umask设置为077。

    * 暂存文件按当前umask设置,存放重要数据到暂存文件的程序,就被写成能确保暂存文件对其他用户不可读。

    * 确保HOME目录对每个用户不可读。

    (4)不要写SUID/SGID程序。

    (5)小心地拷贝和移文件。

    * cp拷贝文件时,记住目的文件的许可方式将和文件相同,包括SUID/SGID许可在内,如目的文件已存在,则目的文件的存取许可和所有者均不变。

    * mv移文件时,记住目的文件的许可方式将和文件相同,包括SUID/SGID许可在内,若在同一文件系统内移文件,目的文件的所有者和小组都不变,否则,目的文件的所有者和小组将设置成本用户的有效UID和GID。

    * 小心使用cpio命令,它能复盖不在本用户当前目录结构中的文件,可用t选项首先列出要被拷贝的文件。

    (6)删除一个SUID/SGID程序时,先检查该程序的链接数,如有多个链,则将存取许可方式改为000,然后再删除该程序,或先写空该程序再删除,也可将该程序的i结点号给系统管理员去查找其他链。

    (7)用crypt加密不愿让任何用户(包括超级用户)看的文件。

    * 不要将关键词做为命令变量。

    * 用ed -x或vi -x编辑加密文件。

    (8)除了信任的用户外,不要运行其他用户的程序。

    (9)在自己的PATH中,将系统目录放在前面。

    (10)不要离开自己登录的终端。

    (11)若有智能终端,当心来自其他用户,包括write命令,mail命令和其他用户文件的信息中有换码序列。

    (12)用CTRL+D或exit退出后,在断开与系统的联接前等待看到login:提示。

    (13)注意cu版本。

    * 不要用cu调用安全性更强的系统。

    * 除非确信cu不会被诱骗去发送文件,否则不要用cu调用安全性较弱的系统。

                                 

下一节  

请您留言
谈谈您的看法