任何系統(tǒng)管理員想要在其生產(chǎn)服務(wù)器上最先部署的安全措施之一就是檢測文件篡改的機制――不法分子篡改的不僅僅是文件內(nèi)容,還有文件屬性。
AIDE(全稱“高級入侵檢測環(huán)境”)是一種基于主機的開源入侵檢測系統(tǒng)。AIDE通過檢查許多文件屬性的不一致性來檢查系統(tǒng)二進制文件和基本配置文件的完整性,這些文件屬性包括權(quán)限、文件類型、索引節(jié)點(inode)、鏈接數(shù)量、鏈接名稱、用戶、用戶組、文件大小、塊計數(shù)、修改時間、訪問時間、創(chuàng)建時間、訪問控制列表(acl)、SELinux安全上下文、xattrs以及md5/sha校驗和。
AIDE通過掃描一臺(未被篡改)的Linux服務(wù)器的文件系統(tǒng)來構(gòu)建文件屬性數(shù)據(jù)庫。然后,它對照該數(shù)據(jù)庫,檢查服務(wù)器的文件屬性,然后在服務(wù)器運行時,一旦索引文件出現(xiàn)任何更改,就發(fā)出警告。正是由于這個原因,每當由于正當原因而更新系統(tǒng)或更改配置文件后,AIDE必須重新為受保護的文件編制索引。
對某些客戶而言,他們的安全策略可能要求在服務(wù)器上安裝某種入侵檢測系統(tǒng)(IDS)。但無論客戶是不是要求IDS,系統(tǒng)管理員部署IDS都是個好的做法。
在CentOS或RHEL上安裝AIDE
AIDE的初始安裝(以及首次運行)最好是在剛安裝操作系統(tǒng)的系統(tǒng)上進行,沒有任何服務(wù)暴露在互聯(lián)網(wǎng)、甚至暴露在局域網(wǎng)面前。在這個早期階段,我們可以將來自外部的一切闖入和篡改行為這種風(fēng)險降到最低限度。事實上,這也是確保系統(tǒng)在AIDE構(gòu)建其初始數(shù)據(jù)庫時很干凈的唯一途徑。
由于這個原因,我們在使用# yum install aide這個命令安裝AIDE后,需要將我們的機器從網(wǎng)絡(luò)斷開,并執(zhí)行一些基本的配置任務(wù),如下所述。
配置AIDE
默認配置文件位于/etc/aide.conf。該文件提供了幾個示例保護規(guī)則(比如FIPSR、NORMAL、DIR和DATAONLY),每個規(guī)則后面跟著一個等號以及要檢查的文件屬性列表,或者任何預(yù)定義規(guī)則(用+分隔)。你也可以使用這種格式定義任何自定義規(guī)則。
FIPSR = p+i+n+u+g+s+m+c+acl+selinux+xattrs+sha256
NORMAL = FIPSR+sha512
比如說,上述例子意味著,NORMAL規(guī)則將檢查下列屬性方面的不一致性:權(quán)限(p)、索引節(jié)點(i)、鏈接數(shù)量(n)、用戶(u)、用戶組(g)、大小(s)、修改時間(m)、創(chuàng)建時間(c)、訪問控制列表(acl)、SELinux(selinux)、xattrs(xattr)以及SHA256/SHA512校驗和(sha256和sha512)。
定義的規(guī)則可以靈活地用于不同的目錄和文件(用正則表達式表示)。
條目前面的感嘆號(!)告訴AIDE忽略子目錄(或目錄里面的文件),可針對子目錄定義另一個規(guī)則。
在上面這個例子中,PERMS是面向/etc及其子目錄和文件的默認規(guī)則。然而,沒有規(guī)則會應(yīng)用于/etc中的備份文件(即/etc/.*~),也不會應(yīng)用于/etc/mtab文件。對于/etc中一些選擇性的子目錄或文件而言,而是應(yīng)用NORMAL規(guī)則,替代默認規(guī)則PERMS。
定義合適的規(guī)則,并將其應(yīng)用到系統(tǒng)中的合適位置,這是使用AIDE過程中最困難的部分,但運用良好的判斷力是個好的開端。一個經(jīng)驗法則是,別檢查不必要的屬性。比如說,檢查/var/log或/var/spool里面的文件的修改時間肯定會導(dǎo)致大量誤報,因為有許多應(yīng)用程序和守護進程常常將內(nèi)容寫入到這些位置。此外,檢查多個校驗和可能會加強安全性,不過代價是AIDE運行時間延長了。
另外,如果你使用MAILTO變量來指定電子郵件地址,可以將檢查結(jié)果發(fā)送到你的郵箱。將下面這一行放入到/etc/aide.conf中的任何位置。
MAILTO=root@localhost
[page]首次運行AIDE
運行下列命令對AIDE數(shù)據(jù)庫進行初始化:
# aide --init
根據(jù)/etc/aide.conf生成的/var/lib/aide/aide.db.new.gz文件需要重命名為/var/lib/aide/aide.db.gz,以便讓AIDE能讀取它:
# mv /var/lib/aide/aide.db.new.gz /var/lib/aide.db.gz
現(xiàn)在,是時候?qū)φ諗?shù)據(jù)庫,執(zhí)行我們的第一次系統(tǒng)檢查了。為此,只要運行:
# aide
沒有選項調(diào)用時,AIDE假設(shè)使用--check。
如果數(shù)據(jù)庫創(chuàng)建后沒有做過任何變更,AIDE在結(jié)束檢查后會返回OK信息。
在生產(chǎn)環(huán)境中管理AIDE
構(gòu)建初始AIDE數(shù)據(jù)庫后,你常常需要由于各種正當?shù)脑蚋率鼙Wo的服務(wù)器,這是日常系統(tǒng)管理活動的一部分。每次服務(wù)器經(jīng)過更新后,你必須重新構(gòu)建AIDE數(shù)據(jù)庫,以便將變更內(nèi)容添加到數(shù)據(jù)庫。為此,使用這個命令:
# aide --update
為了使用AIDE保護生產(chǎn)系統(tǒng),可能最好安排一個計劃任務(wù),以便定期使用AIDE檢查任何不一致性。比如說,安排AIDE每天運行一次,并將結(jié)果發(fā)送到電子郵件地址:
# crontab -e
0 0 * * * /usr/sbin/aide --check | /usr/bin/mail -s "AIDE run for $HOSTNAME" your@email.com
測試AIDE檢查文件篡改的功能
下列測試場景將演示AIDE如何檢查文件的完整性。
測試場景1
我們不妨添加一個新文件(比如/etc/fake)。
# cat /dev/null >/etc/fake
測試場景 2
我們不妨變更文件權(quán)限,看看它能否被檢測到。
# chmod 644 /etc/aide.conf
測試場景 3
最后,我們不妨更改文件內(nèi)容(比如添加一個注釋行到/etc/aide.conf)。
echo "#This is a comment" >>/etc/aide.conf
在上面的屏幕截圖中,第一列顯示了文件屬性,第二列顯示了AIDE數(shù)據(jù)庫中的值,第三列顯示了那些屬性的更新后值。第三列中的空白部分表示該屬性沒有更改(該例子中的ACL)。
結(jié)束語
要是你果真覺得自己處于這種情形:有充分的理由認為系統(tǒng)已遭到了篡改,可是乍一看又無法查明什么有可能遭到了更改,像AIDE這樣的基于主機的入侵檢測系統(tǒng)就大有幫助,因為它可以幫助你盡快查明什么遭到了更改,而不是胡加猜測、浪費寶貴的時間。
原文地址:http://xmodulo.com/host-intrusion-detection-system-centos.html