linux audit審計(5)--audit規則配置
audit可以配置規則,這個規則主要是給內核模塊下發的,內核audit模塊會按照這個規則獲取審計信息,發送給auditd來記錄日誌。
規則類型可分為:
1、控制規則:控制audit系統的規則;
2、文件系統規則:也可以認為是文件監控,可以監控一個特定文件或者一個路徑。
3、系統調用規則:可以記錄特定程序的系統調用。
audit規則可以通過auditctl,在命令行裏輸入,這些設置的規則為臨時的,當系統重啟後就不存在了。可以通過配置/etc/audit/audit.rules文件,當每次audit服務啟動後,都會從這個文件來加載規則。
auditctl,這個命令可以配置audit規則,audit根據這些規則來決定哪些事件會被記錄。The auditctl
控制規則:
-b 設置在內核中audit緩沖空間的最大值。
-f 這個選項來決定內核如何處理critical erros:0=silent 1=printk 2=panic.默認值為1。
-e 設置使能標誌,設置為0,為關閉了audit,設置為1,則開啟audit;當設置為2時,表示鎖定,一般在設置完其他規則後最後設置,防止其他人修改規則;任何修改規則的行為都會被拒絕,並且記錄審計日誌,只有當重啟系統後,這個使能標誌才可以被修改。
-s 查詢audit內核狀態。如:
linux-xdYUnA:/var/log/audit # auditctl -s enabled 1 failure 1 pid 27106 rate_limit 0 backlog_limit 8192 lost 106978588 backlog 0
-l 列出所有當前配置的規則。
-D 刪除所有當前加載的規則。
定義文件系統規則:
auditctl -w path_to_file -p permissions -k key_name
path_to_file 為要做審計的文件或路徑;
permissions為要記錄的許可:rwx 文件或路徑的讀寫執行,a
r — read access to a file or a directory. w — write access to a file or a directory. x — execute access to a file or a directory. a — change in the file‘s or directory‘s attribute.
key_name 為一個可選字符串,明確哪些規則產生的這些日誌。過濾時可以使用。
如下舉例:
定義規則,記錄所有對/etc/passwd文件的寫入以及屬性修改,可以輸入如下命令:
~]# auditctl -w /etc/passwd -p wa -k passwd_changes
記錄所有對/etc/selinux/目錄的寫入以及屬性修改,可以輸入如下命令:
~]# auditctl -w /etc/selinux/ -p wa -k selinux_changes
記錄所有執行了/sbin/insmod命令,向內核插入模塊的行為,輸入如下命令:
~]# auditctl -w /sbin/insmod -p x -k module_insertion
定義系統調用規則:
auditctl -a action,filter -S system_call -F field=value -k key_name
action和filter 明確一個事件被記錄。action可以為always或者never,filter明確出對應的匹配過濾,filter可以為:task,exit,user,exclude。
system_call 明確出系統調用的名字,幾個系統調用可以寫在一個規則裏,如-S xxx -S xxx。系統調用的名字可以在/usr/include/asm/unistd_64.h文件中找到。
field=value 作為附加選項,修改規則以匹配特定架構、GroupID,ProcessID等的事件。具體有哪些字段,可以參考man linux https://linux.die.net/man/8/auditctl
例如:
定義一個規則,當每次使用系統調用adjtimex或者settimeofday時,並且為64位架構,記錄審計日誌,命令可以輸入如下:
~]# auditctl -a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change
一個文件被user ID為1000或者更大的用戶刪除,或重命名,記錄審計,命令如下:
~]# auditctl -a always,exit -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete
註意,-F auid!=4294967295 這個是為了排除login UID沒有被設置的用戶。
也可以通過系統調用規則,來定義文件系統規則,如下的系統調用規則,與-w /etc/shadow -p wa的文件系統規則等同:
~]# auditctl -a always,exit -F path=/etc/shadow -F perm=wa
linux audit審計(5)--audit規則配置