2021-05-12 14:32:11
如何在Linux中使用AIDE監控檔案的完整性
2020-06-16 16:29:12
簡介
AIDE(高階入qin檢測環境)是檔案完整性檢查程式和入qin檢測程式。
特性
- 主要用途是檢查檔案的完整性,審計計算機上哪些檔案被更改過。
- AIDE根據從/etc/aide.conf組態檔中找到的正規表示式規則建立資料庫。初始化該資料庫後,就可以用來驗證檔案的完整性。還可以檢查所有通常的檔案屬性是否存在不一致。它可以讀取舊版本或更新版本的資料庫。AIDE資料庫能夠儲存檔案的各種屬性,包括:許可權(permission)、索引節點序號(inode number)、所屬使用者(user)、所屬使用者組(group)、檔案大小、最後修改時間(mtime)、建立時間(ctime)、最後存取時間(atime)、增加的大小以及連線數。AIDE還能夠使用下列演算法:sha1、md5、rmd160、tiger,以密文形式建立每個檔案的校驗碼或雜湊號。
- 這個資料庫不應該儲存那些經常變動的檔案資訊,例如:紀錄檔檔案、郵件、/proc檔案系統、使用者其實目錄以及臨時目錄。
背景
當一個入qin者進入了你的系統並且種植了木ma,通常會想辦法來隱蔽這個木ma(除了木ma自身的一些隱蔽特性外,他會盡量給你檢查系統的過程設定障礙),通常入qin者會修改一些檔案,比如管理員通常用ps aux來檢視系統進程,那麼入qin者很可能用自己經過修改的ps程式來替換掉你系統上的ps程式,以使用ps命令查不到正在執行的木ma程式。如果入qin者發現管理員正在執行crontab作業,也有可能替換掉crontab程式等等。所以由此可以看出對於系統檔案或是關鍵檔案的檢查是很必要的。目前就系統完整性檢查的工具用的比較多的有兩款:Tripwire和AIDE,前者是一款商業軟體,後者是一款免費的但功能也很強大的工具。
操作步驟
安裝
[root@CentOS7 ~]# yum -y install aide
修改組態檔
/etc/aide.conf
/etc/aide.conf 預設組態檔路徑
/usr/sbin/aide 預設二進位制可執行檔案路徑
/var/lib/aide 預設資料庫檔案路徑
/var/log/aide 預設紀錄檔檔案路徑
初始化預設的AIDE的庫:
`which aide` --init
執行完這步操作後會在預設資料庫路徑/var/lib/aide下產生一個名為“aide.db.new.gz”的資料庫檔案,/etc/aide.conf中定義的規則都寫入到了該資料庫檔案中。
生成檢查資料庫(建議初始化資料庫存放到安全的地方)
mv /var/lib/aide/aide.db{.new,}.gz
因為aide預設是從aide.db.gz資料庫檔案中讀取/etc/aide.conf檔案中定義的規則來檢測檔案完整性的,所以需要重新命名初始化的庫檔案。
檢測
`which aide` --check
更新資料庫
`which aide` --update
檢測完需要更新檔案資料庫,否則下次檢測還是從舊的檔案資料庫中讀取規則來檢測檔案的完整性。同時需要重新命名資料庫檔案
AIDE預設規則
#
#p: permissions
#i: inode:
#n: number of links
#u: user
#g: group
#s: size
#b: block count
#m: mtime
#a: atime
#c: ctime
#S: check for growing size
#acl: Access Control Lists
#selinux SELinux security context
#xattrs: Extended file attributes
#md5: md5 checksum
#sha1: sha1 checksum
#sha256: sha256 checksum
#sha512: sha512 checksum
#rmd160: rmd160 checksum
#tiger: tiger checksum
#haval: haval checksum (MHASH only)
#gost: gost checksum (MHASH only)
#crc32: crc32 checksum (MHASH only)
#whirlpool: whirlpool checksum (MHASH only)
AIDE規則定義及使用
規則定義格式:規則名 = 具體規則
【例】:TEST = a+m+c
規則使用格式:檔案/目錄 規則名
【例】:/dir1 TEST
注:如果在檔案或目錄前面加了“!”,則表示忽略檢測
AIDE規則驗證
在/etc/aide.conf檔案中定義如下規則,這裡的/dir1目錄剛開始是空的。
TEST = a+c+m
/dir1 TES
測試1:
在該目錄下建立一個新的檔案file1,並寫入"hello aide"
[root@CentOS7 ~]# aide --check
AIDE, version 0.15.1
### All files match AIDE database. Looks okay!
[root@CentOS7 ~]# echo "hello aide" > /dir1/file1
[root@CentOS7 ~]# aide --check
AIDE 0.15.1 found differences between database and filesystem!!
Start timestamp: 2019-11-10 19:12:57
Summary:
Total number of files: 3
Added files: 1
Removed files: 0
Changed files: 1
---------------------------------------------------
Added files:
---------------------------------------------------
added: /dir1/file1
---------------------------------------------------
Changed files:
---------------------------------------------------
changed: /dir1
---------------------------------------------------
Detailed information about changes:
---------------------------------------------------
Directory: /dir1
Mtime : 2019-11-10 19:12:00 , 2019-11-10 19:12:55
Ctime : 2019-11-10 19:12:00 , 2019-11-10 19:12:55
以上輸出表示在/dir1目錄下新增了file1檔案,並且修改了/dir1目錄的Ctime和Mtime屬性
測試2:
將/dir1/file1檔案的內容由"hello aide"修改為"hello world"
[root@CentOS7 ~]# sed -i '/hello/c hello world' /dir1/file1 ; cat /dir1/file1
hello world
[root@CentOS7 ~]# aide --check
AIDE 0.15.1 found differences between database and filesystem!!
Start timestamp: 2019-11-10 19:14:34
Summary:
Total number of files: 3
Added files: 1
Removed files: 0
Changed files: 1
---------------------------------------------------
Added files:
---------------------------------------------------
added: /dir1/file1
---------------------------------------------------
Changed files:
---------------------------------------------------
changed: /dir1
---------------------------------------------------
Detailed information about changes:
---------------------------------------------------
Directory: /dir1
Atime : 2019-11-10 19:12:02 , 2019-11-10 19:12:57
Mtime : 2019-11-10 19:12:00 , 2019-11-10 19:14:31
Ctime : 2019-11-10 19:12:00 , 2019-11-10 19:14:31
這時候/dir1目錄的Atime,Mtime,Ctime都被修改了。
相關文章