QQ在线服务: 风舞残阳风舞残阳 年满19岁年满19岁 小罗小罗 晴天晴天 心雨心雨 叮叮肉叮叮肉 小周小周 小童小童 小破孩小破孩 遥望当年遥望当年

用户导购指南

水货IBM笔记本电脑报价

行货IBM笔记本电脑报价

IBM服务器报价

IBM笔记本电脑配件报价

本周水货IBM笔记本电脑特价

IBM笔记本电脑驱动下载

水货IBM笔记本电脑验机流程

水货IBM笔记本电脑保修政策

IBM笔记本电脑FRU查询

IBM笔记本电脑常见问题

IBM笔记本电脑使用手册

笔记本电脑验机软件

论坛积分使用说明

水货IBM笔记本电脑异地购机流程

笔记本电脑购机经历及现场

贵宾申请入口

贵宾用户FTP入口

查看笔记本配置

水货APPLE苹果笔记本电脑报价

 
发新话题
打印

[linux教程] 用RPM校验文件

用RPM校验文件

用RPM校验文件) S0 m4 I6 c' D: Z& h6 n8 L  O
2006-06-015 p# `( Y6 t' s9 k4 u- `

5 X* z0 z1 ?) a! }
1 E! Z0 y& I, q  v) C有些事情对我们系统管理员来说至少发生过一次,就是你感觉到你的系统好像不对劲' u6 T- J, h& p' B2 t7 E9 U; F
,开始怀疑有人已经突破了你的防御。确定此事是否发生的途径之一就是检查系统文
( a" l- b  z3 X/ ]* E8 b# e件有没有变化,你需要安装TripWire或者其他审计工具来帮忙。
2 r4 ]# n7 Q0 Z+ y* Y% d! l# F0 }9 z% H; [
幸运的是,RedHat的程序员们开发了一个工具,叫作RedHatPackageManager,简
2 p: L5 Z) F' E( X称为RPM。在RedHat的Linux系统中是默认存在的。
. {0 Q* k  O" A9 H0 c: ^* J6 s$ i" h7 [) N2 g4 v1 x
RPM能为我做些什么?$ K; X; g8 v' ?3 z
RPM是一个强大的工具,用来安装、升级和校验RedHat系统上的软件包。它的校验功能可以用来确认文件是否被修改或覆盖,这正是本文所要讨论的。除了文件的大小和时间戳,RPM还能检查文件的信息文摘或MD5签名。
! U; O4 k  T! ~* w$ O, e6 P$ Q
, n  V: L9 Q" O3 `. ]1 M在RFC1321中有MD5的详细描述。简单的说,MD5根据文件的内容用算法产生一个唯一的128位签名,用任何方法改变文件都会导致签名改变。尽管人们一直在讨论修改文件后能保持签名不变的理论可能性,但截止到目前还没有人能够做到。所以在文件使用前后各作一次MD5检查,能够99.9999%的保证文件没有改变。
8 R7 v) R( @2 l+ n) y  ^
6 d' {& \* T1 \0 B  O如何使用RPM来检查文件?% K) }4 X0 w& ^
有一些RPM的参数你需要注意。第一个是“-V”,它检查与某一RPM包相关所有文件的
9 K( J/ k+ U; g/ d完整性。语法为:
4 k" Q$ ^9 E0 G' U' c6 `" G  S$ E3 u$ [3 r
rpm-Vpackage_name_to_verify  M5 L. c' _" b% @& u

5 j: L* A. Y: d* h比如系统上运行了sendmail,通过以下命令检查所有相关文件的完整性:
  u( u, F8 C; q, J! T/ h" v
5 B5 V0 D  q: E% nrpm-Vsendmail% x* G6 \- a% q9 ]9 K
0 f. V4 U6 {/ m( k. p' B, Q2 b: a
输出看来是这样的:
6 z8 F  m( G2 q4 R9 b  P; @2 ?' m+ }, }, ~
[root@fubar/root]#rpm-Vsendmail
& T3 E+ V. n- R% Q: F+ D( ^  LS.5....Tc/etc/aliases
& W. w9 k* U+ `missing/etc/mail/ip_allow: P5 T  ^- z& v; H
S.5....Tc/etc/mail/relay_allow; C2 Q* m2 r8 L( c6 H% o
S.5....Tc/etc/sendmail.cf
& f* r, t8 t; L3 B7 D! gS.5....Tc/etc/sendmail.cw2 U' ^: T5 S3 N
S.5....T/usr/sbin/sendmail
4 ~' F; n. T  t* a( f2 j! u3 NS.5....T/var/log/sendmail.st% q+ J: b7 M- }
[root@fubar/root]#
# U5 p+ r/ D  J  l5 o
' e$ l, a$ n1 V. f只有校验失败的文件才被列出,没有列出的文件应该是完好无损的。左边给出了为什
$ @2 }3 p) ^8 [, D8 [9 _么校验失败的原因,具体解释如下:
' D  @( t) r! z( I- {. a& R# S* R7 e- i; D# |# ~4 O) J
S=大小改变0 T" E3 Q) T% F4 U  r0 v* G1 e
M=权限改变
. E" \% i& L& A1 ~5 ~' h1 R5 d5=MD5改变
3 J( x" u/ P, |6 ~" pL=连接改变
4 u8 x6 G: L% @9 nD=设备改变
. P: M; R& B: q7 y- P* s( G" tU=用户改变& q8 c7 y+ u1 T/ e
G=组改变- u7 N$ B8 n9 k
T=日期和时间改变
% p7 a: j/ }8 Rmissing=文件丢失( U& y6 C% B' |' v" f/ ?7 C$ S

' s* d6 r7 J. b, Z% d! z, ?从上面的输出可见,文件aliases,relay_allow,sendmail.cf和sendmail.cw的大( I2 R" H/ \/ C
小、时间日期和MD5发生了改变。由于它们是配置文件,应该没什么关系。但是/usr/
8 ~" k9 }) [0 j" M; Kbin/sendmail的改变就要引起注意了,它是一个监听在25端口的可执行文件,用来接/ [: g% i- @: @$ q1 n
受信件。除非你升级了sendmail,否则它不应该校验失败,很明显有人修改或者覆盖, t2 L- R$ k# r/ l4 }% z/ S
了原来的sendmail文件,可能带有木马或者后门。: o! H7 ?; G$ P

& [  x+ n5 i) _# [" W) p输出还显示ip_allow文件被删除或者被改名。这是用来检查和控制SPAM的一个文件,3 p+ Q( e. j) ], j# {. q  Q
它的丢失某种程度上表明相关的二进制文件可能被修改。
5 `/ t8 ~; a+ {1 p7 ?9 n: z. B  _# p& Q' Y
当观察RPM输出的时候,在检查日期时间和文件大小的同时,要特别注意MD5是否变化,入侵者经常修改或覆盖某些文件来隐藏他们的踪迹。
( z7 p$ }; @8 u
. S! F  R8 m" R; F9 `5 ?挨个检查软件包很费时间,用“-a”选项可以一次性检查所有RPM包:# V: V( W9 L% K, C9 P

- ^# ^' R; V' l: Q' Lrpm-Va%26gt;/root/rpm_chk.txt%26
: X9 }6 E, h; v
, s/ I. V/ k3 v. Z# ?! u这条命令让RPM检查服务器上安装的RPM包,结果输出到rpm_chk.txt文件,最后的可选项“%26”表示命令在后台运行,给出shell提示符可以作其他事情。
$ B$ B( ]! a+ i) v
7 h& ]- Q) l* e+ x最后一个技巧,当你想要检查某个文件而不知道它属于哪个RPM包,可以用“-qf”选3 Z. ]( n0 G: F8 U
项查看哪个软件包安装了此文件:
& m# [6 F6 s; _1 N! T9 l6 x* _% C' b0 J) l
[root@fubar/root]#rpm-qf/usr/sbin/sendmail
  D9 b  @- t3 R& f! Fsendmail-8.8.7-20* @1 @) M+ X* |( [) @% E# _  L6 F) V& ]
[root@fubar/root]#
$ E# ~0 _6 @+ {8 d0 ~+ I/ M  h; h/ E$ F& \; f2 ?5 _, K8 f, E
这表明此sendmail文件是sendmail-8.8.7-20RPM包的一部分。如果一个文件没有关联" Y$ A8 K/ T& u
的RPM包,输出大概是这样的:
2 P4 F$ i: k4 K' w7 v+ M
+ h6 `; v1 c, ^6 E% N# H[root@fubar/root]#rpm-qf/sbin/.vile_stuff9 I) A0 Q2 y) G# P& q6 A, `( `0 m9 f
file/sbin/.vile_stuffisnotownedbyanypackage( q/ h& T3 A. I. N) V6 e# V
[root@fubar/root]#: i5 V; H; D& a& ]& j* t9 W, l
% x5 S6 `5 ]4 U+ z
小心你系统上运行的不能被校验的程序!
+ l' R4 o: T# ]
( j) H1 n! p) D+ C如何开始?# O2 F7 [+ X* s* W+ x& a* M3 h# S
首先,你必须有root权限来运行RPM。当以普通用户身份来运行RPM校验时,它的输出信息是不正确的,因为普通用户对某些文件可能都没有read权限。这意味着只有root才能检查整个系统文件的完整性。4 b9 {6 H. j7 A* R7 {9 F

0 @0 r! u% F6 R  x; y& c# RRPM二进制文件在/bin目录下,它的数据文件在/var/lib/rpm下。% d8 D4 \8 ^4 r4 M# r2 i

0 C4 |6 M5 R7 n8 l" t' I$ S最安全的方法是在服务器连到Internet之前,把这些数据文件和RPM二进制文件保存到8 i( j! L- P& L+ `+ A
软盘或CD上,这能够保证你的工具自身是安全的。5 U+ m' }$ h7 [" L/ {3 c2 c

6 y/ x1 B, w* p, d第一件事是检查/var/lib/rpm,这些数据文件的日期和时间应该和安装系统当时的情: O- r; t7 `9 B, n" a
况一样,如果你发现日期不对,就要小心了。8 Q; L2 o7 a3 N' y! P
( o0 P. p8 o; c+ q) k3 m. |
其次,我们可以使用RPM来校验自身的完整性:
/ T2 L+ ]& p  J. C$ B# x) ~$ g7 |6 L* j# E8 y
[root@fubar/root]#rpm-Vrpm% p! t- }& Q( ?# ^5 E5 a% B% \9 n
[root@fubar/root]#7 h( Z" a" ^7 ~- {+ J% P( }$ g  {

0 t6 b3 |8 o/ M( K7 Q7 l0 Q没有输出表示RPM应该没有什么问题。但这不是绝对的,因为二进制文件如果本身可疑就很难说。所以要尽可能使用CD上的工具,如果你没有比较安全的工具,用RPM校验自身在一般情况下也足够了。; f7 J& w' Q( |3 }- ~
0 o0 N3 X+ _  d  @
现在我们知道RPM自身没有问题了,对整个系统作个检查:
  @& h9 A" ?5 K- n/ Q5 }) G6 Q7 K: A& i2 d: E; B
rpm-Va%26gt;/root/rpm_chk.txt%26
& F2 p2 C, p. z7 j$ |) O' d
9 M# S( P) S* w" A* l" U4 N一个简单的技巧就是定期检查整个系统,然后比较不同时期的rpm_chk.txt,从而发现
$ w) l4 ^1 n2 {哪些不正常的文件改动。( M5 {7 B* Q4 b* U: _; b+ j

0 Q8 k& g( u% `  Z+ N4 `/ P总结
1 ?" k& v1 w7 w( {尽管RPM不是专门设计用来审计文件的,但它可以帮你不少忙。目前RedHatLinux各, G  Y# U' u) u8 x" A& s
个版本中都默认自带RPM,这意味着你完成RedHatLinux安装以后,就可以使用RPM了,同时MD5提供了一种高精确度的文件校验方法。唯一注意的是要保证RPM自身和它所有数据文件的完整性,以防止入侵者修改它们来隐藏踪迹。
(※本文搜集自:重庆未来科技 http://www.wlkj.net 重庆IBM笔记本电脑、重庆IBM水货笔记本电脑、重庆苹果笔记本电脑、重庆IBM服务器专卖)

TOP

******请登陆论坛查看内容******

(※本文搜集自:重庆未来科技 http://www.wlkj.net 重庆IBM笔记本电脑、重庆IBM水货笔记本电脑、重庆苹果笔记本电脑、重庆IBM服务器专卖)
本帖最近评分记录
  • hotjava 鲜花 +3 恶意灌水 2008-7-5 17:03
  • hotjava 砖头 +3 恶意灌水 2008-7-5 17:03
这是赤果果的灌水呐
What good would wings be
if you couldn't feel wind on your face

TOP

发新话题