(1) 配置審計守護進程。
(3) 啓動守護進程,它啓用了內核中的Linux Auditing System並開始進行日誌記錄。
本章將詳細討論各個部分。
Red Hat Enterprise Linux 5內核中的Linux Auditing System默認是關閉的。當啓動審計守護進程時,啓用這個內核特性。要在啓動時不通過守護進程auditd來啓用Linux Auditing System,只需用audit= 1參數來引導。如果這個參數設置爲1,而且auditd沒有運行,則審計日誌會被寫到/var/log/messages中。
用了auditd,管理員就可以定製產生的審計日誌。下面只是一部分可用的自定義配置:
● 確定是否循環使用日誌文件
● 配置審計規則記錄更詳細的信息
這些設置值及更多設置值位於/etc/audit/auditd.conf文件中,它包含修改審計守護進程的行爲的選項。每個選項均應在獨立的一行上,後面跟着等於號(=)和這個選項的值。程序清單25-1顯示了默認配置文件。
#
#
log_file = /var/log/audit/audit.log
priority_boost = 3
freq = 20
dispatcher = /sbin/audispd
max_log_file = 5
ion = ROTATE
space_left_act
ion = SUSPEND
ion = SUSPEND
ion = SUSPEND
log_file
log_format
priority_boost
flush
TA和SYNC之一。如果設置爲NONE,則不需要做特殊努力來將數據刷新到日誌文件中。如果設置爲INCREMENTAL,則用freq選項的值確定多長時間發生一次向磁盤的刷新。如果設置爲DA
num_logs
ion設置爲ROTATE時要保存的日誌文件數目。必須是0~99之間的數。如果設置爲小於2,則不會循環日誌。如果遞增了日誌文件的數目,就可能有必要遞增/etc/audit/audit.rules中的內核backlog設置值,以便留出日誌循環的時間。如果沒有設置num_logs值,它就默認爲0,意味着從來不循環日誌文件。
當啓動這個守護進程時,由審計守護進程自動啓動程序。所有守護進程都傳遞給這個程序。可以用它來進一步定製報表或者以與您的自定義分析程序兼容的不同格式產生它們。自定義程序的示例代碼可以在/usr/share/doc/audit-
控制調度程序與審計守護進程之間的通信類型。有效值爲lossy和lossless。如果設置爲lossy,若審計守護進程與調度程序之間的緩衝區已滿 (緩衝區爲128千字節),則發送給調度程序的引入事件會被丟棄。然而,只要log_format沒有設置爲nolog,事件就仍然會寫到磁盤中。如果設置爲lossless,則在向調度程序發送事件之前和將日誌寫到磁盤之前,調度程序會等待緩衝區有足夠的空間。
以兆字節表示的最大日誌文件容量。當達到這個容量時,會執行max_log_file _act
以兆字節表示的磁盤空間數量。當達到這個水平時,會採取space_left_act
以兆字節表示的磁盤空間數量。用這個選項設置比space_left_act
ion
ion中的相同。
ion
ion中的相同。
如果不循環審計日誌文件,則含有/var/log/audit/的分區可能變滿並引起系統錯誤。因此,建議讓/var/log/audit/位於一個單獨的專用分區。
ion
ion中的相同。
25.2 編寫審計規則與觀察器
/etc/audit.audit.rules中的每個規則和觀察器必須單獨在一行中,以#開頭的行會被忽略。規則和觀察器是auditctl命令行選項,前面沒有auditctl命令。它們從上到下閱讀文件。如果一個或多個規則或觀察器互相沖突,則使用找到的第一個。
要添加審計規則,可在/etc/audit/audit.rules文件中用下面的語法:
ion>
如果在運行守護進程時添加規則/etc/audit/audit.rules,則一定要以根用戶身份用service auditd restart命令啓用修改。也可以使用service auditd reload命令,但是這種方法不會提供配置文件錯誤的消息。
task
entry
exit
user
exclude
這個動作必須下面的動作之一:
不生成審計記錄。
分配審計上下文,總是把它填充在系統調用條目中,總是在系統調用退出時寫一個審計記錄。
-s
- F
pid
ppid
uid
euid
suid
fsuid
gid
egid
sgid
fsgid
auid
msgtype
pers
arch
devmajor
devminor
Inode Number。
從系統調用中退出值。
系統調用的成功值。1表是真/是,0表示假/否。
分別表示系統調用的前4個參數。只能用數字值。
設置用來標記事件的審計日誌事件消息的過濾鍵。參見程序清單25-2和程序清單25-3中的示例。當添加觀察器時,類似於使用-k選項。參見“編寫審計規則與觀察器”瞭解關於-k選項的詳細信息。
資源的SELinux用戶。
資源的SELinux角色。
資源的SELinux類型。
資源的SELinux低級別。
資源的SELinux高級別。
程序的SELinux角色。
程序的SELinux類型。
程序的SELinux敏感性。
程序的SELinux安全級別(clearance)。
程序清單25-2 示例審計規則
#Use with caution since this can quickly
-a exit,always -S open -F uid=501 -F key=501open
-a entry,always -S chmod
如果安裝了audit程序包,則其他示例在/usr/share/doc/audit-
程序清單25-3 示例審計規則日誌消息
success=no exit=-2 a0=7fff37fc5a40 a1=0 a2=2aaaaaaab000 a3=0 items=1
egid=501 sgid=501 fsgid=501 tty=pts5 comm="vim" exe="/usr/bin/vim"
25.2.2 編寫審計觀察器
警告:
程序清單25-4中含有包括在/etc/audit/audit.rules文件中的示例規則。如果與-w結合起來使用-k
#Watch for changes to sysconfig files
#Watch for changes to audit config files
-w /etc/audit/auditd.conf -k AUDIT_CONF
#Watch to see who tries to start the *** client
#Watch password files
-w /etc/passwd -k PASSWD
例如,程序清單25-4包括了關鍵過濾器PASSWD的口令文件上的一個觀察器。程序清單25-5含有刪除一個用戶後/var/log/audit /audit.log中的日誌項,它會修改正在觀察的這些口令文件。正如程序清單25-3中帶過濾鍵的規則的示例,這個鍵被添加到日誌項的末尾,因此可以輕鬆地將它從日誌項的其餘部分過濾出來。
type=SYSCALL msg=audit(1168227741.656:17915): arch=c000003e syscall=82
pid=4147 auid=501 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0
25.2.3 定製auditctl
表25-1 配置審計系統參數的auditctl選項
說 明
允許的未完成審計緩衝區的最大數目。內核中的默認值爲64。如果緩衝區已滿,則內核引用通過-f選項設置的失敗標誌,以確定採取哪個動作
設置爲0禁用審計,或者設置爲1啓用審計。對於爲了故障檢修或其他目的而臨時禁用審計會很有用
設置用於通知內核如何處理關鍵錯誤(比如審計緩衝區已滿或者內核內存用完)的失敗標誌。有效值是0(沒有動作),1(用printk將消息記錄到/var/log/messages)和2(混亂)。默認值爲1,但是2更安全。
以每秒鐘的消息條數爲單位的速率限制。如果設置爲0,則沒有限制。如果超出了速率限制,則內核會諮詢-f選項中的失敗標誌來確定採取哪個動作
當從一個文件中讀取規則時忽略錯誤
要驗證設置了這些選項,可用auditctl -s命令查看狀態。輸出類似下面這樣:
lost=0 backlog=0
當配置守護進程和添加規則與觀察器時,可以以根用戶身份執行service auditd start命令啓動守護進程。要停止它,可使用service auditd stop命令。要使它自動在運行時啓動,則應作爲根用戶執行chkconfig auditd on命令。
25.4 分析記錄
除非將守護進程配置爲循環日誌文件和像前面“配置審計守護進程”一節中介紹的那樣刪除老文件,否則/var/log/audit/中的日誌文件永遠不會被刪除。管理員應經常檢查日誌,刪除老日誌或者移到備份存儲器中。如果不週期性地刪除日誌,它們會填滿整個磁盤的。因爲這個原因,所以建議把/var /log/audit/放在一個單獨的專用分區上,這樣就不會影響寫其他日誌文件或者引起其他系統錯誤。
要強制立即循環日誌文件,可以以根用戶身份執行service auditd rotate命令。老日誌文件的文件名將爲audit.log.N,其中N是一個數字。這個數字越大,日誌文件越老。
要生成審計消息的報表,可使用aureport。爲了安全起見,/var/log/audit/目錄和其中的所有審計日誌文件只對根用戶可讀。因此,您必須作爲根用戶執行aureport命令。如果執行aureport時沒有使用任何選項,則會顯示程序清單25-7中所示的彙總報表。
選 項
-a
-c
-cr
-e
-f
-h
-l
-m
-ma
-p
-s
-tm
要以更可讀的格式產生結果,比如用它們映射到的用戶名替換UID,則也要使用-i選項:
要顯示每個日誌的啓動和停止時間,可以添加-t選項:
要顯示等於或早於特定時間的事件,可以添加-te選項,並在後面跟着結束日期和結束時間。用數字格式表示您所在地點的日期和時間,並以24小時制格式表示時間。例如,對於en_us.UTF-8這個地方,可使用日期格式MM/DD/YY:
要顯示等於或者晚於特定時間的事件,添加-ts選項,後面跟着開始日期和時間。採用與-te選項相同的日期和時間格式化規則。
要僅顯示失敗事件,則使用- -failure,注意這個選項前面有兩條虛線而不是一條:
要僅顯示成功事件,則使用- -success,注意這個選項前面有兩條虛線而不是一條:
有些報表也可以用- -summary選項以彙總格式生成;注意這個選項前面有兩條虛線作前綴:
要產生彙總報表而不是關於一個地區的報表,可使用-r選項:
要產生來自一個日誌文件的報表而不是默認報表,則可用-if選項指定它:
25.4.1 搜索記錄
25.5 用審計跟蹤進程
(1) 暫時關閉所有規則與觀察器:
(2) (可選)要把審計記錄從進程中隔離開,需強制一個日誌文件循環:
autrace的日誌將放在/var/log/audit/audit.log中。
autrace
Trace complete. You can locate the records with 'ausearch -i -p 10773'
service auditd restart
<P style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: auto; CLEAR: both; OVERFLOW: hidden; PADDING-TOP: 0px; "text-indent: 2em"> (6) 用ausearch顯示關於跟蹤的詳細信息。