rpm另類用法加固linux安全
rpm是
red hat package manager
的縮寫即
red hat
軟體管理器。它是乙個開放的包管理軟體,由
red hat
公司所開發和維護,可以在
red hat linux
及其他的
linux
上執行。用於管理
rpm軟體包的主要工具是
rpm命令,它有六個基本的功能:安裝、解除安裝、公升級、更新、查詢和校驗軟體包。此外,它還有鮮為人知的功能—安全維護。本文介紹如何使用
rpm來進行安全維護。
1.檢查系統公鑰
在rpm
軟體包安裝前,
rpm命令通過檢查軟體包簽名可以保證軟體沒有被篡改和破壞。現在無論發行版、
yum或
apt等軟體庫都帶有
gpg公有金鑰
(下文簡稱公鑰
)簽名,它們儲存在
/usr/share/doc/fedora-release-4
目錄下,主要包括
rpm-gpg-key
、rpm-gpg-key-beta
和rpm-gpg-key-fedora-extras
等。使用如下命令來檢測系統公鑰:
[root@localhost ~]#rpm -qagpg-pubkey*
gpg-pubkey-a109blec
-3f6e28d5
gpg-pubkey
-66534c
2b-41d57eae
gpg-pubkey
-1ac
70ce6-41bebeef
gpg-pubkey
-9a2a
932b-4192dfad
gpg-pubkey-a109b1ec
-3f6e28d5
gpg-pubkey-e42d547b-3960bdf1
gpg-pubkey
-66534c
2b-41d57eae
gpg-pubkey-e42d547b-3960bdf1
pgp-pubkey-1aa78495-3eb24301
pgp-pubkey
-4f2a
6fd2
-3f9d9d3b0
其中「gpg-pubkey-a109b1ec-3f6e28d5
」代表fedoracore
公鑰,如果想知道詳細的資料,則可以輸入以下命令
[roat@localhost~]# rpm-qi gpg-pubkey-a109b1ec-3f6e28d5 | less
從輸出的結果可看出,金鑰的名稱分為版本號和發行號兩種數字,本金鑰適用於
livna.org rpms
的gpg
。如果希望安裝新的或公升級
prm軟體包時,自動檢查金鑰,如果不比配就會停止程式的繼續進行
2 .匯入和刪除gpg金鑰1.1
).匯入官方金鑰
#rpm –import rpm-gpg-key-fedora
.匯入軟體倉金鑰
#rpm –import
.刪除金鑰
#rpm -e gpg-pubkey-a109b1ec
-3f6e28d5
軟體安裝前,檢查簽名的正確性:
[root@localhost ~]#cd /root/downfile
[root@localhost downfile]# rpm --checksig yumex-0.42-5.0.fc4.noarch.rpmyumex-0.42-5.0.fc4.noarch.rpm:(shal)dsa shal md5 gpg ok
3.檢測軟體完整性
以上結果全部通過後,就可以安心地安裝這個軟體了。如果缺少金鑰
dsa、
sha1
和gpg
及prm
檔案遭到破壞就全部以大寫出現;
rpm檔案內容被修改則
md5、
gpg顯示為
bad。
軟體安裝後,可以使用
rpm命令辨別是否有人進行過修改,下面介紹具體的步驟:
[root@locahost ~]#rpm –v sendmail
..?...... c /etc/mail/domaintable
..?...... c /etc/mail/mailertable
.......t. c /etc/mail/sendmail.cf
..?...... c /etc/mail/virtusertable
s.5....t. c /var/log/mail/statistics
上面輸出結果的右側列出與原始狀態不匹配的檔案,左側現實儲存系統屬性出現的錯誤。其中,「
.」點表示通過測試,
「?」表示因為某些原因計算不出檔案的
md5sum
;「s」
表示檔案大小已經變更;
「t」代表時間已經變更,
「
5」代表
md5sum
已經變更。此外,
rpm命令還可以檢查單個檔案的完整性
(已啟動指令碼為例)。
首先使用如下命令檢查檔案的**
:[root@localhost ~]# rpm -qf /etc/rc.d/init.d/sendmail
sendmail-
8.13.4
-2然後再使用下列命令列出軟體包含的檔案儲存資訊:
[root@localhost ~]#rpm –ql --dump sendmail|grep /etc/rc.d/init.d/sendmail
/etc/rc.d/init.d/sendmail 334811153829111d213325d3ce95952cf
87f4a
05d8a
488 01100755 root root 1 0 0 x
由上得到以下有用的儲存資訊:
檔案中最初的字元數
(3348)
;sendmail
檔案內容的
md5sum(1d213325d3ce95952cf
87f4a
05d8a
488);
與該檔案關聯的許可權
檔案的所有者
(root)
最後,檢查實際檔案內容是否被修改:
[root@localhost ~]# ls –l /etc/rc.d/init.d/sendmail
-rwxr-xr-x 1 root root 3348 3
月6 20
:35 /etc/rc.d/init.d/sendmail
[root@localhost ~]# md5sum /etc/rc.d/init.d/sendmail
1d213325d3ce95952cf
87f4a
05d8a
488 /rtc/rc.d/init.d/sendmail
這裡顯示的資訊與上步的輸出資訊相同,啟動指令碼與原始指令碼相匹配。
sendmail
軟體報的檔案大小、
md5sum
和時間都被變更,這是正常的,而且啟動指令碼沒有變更,這個如果變更就會影響軟體正常執行。所以,這個軟體包的
rpm資料庫處在安全狀態。
4.修復被破壞的rpm資料庫
如果rpm
資料庫被破壞,在軟體安裝、刪除等會長期無響應,有事重啟系統會自動修復,如果不能修復,可以參考一下的方法。
首先,使用如下命令殺出當前的
rpm資料庫
#rm -f /var/lib/rpm/_db.*
然後,使用下列命令重建資料庫:
#rpm –vv -rebuilddb
5.檢查系統的安全性
如果系統遭到入侵或被攻擊,一些重要檔案必須被修改,主要包括含有字串
/bin
和/sbin
的檔案。可以通過一下命令進行檢查:
[root@localhost ~]# rpm -va|grep 『bin\/』
如果輸出結果顯示多個儲存屬性發生變化,就表明系統曾被攻擊過。較好解決辦法是斷開網路,備份重要檔案重新安裝系統。
rpm命令可以保證軟體包安裝前後的完整性,並且可以跟蹤軟體裡檔案被修改的儲存資訊,從而及時發現系統被入侵的情況。但聰明的入侵者是會先破壞
rpm架構,讓其失去成為安全防護工具的意義。為了系統更加安全,大家應該及時備份系統的
rpm資料庫。
Linux下RPM 命令用法
一 rpm介紹 1.什麼是rpm rpm 即redhat package management,是redhat的發明之一 2.為什麼需要rpm 在乙個作業系統下,需要安裝實現各種功能的軟體包。這些軟體包一般都有各自的程式,但是同時也有錯綜複雜的依賴關係。同時還需要 解決軟體包的版本,以及安裝,配置,...
Linux中rpm命令用法
rpm ivh 軟體包名 安裝軟體包並顯示安裝進度。這個是用得最多的了。查詢已經安裝哪些軟體包。rpm q 軟體包名 查詢指定軟體包是否已經安裝。rpm uvh 軟體包名 公升級乙個軟體包。rpm e 軟體包名 刪除指定軟體包。end以 src.rpm結尾的檔案由軟體源 檔案組成,要安裝此種 rpm...
Linux下which指令的另類用法
最近在實現乙個linux下程式的時候,需要程式可以呼叫linux系統下面指定的應用程式。如果這是windows程式,那麼可以通過regopenkey和regopenkey讀取登錄檔找到指定程式的安裝路徑,再利用createprocess函式進行呼叫即可完成前面提到的功能。因為每個人安裝程式的習慣不一...