在CentOS上配置基於主機的入侵偵測系統(IDS)
所有系統管理員想要在他們生產伺服器上首先要部署的安全手段之一,就是檢測檔案篡改的機制——不僅僅是檔案內容,而且也包括它們的屬性。
AIDE “進階入侵檢測環境”的簡稱)是一個開源的基於主機的入侵偵測系統。AIDE通過檢查大量檔案屬性的不一致性來檢查系統二進位檔案和基本設定檔的完整性,這些檔案屬性包括許可權、檔案類型、索引節點、連結數、連結名、使用者、組、檔案大小、塊計數、修改時間、添加時間、建立時間、acl、SELinux安全上下文、xattrs,以及md5/sha校正值在內的各種特徵。
AIDE通過掃描一台未被篡改)的Linux伺服器的檔案系統來構建檔案屬性資料庫,以後將伺服器檔案屬性與資料庫中的進行校對,然後在伺服器運行時對被修改的索引了的檔案發出警告。出於這個原因,AIDE必須在系統更新後或其設定檔進行合法修改後重新對受保護的檔案做索引。
對於某些客戶,他們可能會根據他們的安全性原則在他們的伺服器上強制安裝某種入侵偵測系統。但是,不管客戶是否要求,系統管理員都應該部署一個入侵偵測系統,這通常是一個很好的做法。
在 CentOS或RHEL 上安裝AIDE
AIDE的初始安裝同時是首次運行)最好是在系統剛安裝完後,並且沒有任何服務暴露在互連網甚至區域網路時。在這個早期階段,我們可以將來自外部的一切闖入和破壞風險降到最低限度。事實上,這也是確保系統在AIDE構建其初始資料庫時保持乾淨的唯一途徑。LCTT 譯註:當然,如果你的安裝源本身就存在安全隱患,則無法建立可信的資料記錄)
出於上面的原因,在安裝完系統後,我們可以執行下面的命令安裝AIDE:
- # yum install aide
我們需要將我們的機器從網路斷開,並實施下面所述的一些基本配置任務。
配置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)、ACLacl)、SELinuxselinux)、xattrsxattr)、SHA256/SHA512校正和sha256和sha512)。
定義的規則可靈活地用於不同的目錄和檔案用Regex表示)。
條目之前的驚嘆號!)告訴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資料庫:
- # 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資料庫,以更新資料庫內容。要完成該任務,請執行以下命令:
- # aide --update
要使用AIDE保護生產系統,可能最好通過任務計劃調用AIDE來周期性檢查不一致性。例如,要讓AIDE每天運行一次,並將結果發送到郵箱:
- # 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
讓我們修改檔案許可權,然後看看它是否被檢測到。
- # chmod 644 /etc/aide.conf
測試環境 3
最後,讓我們修改檔案內容如,添加一個注釋行到/etc/aide.conf)。
- echo "#This is a comment" >> /etc/aide.conf
上面的中,第一欄顯示了檔案的屬性,第二欄是AIDE資料庫中的值,而第三欄是更新後的值。第三欄中空白部分表示該屬性沒有改動如本例中的ACL)。
結尾
如果你曾經發現你自己有很好的理由確信系統被入侵了,但是第一眼又不能確定到底哪些東西被改動了,那麼像AIDE這樣一個基於主機的入侵偵測系統就會很有協助了,因為它可以協助你很快識別出哪些東西被改動過,而不是通過猜測來浪費寶貴的時間。
via: http://xmodulo.com/host-intrusion-detection-system-centos.html
作者:Gabriel Cánepa 譯者:GOLinux 校對:wxy