一、AIDE 系統入侵檢測工具簡介
??AIDE,全稱為Advanced Intrusion Detection Environment,是一個主要用于檢測文件完整性的入侵檢測工具。它能夠構建一個指定文件的數據庫,并使用aide.conf作為其配置文件。AIDE數據庫能夠保存文件的各種屬性,包括權限、索引節點序號、所屬用戶、所屬用戶組、文件大小、最后修改時間、創建時間、最后訪問時間、增加的大小以及連接數等。此外,AIDE還支持多種算法,如sha1、md5、rmd160、tiger等,以密文形式建立每個文件的校驗碼或散列號。然而,這個數據庫不應保存經常變動的文件信息,例如:日志文件、郵件、/proc文件系統、用戶起始目錄以及臨時目錄等。當操作系統被入侵時,可以通過對比基準數據庫來獲取文檔的改變情況。這種方式能夠幫助用戶快速發現異常情況,從而及時進行應對。博文以centos7環境安裝和使用AIDE為例進行介紹,環境說明:
- 操作系統:centos7.6
- aide版本:0.15.1
二、AIDE安裝及使用示例
1、yum安裝aide
??aide工具
[root@s166 ~]# yum install -y aide
Running transaction
正在安裝 : aide-0.15.1-13.el7_9.1.x86_64 1/1
驗證中 : aide-0.15.1-13.el7_9.1.x86_64 1/1
已安裝:
aide.x86_64 0:0.15.1-13.el7_9.1
完畢!
2、檢查aide.conf配置文件
??AIDE作為入侵檢測工具,本質上是一個文件完整性校驗工具,可以監測和校驗配置文件指定的重要文件的完整性,通過MD5、SHA值校驗文檔是否被更新修改,如果發生變動則通過檢測后確認是管理者主動修改還是入侵者執行的改動。
[root@s166 ~]# cat /etc/aide.conf |grep -Ev “^#|^$”
@@define DBDIR /var/lib/aide
@@define LOGDIR /var/log/aide
database=file:@@{DBDIR}/aide.db.gz
database_out=file:@@{DBDIR}/aide.db.new.gz
gzip_dbout=yes
verbose=5
report_url=file:@@{LOGDIR}/aide.log
report_url=stdout
FIPSR = p+i+n+u+g+s+m+c+acl+selinux+xattrs+sha256
ALLXTRAHASHES = sha1+rmd160+sha256+sha512+tiger
EVERYTHING = R+ALLXTRAHASHES
NORMAL = sha256
DIR = p+i+n+u+g+acl+selinux+xattrs
PERMS = p+u+g+acl+selinux+xattrs
STATIC = p+u+g+acl+selinux+xattrs+i+n+b+c+ftype
LOG = p+u+g+n+acl+selinux+ftype
CONTENT = sha256+ftype
CONTENT_EX = sha256+ftype+p+u+g+n+acl+selinux+xattrs
DATAONLY = p+n+u+g+s+acl+selinux+xattrs+sha256
/boot/ CONTENT_EX
/bin/ CONTENT_EX
…
/etc/hosts$ CONTENT_EX
/etc/host.conf$ CONTENT_EX
…
3、初始化配置數據庫
??為了獲得系統入侵檢測的初始數據,我們需要先對aide數據庫進行初始化,使用i參數完成數據庫初始化,初始化生成的文件為aide.db.new.gz。使用-i或者–init初始化數據庫。
[root@s166 ~]# aide -i
AIDE, version 0.15.1
### AIDE database at /var/lib/aide/aide.db.new.gz initialized.
4、檢測配置數據庫
??使用-C或者–check參數檢查數據庫。
[root@s166 aide]# aide --check
5、檢測并更新配置數據庫
??更新數據庫實際上是先檢查然后更新,即先檢查文件變化,然后更新輸出到新的數據庫文件。
[root@s166 aide]# aide --update
6、對比配置數據庫
??比較數據庫配置文件需要在配置文件中指定database和database_new參數。比較結果跟update和check是一樣的。
[root@s166 aide]# aide --compare
三、AIDE入侵檢測使用簡介
??AIDE入侵檢測工具的本質就是配置文件中指定文件的哈希值存儲到數據庫文件中,在進行檢測的時候進行再次計算并對比。只能發現有區別,并不能告知區別明細。所以我們需要提前將待監控的文件進行備份,在發現文件有改動更新之后進行對比,以便修復還原。監控策略中包含權限、文件類型、ACL、時間屬性等,所以我們檢測的內容不僅僅是文件大小的變化,實際上也包括文件屬性的相關參數。
1、修改hosts文件測試AIDE
- 修改/etc/hosts文件
[root@s166 ~]# echo “192.168.0.1 gw” >> /etc/hosts
[root@s166 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.166 s166
192.168.0.167 s167
192.168.0.168 s168
192.168.0.1 gw
- 重命名數據庫初始化文件
[root@s166 aide]# mv aide.db.new.gz aide.db.gz
- 執行aide數據庫檢查
[root@s166 aide]# aide --check
Entry /etc/hosts in databases has different attributes: b4020081d a4020081d
…
2、增加一個用戶測試比較配置數據庫
- 修改配置文件指定數據庫文件存儲路徑參數
[root@s166 aide]# cat /etc/aide.conf |grep database
…
database=file:@@{DBDIR}/aide.db.gz
database_new=file:///var/lib/aide/aide.db.new
database_out=file:///var/lib/aide/aide.db.new
- 增加一個用戶
[root@s166 aide]# useradd test
- 執行配置數據庫更新
[root@s166 aide]# aide --update
- 執行數據庫對比
3、監控指定配置文件
- 編寫一個針對指定文件監控的配置文件,我可以復制aide.conf文件,刪除后面監控文件內容,加入/home/test/a.conf CONTENT_EX這一行就是我們需要監控的配置文件及監控策略。測試后可以發現如果是初始化默認aide.conf配置文件還是需要一些時間的,如果我們初始化自定義配置文件很快,因為我們只自定義監控了1個文件,而默認包含上百個文件。
[root@s166 aide]# cat aidetest.conf |grep -Ev “^$|^#”
@@define DBDIR /var/lib/aide
@@define LOGDIR /var/log/aide
database=file:@@{DBDIR}/aide.db.gz
database_out=file:@@{DBDIR}/aide.db.new.gz
database_new=file:@@{DBDIR}/aide.db.new.gz
gzip_dbout=yes
verbose=5
report_url=file:@@{LOGDIR}/aide.log
report_url=stdout
FIPSR = p+i+n+u+g+s+m+c+acl+selinux+xattrs+sha256
ALLXTRAHASHES = sha1+rmd160+sha256+sha512+tiger
EVERYTHING = R+ALLXTRAHASHES
NORMAL = sha256
DIR = p+i+n+u+g+acl+selinux+xattrs
PERMS = p+u+g+acl+selinux+xattrs
STATIC = p+u+g+acl+selinux+xattrs+i+n+b+c+ftype
LOG = p+u+g+n+acl+selinux+ftype
CONTENT = sha256+ftype
CONTENT_EX = sha256+ftype+p+u+g+n+acl+selinux+xattrs
DATAONLY = p+n+u+g+s+acl+selinux+xattrs+sha256
/home/test/a.conf CONTENT_EX
- 創建一個空配置文件
[root@s166 test]# touch a.conf
- 初始化配置數據庫
[root@s166 aide]# aide -c aidetest.conf -i
[root@s166 aide]# mv aide.db.new.gz aide.db.gz
- 更新a.conf文件
[root@s166 test]# echo “This is a change” >> a.conf
- 檢查配置文件是否改動
[root@s166 aide]# aide -c aidetest.conf -C
- 修改問權限
[root@s166 test]# chmod -x a.conf
- 檢查配置數據庫
[root@s166 aide]# aide -c aidetest.conf -C
- 將檢查結果寫入文件
[root@s166 aide]# aide -c aidetest.conf -C -r file:/tmp/report
#我們可以將檢查結果寫入文件,這樣我們就可以結合定時任務,定期執行檢查,通過郵件見結果報告發送到管理者郵箱實現指定配置文件的監控。如果檢查結果提示“### All files match AIDE database. Looks okay!”則表示配置文件沒有改動,如果包含其他哈希內容則表示文檔有改動。
四、常用文件及策略參數說明
1、常用文件說明
- /etc/aide.conf 服務默認配置文件
- /var/lib/aide.db.gz 默認aide數據庫
- /var/lib/aide.db.new.gz 默認aide輸出數據庫
2、策略參數說明
??配置文件中DIR = p+i+n+u+g+acl+selinux+xattrs類似這樣的參數配置均為定義的檢查策略,配置中默認定義了目錄、靜態文件、日志等文件類型的檢測策略,各參數說明如下,我們參照選擇即可。
策略參數 | 參數說明 |
---|---|
p | 啟用文件屬性檢查,包括權限、所有者和組。 |
u | 啟用用戶ID和組ID檢查。 |
g | 啟用組ID檢查。 |
acl | 啟用訪問控制列表(ACL)檢查。 |
selinux | 啟用SELinux上下文檢查。 |
xattrs | 啟用擴展屬性檢查。 |
i | 啟用索引節點檢查。 |
n | 啟用設備號和節點號檢查。 |
b | 啟用塊大小檢查。 |
c | 啟用字符集檢查。 |
ftype | 啟用文件類型檢查。 |
s | 啟用大小檢查,包括文件大小和目錄大小。 |
m | 啟用修改時間檢查,包括文件修改時間和目錄修改時間。 |