, ~# ]/ g3 q) ?( G0 s 1 B2 o, J4 r' @. `' l* _像find和secure这样的程序称为检查程序,它们搜索文件系统,寻找出SUID/ 6 x8 G$ `6 D4 z' O) K$ {2 G
/ A7 ~0 O- v+ d+ q- T7 J* V
SGID文件,设备文件,任何人可写的系统文件,设有口令的登录用户,具有相同UID # n# [8 f F$ h! @ [/ [; G$ x0 u+ D# g S h* y& _
/GID的用户等等. ! `3 ]& ~4 O ~: [, | p' [ T7 \6 g- r8 n5 V' l; R( A% A0 _, Z2 @3 _# ?
# c! z9 c: t* g2 K: C' G# t; l(1)记帐 ; w; L9 s+ _) L7 a |4 X
( P5 L# s7 W- ^
UNIX记帐软件包可用作安全检查工具,除最后登录时间的记录外,记帐系 0 C7 s" N, D! `9 E- h+ {" _9 S7 i 0 f* M5 I1 L: m h+ c统还能保存全天运行的所有进程的完整记录,对于一个进程所存贮的信息包括 / R. r& T7 {9 |# s- A" E
) l* Z3 N1 S# l0 V! l5 a% r( G
UID,命令名,进程开始执行与结束的时间,CPU时间和实际消耗的时间,该进程 / d# e9 Z& E. x* m8 v2 d; R* |
" I$ `5 ^6 _1 `5 g
是否是root进程,这将有助于系统管理员了解系统中的用户在干什么.acctcom & R9 \2 n f: H3 Z/ [1 F) O+ R' L9 O1 w3 H. { M3 C# Q
命令可以列出一天的帐目表.有明,系统中有多个记帐数据文件,记帐信息保存 9 ^+ a1 [+ S0 t5 f# |5 \6 ~& [/ v
在文件/usr/adm/pacct*中,/usr/adm/pacct是当前记录文件,/usr/adm/pacctn 4 e& }% Q* ]$ w# [( G
( A p0 Z! j4 e是以前的记帐文件(n为整型数).若有若干个记帐文件要查看,可在acctcom命 , r+ x, x/ h" h# C1 S& m; M + Z4 Z9 W+ d: x" T% v i, P* h: F令中指定文件名: acctcom /usr/adm/pacct? /usr/adm/pacct " z3 O. @2 [$ Q$ }. a - H" }0 `9 g' V P# P# ?要检查的问题的其中之一是:在acctcom的输出中查找一个用户过多的登 + y6 E4 R" W! m3 F- d- f% G% y3 g: K # B R1 n5 C7 U' v7 R% [录过程,若有,则说明可能有人一遍遍地尝试登录,猜测口令,企图非法进入系 ! |4 ^$ Z/ W/ l: p1 l
$ B) K8 Z- a1 e$ P C! n" @, I统.此外,还应查看root进程,除了系统管理员用su命令从终端进入root,系统 3 G- n, B' m7 M# U- A 3 y3 x% E% U p2 ^) W启动,系统停止时间,以及由init(通常init只启动getty,login,登录shell), * @8 T: k% i+ t1 O V. i
: j. i) e. h" r r6 N, E+ a
cron启动的进程和具有root SUID许可的命令外,不应当有任何root进程. 8 r8 A+ E$ u3 G: t4 H
0 z+ P) R; S+ j# I. r7 z
由记帐系统也可获得有关每个用户的CPU利用率,运行的进程数等统计数 2 {: c$ @8 h( v' p2 r/ ^, b 0 }6 L8 n# F) G* [据. 0 d( e9 R4 F! j/ k" p
; o# m5 L" Y# x* n0 E+ i # |/ m/ K b- U$ [2 ?! e$ l$ [, v: X- O' q$ I" u7 ~# N
(2)其它检查命令 ! c* i+ y M0 L; S8 |# B
' }# }4 t" p" C" a5 X$ `$ U*du:报告在层次目录结构(当前工作目录或指定目录起)中各目录占用的 " c( S- S6 N, F0 R' I7 D$ m+ P" W/ @( H: L! q3 I1 r6 m. L! K' R
磁盘块数.可用于检查用户对文件系统的使用情况. 1 q+ c1 }, V8 o p3 D/ ^, f0 P! s- z2 k$ k& v) L; c*df:报告整个文件系统当前的空间使用情况.可用于合理调整磁盘空间的 9 Y6 }) F# d7 l: [) e% R
+ H! S/ C" ^4 h+ b B, [使用和管理. 3 s* j, P! G y
) w9 z* }: i* T6 r*ps:检查当前系统中正在运行的所有进程.对于用了大量CPU时间的进程, % e. T) S9 Z1 K: L0 J2 z* p" E% U" D& Q* n
同时运行了许多进程的用户,运行了很长时间但用了很少CPU时间的 & i1 C8 l6 ]6 [% S5 V p5 W
) Y! S2 D) I M2 y j9 N
用户进程应当深入检查.还可以查出运行了一个无限制循环的后台进 # ^/ B( \" k# Z0 @ 6 _+ j; o" @0 l7 I# j0 i) ^程的用户,未注销户头就关终端的用户(一般发生在直接连线的终端). 1 K5 _, d J5 O: e* { M6 b 2 l. W, p7 ]$ z! X- J- S( T. z8 {*wh可以告诉系统管理员系统中工作的进展情况等等许多信息,检查用 7 {, A5 L: O( K+ x ) B( R8 P4 S: G户的登录时间,登录终端. ) Q" S% D( t+ J7 v9 c5 z+ J+ `
1 m ]5 C$ W D S; W0 q
*su:每当用户试图使用su命令进入系统用户时,命令将在/usr/adm/sulog # j: `# p# R, r0 D% y* Q# v. U
5 `% ~" o9 h* L' T. |& W* Z5 D8 `文件中写一条信息,若该文件记录了大量试图用su进入root的无效操 ( j& J2 g7 h2 C: [0 J, V% H% W; f! ]' t; W/ V* C
作信息,则表明了可能有人企图破译root口令. ) R) Y0 S$ G/ K. A
+ ]( {! K* x7 c*login:在一些系统中,login程序记录了无效的登录企图(若本系统的 . i/ W% d1 t4 \8 C, p8 Q
1 z t# ~& Z# C* s/ p+ J# ]) A3 {
login程序不做这项工作而系统中有login源程序,则应修改login). * c6 M( V" T F# v2 U; N- b
1 l6 o# q V5 A
每天总有少量的无效登录,若无效登录的次数突然增加了两倍,则表 6 J8 k2 D* {4 n' u6 U1 a
& q) N2 z$ l# O8 C% ]& [
明可能有人企图通过猜测登录名和口令,非法进入系统. : u4 i, D& w ~: L" V
; k6 P* }- v$ J H$ I& {/ ?
这里最重要的一点是:系统管理没越熟悉自己的用户和用户的工作习惯, 8 `$ U- H) f& u" b" }6 N0 O D6 U# {; v4 P. Q9 e& O/ l, h3 b就越能快速发现系统中任何不寻常的事件,而不寻常的事件意味着系统已被人 7 h; F7 y- l& m3 W" r7 U , I Q( K* v+ u5 ?8 B+ ^窃密. % y6 A; }2 o+ `/ a2 p# B
) f4 L Q( }6 J- s $ v2 P4 e* v9 l6 I 9 z3 y) C! Q7 k2 q* P* p9 t" J0 T(3)安全检查程序的问题 4 K S( R, s' l( e8 g0 y, f $ ~; Q, } t) @% w, D& f3 W关于以上的检查方法的一个警告,若有诱骗,则这些方法中没有几个能防 . m ~! }. M3 t0 k8 D5 Q
+ J1 d4 k( c9 _0 a0 P y
诱骗.如find命令,如果碰到路径名长于256个字符的文件或含有多于200个文 ! z- h9 v$ `; v# \* u! o% A( j% ?- g W: A4 \/ g$ x6 k/ Y
件的目录,将放弃处理该文件或目录,用户就有可能利用建立多层目录结构或 $ }* Z% N$ V6 b3 d) i6 K. X% k8 {; ]7 g9 F& H7 B6 t7 ^% m
大目录隐藏SUID程序,使其逃避检查(但find命令会给出一个错误信息,系统管 % {$ K" V. z3 J# x: x1 A- c ! U& A8 Y9 R- F" F$ Z8 G8 n. h理员应手工检查这些目录和文件).也可用ncheck命令搜索文件系统,但它没有 : m3 W& h+ B; R7 s $ P H* w. d2 e: e7 zfind命令指定搜索哪种文件的功能. ' e3 D* {, Z5 B, r/ G( W, S* ]1 f4 \) l _5 q
如果定期存取.profile文件,则检查久未登录用户的方法就不奏效了.而 " e7 C6 l2 R, z. u' A9 R
, T, t' @9 P- z( \7 n
用户用su命令时,除非用参数-,否则su不读用户的.profile. % s0 C C) F8 ]9 E% H; W8 G2 i4 s) e, Z: s8 n& ~: \4 `8 O+ K) {
有三种方法可寻找久未登录的帐户: ) J+ |9 d9 p* O, r* x4 J- I t8 n/ j* A' V) r8 X
. UNIX记帐系统在文件/usr/adm/acct/sum/login中为每个用户保留了最 ) N/ l% j7 ~# U" z/ n. k
* m# Z+ q: u( f& s- r9 ?
后一次登录日期.用这个文件的好处是,该文件由系统维护,所以可完全 # v% @7 h+ d5 m( g. E5 U" S' m
, k0 D C+ }" t: N0 O/ m肯定登录日期是准确的.缺点是必须在系统上运行记帐程序以更新 & z B% `. _2 C" k/ x