精通 RPM 之校验篇_检验篇_检测篇
文章目錄
- 一、校驗介紹
- 二、參考示例
- (一)校驗某個已安裝的軟件包的所有文件
- (一)校驗系統中所有已安裝的軟件包
- (二)校驗含有指定文件的軟件包
- (三)校驗指定類別的軟件包
- (四)校驗指定包裹文件
- (五)不執行校驗腳本程序
- (六)不檢查依賴
- (七)忽略丟失文件的錯誤
- (八)忽略MD5檢查和的錯誤
一、校驗介紹
使用命令 rpm 的選項 -V 可以校驗軟件包,此校驗功能可以用來確認文件是否被修改或覆蓋,其實就是檢查文件屬性是否有改動,命令格式如下:
rpm -V [校驗選項1 校驗選項2...] [軟件包標識或包裹文件...]文件屬性包括屬主、屬組、權限、MD5 簽名、大小、主設備號、從設備號、符號連接及最后修改時間 9 項內容,其中每一項改變 RPM 都會發現。這 9 項屬性 RPM 并非都校驗,因為文件類型不同,其中某些屬性會沒有意義,RPM 因而也不會去檢查。
校驗時若發現文件丟失,RPM 將輸出"missing 文件名"。若有屬性方面錯誤,RPM 將輸出如此格式的信息:SM5DLUGT c 文件名。
各個字母的含義如下:
| S | 表示文件大小改變 |
| M | 表示權限改變 |
| 5 | 表示 MD5 簽名改變,也就是內容改變了 |
| D | 表示主從設備號改變 |
| L | 表示符號連接改變 |
| U | 表示屬主改變 |
| G | 表示屬組改變 |
| T | 表示最后修改時間改變 |
| c | 表示文件屬于配置文件 |
如果文件某屬性正常,則對應的位置會顯示字符 .,否則的話將顯示對應的字母,如下所示:
[root@htlwk0001host ~]# rpm -V bash S.5....T /etc/bashrc本例校驗 bash 包,只有校驗失敗的文件才被列出,結果發現 /etc/bashrc 文件有問題,輸出的屬性中出現符號 S ,這表明文件大小被改變了,出現符號 S 表明文件內容被改變了,出現符號 T 表明文件的最后修改時間改變了。通過這些屬性字符,我們可以清楚地知道文件哪些屬性改變了。
格式中的 c 字符僅當校驗文件為配置文件時才輸出。如 lze 包中有 /etc/inputme.def 配置文件,如果我們人為改變其最后修改時間,RPM 會發現什么呢?我們看下:
[root@htlwk0001host ~]# touch /etc/inputme.def [root@htlwk0001host ~]# rpm -V lze .......T c /etc/inputme.def [root@htlwk0001host ~]#說明:本例中用 touch 命令改變包 lze 的配置文件 inputme.def 的最后修改時間,然后校驗包,結 RPM 發現了這個情況(以 T 表示出來),我們還看到了 c 字符,說明 /etc/inputme.def 是個配置文件。
二、參考示例
(一)校驗某個已安裝的軟件包的所有文件
比如系統上運行了 sendmail,檢查所有相關文件的完整性:
[root@fubar/root]# rpm -V sendmail S.5....T c /etc/aliases missing /etc/mail/ip_allow S.5....T c /etc/mail/relay_allow S.5....T c /etc/sendmail.cf S.5....T c /etc/sendmail.cw S.5....T /usr/sbin/sendmail S.5....T /var/log/sendmail.st [root@fubar/root]#從上面的輸出可見,文件 aliases,relay_allow,sendmail.cf 和 sendmail.cw 的大小、MD5簽名、最后修改時間發生了改變。由于它們是配置文件,應該沒什么關系。但是 /usr/sbin/sendmail 的改變就要引起注意了,它是一個監聽在 25 端口的可執行文件,用來接受信件。除非你升級了 sendmail,否則它不應該校驗失敗,很明顯有人修改或者覆蓋了原來的 sendmail 文件,可能帶有木馬或者后門。
輸出還顯示 ip_allow 文件被刪除或者被改名。這是用來檢查和控制 SPAM 的一個文件,它的丟失某種程度上表明相關的二進制文件可能被修改。
在查看校驗輸出結果時,要特別留意 MD5 是否變化,入侵者經常修改或覆蓋某些文件來隱藏他們的蹤跡。
(一)校驗系統中所有已安裝的軟件包
配合選項 -a,指示 RPM 校驗系統中所有已安裝的軟件包,示例如下:
[root@htlwk0001host ~]# rpm -V -a S.5....T c /etc/profile .M....G. /usr/man/man1 missing/etc/rc.d/rc3.d/S85httpd [root@htlwk0001host ~]#本例校驗后,RPM 發現:
使用選項 & 讓命令在后臺運行,示例如下所示:
rpm -Va > /root/rpm_chk.txt &注:上述命令讓 RPM 檢查服務器上已安裝的所有 RPM 包,將結果輸出到 rpm_chk.txt 文件,最后的可選項 “&” 表示命令在后臺運行,給出shell 提示符可以作其他事情。
(二)校驗含有指定文件的軟件包
使用選項 -f 或者 --file 校驗含有指定文件的軟件包。如果用戶僅知道某個文件,但忘了它所在的軟件包,又想校驗這個包時,可用此選項。示例如下:
# rpm -V -f /bin/cp /bin/bash SM5....T /bin/ls S.5....T /etc/bashrc #說明:本例校驗含 /bin/cp 和 /bin/bash 文件的軟件包,發現有兩個文件(/bin/ls 與 /etc/bashrc)改變了。
(三)校驗指定類別的軟件包
選項 -g 或 --group 用于校驗已安裝的指定類別的軟件包。關于軟件的類別,請參見<<精通 RPM 之查詢篇>>。
例如,校驗 Applications/Editors 與 Applications/Text 類別的軟件包:
# rpm -V -g Applications/Editors Applications/Text .......T c /etc/inputme.def #(四)校驗指定包裹文件
如果用戶想校驗某個 RPM 軟件包所含文件在系統中的屬性是否正常,則可用選項 -p 指定該包裹文件進行校驗,如下例:
# rpm -V -p fileutils-4.0-3.i386.rpm SM5....T /bin/ls #說明:本例中 RPM 發現 fileutils 包裹中的 /bin/ls 文件與當前系統中的 /bin/ls 文件有所不同(S大小改變了、M權限改變了、5內容改變了、T修改時間改變了)。
(五)不執行校驗腳本程序
有些 RPM 軟件包中內置有校驗腳本程序(verifyscript),它執行一些特殊的檢查。當用戶不想執行這類腳本程序時,需用選項 --noscripts。參考示例如下所示:
# rpm -V -v XFree86-libs Looking for /usr/X11R6/lib in /etc/ld.so.conf... found # rpm -V -v --noscripts XFree86-libs #說明:本例中第一個校驗命令所輸出的內容為 XFree86-libs 包內的校驗腳本程序的輸出;第二個命令中用了選項 --noscripts,這使得校驗腳本程序沒有執行,因而也沒有什么輸出了。
(六)不檢查依賴
RPM 校驗軟件包時,默認情況是檢查依賴,因為依賴是否正常關系到一個軟件能否可靠運行。校驗時選用 --nodeps 選項用于指示 RPM 不檢查依賴。注意:本選項主要針對軟件包制作者,除非必要,不要使用此選項。
我們可以通過校驗時用 -vv 選項輸出調試信息,從而可以看到是否檢查依賴的區別:
# rpm -V -vv lze-6.02-1 D: opening database mode 0x0 in //var/lib/rpm/ D: record number 7253720 D:requires: /bin/sh satisfied by db file lists. D:requires: ld-linux.so.2 satisfied by db provides. D:requires: libc.so.6 satisfied by db provides. # libc.so.6 依賴于 db provides D:requires: libc.so.6(GLIBC_2.0) satisfied by db provides. D:requires: libc.so.6(GLIBC_2.1) satisfied by db provides. .......T c /etc/inputme.def # rpm -V -vv --nodeps lze-6.02-1 D: opening database mode 0x0 in //var/lib/rpm/ D: record number 7253720 .......T c /etc/inputme.def #注:有 requires 的行(háng)為檢查依賴,以 D: 開頭的行(háng)為調試輸出信息。
(七)忽略丟失文件的錯誤
默認情況下,RPM 在校驗時若發現文件丟失,會報出"missing 文件名"的錯誤。如果用戶想忽略這方面的錯誤,請用 --nofiles 選項。請看下面的示例:
# rpm -V file missing /usr/man/man1/file.1 # rpm -V ——nofiles file #注:使用此選項后RPM沒有再報出文件丟失的錯誤。
(八)忽略MD5檢查和的錯誤
選項 --nomd5 用于指示 RPM 忽略文件內容的改變,即忽略MD5檢查和錯誤。此選項常用于校驗日志類型的文件(此類文件內容并不重要,且經常變化)。
請看下面的例子:
# rpm -V bash S.5....T /etc/bashrc # rpm -V ——nomd5 bash S......T /etc/bashrc #說明:例子中校驗 bash 包,不用 --nomd5 選項時,輸出有5(MD5檢查和),表示 /etc/bashrc 內容變化了,而采用 --nomd5 選項時,相應位置輸出點(.),表示文件內容正常了。
總結
以上是生活随笔為你收集整理的精通 RPM 之校验篇_检验篇_检测篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DDoS攻击的肉鸡(反射型和肉鸡DDoS
- 下一篇: 唐山房管局备案查询系统(唐山房管局备案查