所有系統管理者想要在他們生産伺服器上首先要部署的安全手段之一,就是檢測檔案篡改的機制——不僅僅是檔案内容,而且也包括它們的屬性。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuEWOsJjMitWZ0gnerlXe4FHMxIjMyIzLcdTMvwVMxQTMwIzLc1WdixWYvwFduVWboNWY0RXYvwVY0FGZvwVZt5CevJWcu42Y4VnbpxWLuR2Lc9CX6MHc0RHaiojIsJye.png)
aide通過掃描一台(未被篡改)的linux伺服器的檔案系統來建構檔案屬性資料庫,以後将伺服器檔案屬性與資料庫中的進行校對,然後在伺服器運作時對被修改的索引了的檔案發出警告。出于這個原因,aide必須在系統更新後或其配置檔案進行合法修改後重新對受保護的檔案做索引。
對于某些客戶,他們可能會根據他們的安全政策在他們的伺服器上強制安裝某種入侵檢測系統。但是,不管客戶是否要求,系統管理者都應該部署一個入侵檢測系統,這通常是一個很好的做法。
<a target="_blank"></a>
aide的初始安裝(同時是首次運作)最好是在系統剛安裝完後,并且沒有任何服務暴露在網際網路甚至區域網路時。在這個早期階段,我們可以将來自外部的一切闖入和破壞風險降到最低限度。事實上,這也是確定系統在aide建構其初始資料庫時保持幹淨的唯一途徑。(lctt 譯注:當然,如果你的安裝源本身就存在安全隐患,則無法建立可信的資料記錄)
出于上面的原因,在安裝完系統後,我們可以執行下面的指令安裝aide:
# yum install aide
我們需要将我們的機器從網絡斷開,并實施下面所述的一些基本配置任務。
預設配置檔案是/etc/aide.conf,該檔案介紹了幾個示例保護規則(如fipsr,normal,dir,dataonly),各個規則後面跟着一個等号以及要檢查的檔案屬性清單,或者某些預定義的規則(由+分隔)。你也可以使用此種格式自定義規則。
fipsr = p+i+n+u+g+s+m+c+acl+selinux+xattrs+sha256
normal = fipsr+sha512
例如,上面的例子說明,normal規則将檢查下列屬性的不一緻性:權限(p)、索引節點(i)、連結數(n)、使用者(u)、組(g)、大小(s)、修改時間(m)、建立時間(c)、acl(acl)、selinux(selinux)、xattrs(xattr)、sha256/sha512校驗和(sha256和sha512)。
定義的規則可靈活地用于不同的目錄和檔案(用正規表達式表示)。
條目之前的感歎号(!)告訴aide忽略子目錄(或目錄中的檔案),對于這些可以另外定義規則。
在上面的例子中,perms是用于/etc機器子目錄和檔案的預設規則。然而,對于/etc中的備份檔案(如/etc/.*~)則不應用任何規則,也沒有規則用于/etc/mtab檔案。對于/etc中的其它一些標明的子目錄或檔案,使用normal規則替代預設規則perms。
定義并應用正确的規則到系統中正确的位置,是使用aide最難的一部分,但作一個好的判斷是一個良好的開始。作為首要的一條規則,不要檢查不必要的屬性。例如,檢查/var/log或/var/spool裡頭的檔案的修改時間将導緻大量誤報,因為許多的應用程式和守護程序經常會寫入内容到該位置,而這些内容都沒有問題。此外,檢查多個校驗值可能會加強安全性,但随之而來的是aide的運作時間的增加。
可選的,如果你使用mailto變量指定電子郵件位址,就可以将檢查結果發送到你的郵箱。将下面這一行放到/etc/aide.conf中的任何位置即可。
mailto=root@localhost
運作以下指令來初始化aide資料庫:
# aide --init
根據/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
現在,是時候來将我們的系統與資料庫進行第一次校對了。任務很簡單,隻需運作:
# aide
在沒有選項時,aide假定使用了--check選項。
如果在資料庫建立後沒有對系統做過任何修改,aide将會以ok資訊來結束本次校對。
在建構了一個初始aide資料庫後,作為不斷進行的系統管理活動,你常常需要因為某些合法的理由更新受保護的伺服器。每次伺服器更新後,你必須重新建構aide資料庫,以更新資料庫内容。要完成該任務,請執行以下指令:
# aide --update
要使用aide保護生産系統,可能最好通過任務計劃調用aide來周期性檢查不一緻性。例如,要讓aide每天運作一次,并将結果發送到郵箱:
# crontab -e
0 0 * * * /usr/sbin/aide --check | /usr/bin/mail -s "aide run for $hostname" [email protected]
下面的測試環境将示範aide是如何來檢查檔案的完整性的。
讓我們添加一個新檔案(如/etc/fake)。
# cat /dev/null > /etc/fake
讓我們修改檔案權限,然後看看它是否被檢測到。
# chmod 644 /etc/aide.conf
最後,讓我們修改檔案内容(如,添加一個注釋行到/etc/aide.conf)。
echo "#this is a comment" >> /etc/aide.conf
上面的截圖中,第一欄顯示了檔案的屬性,第二欄是aide資料庫中的值,而第三欄是更新後的值。第三欄中空白部分表示該屬性沒有改動(如本例中的acl)。
如果你曾經發現你自己有很好的理由确信系統被入侵了,但是第一眼又不能确定到底哪些東西被改動了,那麼像aide這樣一個基于主機的入侵檢測系統就會很有幫助了,因為它可以幫助你很快識别出哪些東西被改動過,而不是通過猜測來浪費寶貴的時間。
原文釋出時間:2014-11-17
本文來自雲栖合作夥伴“linux中國”