Linux Audit守護進程是一個可以審計Linux系統事件的框架。在本文中,我們一起看看安裝、配置和使用這個框架來執行Linux系統和安全審計。
審計目標
通過使用一個強大的審計框架,系統可以追蹤很多事件類型來監控和并審計它。這樣的例子包括:
審計文件訪問和修改
看看誰改變了一個特殊文件
檢測未授權的改變
監控系統調用和函數
檢測異常,比如崩潰的進程
為入侵檢測目的設置“導火線”
記錄各個用戶使用的命令
組件
這個框架本身有數個組件:
內核:
audit:鉤在內核中來捕獲事件并將它們發送到auditd
二進制文件:
auditd:捕捉事件并記錄它們(記錄在日志文件中)的守護進程
auditctl:配置auditd的客戶端工具
audispd:多路復用事件的守護進程
aureport:從日志文件(auditd.log)中讀取內容的報告工具
ausearch:事件查看器(查看的內容是auditd.log)
autrace:使用內核中的審計組件來追蹤二進制文件
aulast:和上一個類似,但是使用的是審計框架
aulastlog:和lastlog類似,但是也使用的是審計框架
ausyscall:映射系統調用ID和名字
auvirt:展示和審計有關虛擬機的信息
文件:
audit.rules:auditctl使用,它讀取該文件來決定需要使用什么規則
auditd.conf:auditd的配置文件
安裝
Debian/Ubuntu使用命令:apt-get install auditd audispd-plugins
Red Hat/CentOS/Fedora:通常已經安裝了(包:audit和audit-libs)
配置
2個文件管理審計守護進程的配置,一個用于守護進程本身(auditd.conf),另一個是用于auditctl工具的規則(audit.rules)。
auditd.conf
文件auditd.conf對Linux audit守護進程的配置聚焦在它應該在哪里以及如何記錄事件。它也定義了如何應對磁盤滿的情況、如何處理日志輪轉和要保留的日志文件數量。通常,對大多數系統來說,默認配置是足夠的。
audit.rules
為了配置應該審計什么日志,審計框架使用了一個名為audit.rules的文件。
和大多數情況一樣,從零開始而不加載任何規則。通過用-l參數來運行auditctl,我們可以確定使用中的規則。
[root@host ~]# auditctl -l
No rules
萬一加載了任何規則的話,用-D參數運行auditctl來刪除已加載規則。
現在是時候來監控點東西了,比如/etc/passwd文件。通過定義要查看的路徑和權限,我們在這個文件上放一個觀察點:
auditctl -a exit,always -F path=/etc/passwd -F perm=wa
通過定義path選項,我們告訴審計框架來監視什么目錄或者文件。權限決定了什么類型的訪問將觸發一個事件。雖然這里的權限看起來類似文件的權限,但是要注意,在這2者之間有一個重大的區別。這里的4個選項是:
r = 讀取
w = 寫入
x = 執行
a = 屬性改變
通過使用ausearch工具,我們可以快速的追蹤對文件的訪問和找到相關的事件。
這個輸出里面的一些重點是:
事件的時間(time)和對象的名稱(name),當前的工作路徑(cwd),相關的系統調用(syscall),審計用戶ID(auid)和在這個文件上執行行為的二進制(exe)。請注意,auid定義了在登錄過程中的原始用戶。其他的用戶ID字段可能指向了一個不同的用戶,取決于在觸發一個事件時在使用的實際用戶。
轉換系統調用
系統調用是以數字類型的值來記錄的。因為在不同的服務器架構之間,這些值會有重疊,所以當前的服務器架構也記錄了下來。
通過使用uname -m,我們可以確定服務器架構并使用ausyscall 來確定數字為188的系統調用代表了什么。
[root@host audit]# ausyscall x86_64 188
setxattr
現在,我們知道了這是屬性的變化,這是講得通的,因為我們定義了觀察點,在屬性變化(perm=a)的時候觸發一個事件。
使用了臨時規則并想再用老的規則?使用一個文件來刷新審計規則:
auditctl -R /etc/audit/audit.rules
審計Linux的進程
和使用strace類似,審計框架有一個名為autrace的工具。它使用了審計框架并增加了合適的規則來捕獲信息并記錄。收集到的信息可以使用ausearch來展示。
執行一次追蹤:
使用ausearch來展示相關的文件:
按照用戶來審計文件訪問
審計框架可以用于監控系統調用,包括對文件的訪問。如果你希望知道一個特定的用戶ID訪問了什么文件,使用像下面的這樣一條規則:
auditctl -a exit,always -F arch=x86_64 -S open -F auid=80
-F arch=x86_64定義了使用什么架構(uname -m)來監控正確的系統調用(一些系統調用在不同的架構之間是不同的)。
-S open 選擇 “open”系統調用
-F auid=80 相關的用戶ID
這種類型的信息對于入侵檢測確實是很有用的,而且對于在Linux系統上取證也確實是很有用的。
自動化
因為Linux審計守護進程可以提供有價值的審計數據,Lynis會檢查這個框架的存在。如果沒有這個框架,Lynis會建議你安裝它。
另外,Lynis會執行一些測試來判定日志文件、可用的規則等等。
為了有效的入侵檢測目的,和入侵檢測系統集成對于事件發生的時候發現它們并采取恰當的行動是很關鍵的。
后記
審計守護進程有更多的用途。在本博客未來的文章中將列出其他例子。如果你是嚴肅對待Linux平臺審計的,Linux審計框架一定是個很好的朋友!
-
Linux
+關注
關注
87文章
11229瀏覽量
208927
發布評論請先 登錄
相關推薦
評論