Unix系统管理员安全手册( 七 )


*du:报告在层次目录结构(当前工作目录或指定目录起)中各目录占用的磁盘块数.可用于检查用户对文件系统的使用情况.
*df:报告整个文件系统当前的空间使用情况.可用于合理调整磁盘空间的使用和管理.
*ps:检查当前系统中正在运行的所有进程.对于用了大量CPU时间的进程, 同时运行了许多进程的用户,运行了很长时间但用了很少CPU时间的用户进程应当深入检查.还可以查出运行了一个无限制循环的后台进程的用户,未注销户头就关终端的用户(一般发生在直接连线的终端).
*who:可以告诉系统管理员系统中工作的进展情况等等许多信息,检查用户的登录时间,登录终端.
*su:每当用户试图使用su命令进入系统用户时,命令将在/usr/adm/sulog文件中写一条信息,若该文件记录了大量试图用su进入root的无效操作信息,则表明了可能有人企图破译root口令.
*login:在一些系统中,login程序记录了无效的登录企图(若本系统的login程序不做这项工作而系统中有login源程序,则应修改login).每天总有少量的无效登录,若无效登录的次数突然增加了两倍,则表明可能有人企图通过猜测登录名和口令,非法进入系统.(3)安全检查程序的问题
关于以上的检查方法的一个警告,若有诱骗,则这些方法中没有几个能防诱骗.如find命令,如果碰到路径名长于256个字符的文件或含有多于200个文件的目录,将放弃处理该文件或目录,用户就有可能利用建立多层目录结构或大目录隐藏SUID程序,使其逃避检查(但find命令会给出一个错误信息,系统管理员应手工检查这些目录和文件).也可用ncheck命令搜索文件系统,但它没有find命令指定搜索哪种文件的功能.如果定期存取.profile文件,则检查久未登录用户的方法就不奏效了.而 用户用su命令时,除非用参数-,否则su不读用户的.profile.
有三种方法可寻找久未登录的帐户:
. UNIX记帐系统在文件/usr/adm/acct/sum/login中为每个用户保留了最后一次登录日期.用这个文件的好处是,该文件由系统维护,所以可完全肯定登录日期是准确的.缺点是必须在系统上运行记帐程序以更新loginlog文件,如果在清晨(午夜后)运行记帐程序,一天的登录日期可能就被清除了.
. /etc/passwd文件中的口令时效域将能告诉系统管理员,用户的口令是否过期了,若过期,则意味着自过期以来,户头再未被用过.这一方法的好处在于系统记录了久未用的户头,检查过程简单,且不需要记帐系统所需要的磁盘资源,缺点是也许系统管理员不想在系统上设置口令时效,而且这一方法仅在口令的最大有效期(只有几周)才是准确的.
. 系统管理员可以写一个程序,每天(和重新引导系统时)扫描/etc/wtmp,自己保留下用户最后登录时间记录,这一方法的好处是不需要记帐程序,并且时间准确,缺点是要自己写程序.以上任何方法都可和/usr/adm/sulog文件结合起来,查出由login或su登录户头的最后登录时间.如果有人存心破坏系统安全,第一件要做的事就是寻找检查程序.破坏者将修改检查程序,使其不能报告任何异常事件,也可能停止系统记帐,删除记帐文件,使系统管理员不能发现破坏者干了些什么.这里最重要的一点是:系统管理没越熟悉自己的用户和用户的工作习惯,就越能快速发现系统中任何不寻常的事件,而不寻常的事件意味着系统已被人窃密.(4)系统泄密后怎么办?
发现有人已经破坏了系统安全的时候,这时系统管理员首先应做的是面对肇事用户.如果该用户所做的事不是蓄意的,而且公司没有关于"破坏安全"的规章,也未造成损坏,则系统管理员只需清理系统,并留心该用户一段时间.如果该用户造成了某些损坏,则应当报告有关人士,并且应尽可能地将系统恢复到原来的状态.如果肇事者是非授权用户,那就得做最坏的假设了:肇事者已设法成为root且本系统的文件和程序已经泄密了.系统管理员应当想法查出谁是肇事者,他造成了什么损坏?还应当对整个文件做一次全面的检查,并不只是检查SUID和SGID,设备文件.如果系统安全被一个敌对的用户破坏了,应当采用下面的步骤:

推荐阅读