Linux 用戶(hù)空間審計(jì)系統(tǒng)
原創(chuàng)一、Linux用戶(hù)空間審計(jì)系統(tǒng)簡(jiǎn)介
Linux內(nèi)核有用日志記錄事件的能力,比如記錄系統(tǒng)調(diào)用和文件訪問(wèn)。然后管理員可以評(píng)審這些日志,確定可能存在的安全漏洞,比如失敗的登錄嘗試,或者用戶(hù)對(duì)系統(tǒng)文件不成功的訪問(wèn)。這種功能稱(chēng)為L(zhǎng)inux用戶(hù)空間審計(jì)系統(tǒng),在Red Hat Enterprise Linux 5及其之后版本中已經(jīng)直接可用。當(dāng)然老版本的Linux 也可以手工添加軟件使用。Linux在用戶(hù)空間審計(jì)系統(tǒng)由auditd、audispd、auditctl、autrace、ausearch和aureport等應(yīng)用程序組成。審計(jì)后臺(tái)auditd應(yīng)用程序通過(guò)netlink機(jī)制從內(nèi)核中接收審計(jì)消息,然后通過(guò)一個(gè)工作線程將審計(jì)消息寫(xiě)入到審計(jì)日志文件中,Linux的審核系統(tǒng)提供了一種記錄系統(tǒng)安全信息的方法,為系統(tǒng)管理員在用戶(hù)違反系統(tǒng)安全規(guī)則時(shí)提供及時(shí)的警告信息。內(nèi)核其他線程通過(guò)內(nèi)核審計(jì)API寫(xiě)入套接字緩沖區(qū)隊(duì)列audit_skb_queue中,內(nèi)核線程kauditd通過(guò)netlink機(jī)制將審計(jì)消息定向發(fā)送給用戶(hù)控件的審計(jì)后臺(tái)auditd的主線程,auditd主線程再通過(guò)事件隊(duì)列將審計(jì)消息傳給審計(jì)后臺(tái)的寫(xiě)log文件線程,寫(xiě)入log文件。另一方面,審計(jì)后臺(tái)還通過(guò)一個(gè)與套接字綁定的管道將審計(jì)消息發(fā)送給dispatcher應(yīng)用程序。圖1是Linux audit架構(gòu)示意圖 。
圖1 Linux audit架構(gòu)示意圖
圖1的實(shí)線代表數(shù)據(jù)流,虛線代表組件關(guān)之間的控制關(guān)系 。
auditd :audit 守護(hù)進(jìn)程負(fù)負(fù)責(zé)把內(nèi)核產(chǎn)生的信息寫(xiě)入到硬盤(pán)上,這些信息是由應(yīng)用程序和系統(tǒng)活動(dòng)所觸發(fā)產(chǎn)生的。audit守護(hù)進(jìn)程如何啟動(dòng)取決于它的配置文件,/etc /sysconfig/auditd。audit系統(tǒng)函數(shù)的啟動(dòng)受文件/etc/audit/auditd.conf的控制。在用戶(hù)空間審計(jì)系統(tǒng)通過(guò)auditd后臺(tái)進(jìn)程接收內(nèi)核審計(jì)系統(tǒng)傳送來(lái)的審計(jì)信息,將信息寫(xiě)入到/var/log/audit/audit.log 中,audit.log的路徑可在/etc/auditd.conf 中指定。當(dāng)auditd沒(méi)有運(yùn)行時(shí),內(nèi)核將審計(jì)信息傳送給 syslog,這些消息通常保存在/var/log/messages文件中,可以用dmesg命令查看。
auditctl:auditctl功能用來(lái)控制audit系統(tǒng),它控制著生成日志的各種變量,以及內(nèi)核審計(jì)的各種接口,還有決定跟蹤哪些事件的規(guī)則。
audit.rules:在/etc/audit/audit.rules中包含了一連串a(chǎn)uditctl命令,這些命令在audit系統(tǒng)被啟用的時(shí)候被立即加載。
aureport:aureport的功能是能夠從審計(jì)日志里面提取并產(chǎn)生一個(gè)個(gè)性化的報(bào)告,這些日志報(bào)告很容易被腳本化,并能應(yīng)用于各種應(yīng)用程序之中,如去描述結(jié)果。
ausearch : ausearch用于查詢(xún)審計(jì)后臺(tái)的日志,它能基于不同搜索規(guī)則的事件查詢(xún)審計(jì)后臺(tái)日志。每個(gè)系統(tǒng)調(diào)用進(jìn)入內(nèi)核空間運(yùn)行時(shí)有個(gè)唯一的事件id,系統(tǒng)調(diào)用在進(jìn)入內(nèi)核后的運(yùn)行過(guò)程的審計(jì)事件共享這個(gè)id。
audispd:audispd是消息分發(fā)的后臺(tái)進(jìn)程,用于將auditd后臺(tái)發(fā)過(guò)來(lái)的一些消息通過(guò)syslog寫(xiě)入日志系統(tǒng)。這是一個(gè)審計(jì)調(diào)度進(jìn)程,它可以為將審計(jì)的信息轉(zhuǎn)發(fā)給其它應(yīng)用程序,而不是只能將審計(jì)日志寫(xiě)入硬盤(pán)上的審計(jì)日志文件之中。
autrace這個(gè)功能更總類(lèi)似于strace,跟蹤某一個(gè)進(jìn)程,并將跟蹤的結(jié)果寫(xiě)入日志文件之中。
要使用安全審計(jì)系統(tǒng)可采用下面的步驟:
● 安裝軟件包
● 了解配置文件
● 了解配置命令
● 添加審計(jì)規(guī)則和觀察器來(lái)收集所需的數(shù)據(jù)
● 啟用了內(nèi)核中的audit并開(kāi)始進(jìn)行日志記錄
● 通過(guò)生成審計(jì)報(bào)表和搜索日志來(lái)周期性地分析數(shù)據(jù)#p#
二、 安裝軟件包并且配置審計(jì)守護(hù)進(jìn)程
1 安裝軟件包
要使用auditd和實(shí)用程序來(lái)生成日志文件報(bào)表,必須安裝audit RPM程序包
#yum install audit
audit也可以從源碼安裝,源碼下載地址:http://people.redhat.com/sgrubb/audit/
2 了解audit配置文件
(1) audit配置文件簡(jiǎn)介
audit是系統(tǒng)中的一個(gè)服務(wù)。是Linux audit Subsystem 的縮寫(xiě)。這一服務(wù)用來(lái)審計(jì)系統(tǒng)調(diào)用的紀(jì)錄,并把記錄寫(xiě)入文件當(dāng)中。auditd是audit系統(tǒng)的用戶(hù)空間程序,主要作用是將audit記錄信息寫(xiě)到磁盤(pán)上。audit安裝后,會(huì)生成2個(gè)文件.audit在啟動(dòng)時(shí)會(huì)讀取2個(gè)配置文件:/etc/audit/auditd.conf 和/etc/audit/audit.rules 。相關(guān)文件的位置:
/etc/audit/audit.conf 守護(hù)程序的默認(rèn)配置文件
/etc/audit/audit.rules 守護(hù)程序默認(rèn)的過(guò)濾文件
auditd使用方法:
auditd [ -f ]
-f auditd在前臺(tái)運(yùn)行,調(diào)試時(shí)使用.
(2) /etc/audit/audit.conf文件詳解
/etc/audit/audit.conf守護(hù)程序的默認(rèn)配置文件是Linux安全審計(jì)系統(tǒng)最關(guān)鍵文件。/etc/audit/audit.conf文件包括如下幾個(gè)部分:
● 設(shè)置審計(jì)消息的專(zhuān)用日志文件
● 確定是否循環(huán)使用日志文件
● 如果日志文件的啟動(dòng)用掉了太多磁盤(pán)空間則發(fā)出警告
● 配置審計(jì)規(guī)則記錄更詳細(xì)的信息
● 激活文件和目錄觀察器
這些設(shè)置值及更多設(shè)置值位于/etc/audit/auditd.conf文件中,它包含修改審計(jì)守護(hù)進(jìn)程的行為的選項(xiàng)。每個(gè)選項(xiàng)均應(yīng)在獨(dú)立的一行上,后面跟著等于號(hào)(=)和這個(gè)選項(xiàng)的值。/etc/audit.audit.rules中的每個(gè)規(guī)則和觀察器必須單獨(dú)在一行中,以#開(kāi)頭的行會(huì)被忽略。規(guī)則和觀察器是auditctl命令行選項(xiàng),前面沒(méi)有auditctl命令。它們從上到下閱讀文件。如果一個(gè)或多個(gè)規(guī)則或觀察器互相沖突,則使用找到的第一個(gè)。auditd.conf的選項(xiàng)說(shuō)明如表1所示。
表1 auditd.conf的選項(xiàng)和說(shuō)明
選項(xiàng) |
選項(xiàng)說(shuō)明 |
log_file = |
審計(jì)日志文件的完整路徑。如果您配置守護(hù)進(jìn)程向除默認(rèn)/var/log/audit/外的目錄中寫(xiě)日志文件時(shí),一定要修改它上面的文件權(quán)限,使得只有根用戶(hù)有讀、寫(xiě)和執(zhí)行權(quán)限。所有其他用戶(hù)都不能訪問(wèn)這個(gè)目錄或這個(gè)目錄中的日志文件 |
log_format = |
寫(xiě)日志時(shí)要使用的格式。當(dāng)設(shè)置為RAW時(shí),數(shù)據(jù)會(huì)以從內(nèi)核中檢索到的格式寫(xiě)到日志文件中。當(dāng)設(shè)置為NOLOG時(shí),數(shù)據(jù)不會(huì)寫(xiě)到日志文件中,但是如果用dispatcher選項(xiàng)指定了一個(gè),則數(shù)據(jù)仍然會(huì)發(fā)送到審計(jì)事件調(diào)度程序中 |
priority_boost = |
審計(jì)應(yīng)采用多少優(yōu)先級(jí)推進(jìn)守護(hù)進(jìn)程。必須是非負(fù)數(shù)。0表示沒(méi)有變化 |
flush = |
多長(zhǎng)時(shí)間向日志文件中寫(xiě)一次數(shù)據(jù)。值可以是NONE、INCREMENTAL、DATA和SYNC之一 |
freq = |
如果flush設(shè)置為INCREMETNAL,審計(jì)守護(hù)進(jìn)程在寫(xiě)到日志文件中前從內(nèi)核中接收的記錄數(shù) |
num_logs = |
max_log_file_action設(shè)置為ROTATE時(shí)要保存的日志文件數(shù)目。必須是0~99之間的數(shù)。如果設(shè)置為小于2,則不會(huì)循環(huán)日志。如果遞增了日志文件的數(shù)目,就可能有必要遞增/etc/audit/audit.rules中的內(nèi)核backlog設(shè)置值,以便留出日志循環(huán)的時(shí)間。如果沒(méi)有設(shè)置num_logs值,它就默認(rèn)為0,意味著從來(lái)不循環(huán)日志文件 |
dispatcher = |
當(dāng)啟動(dòng)這個(gè)守護(hù)進(jìn)程時(shí),由審計(jì)守護(hù)進(jìn)程自動(dòng)啟動(dòng)程序。所有守護(hù)進(jìn)程都傳遞給這個(gè)程序。可以用它來(lái)進(jìn)一步定制報(bào)表或者以與您的自定義分析程序兼容的不同格式產(chǎn)生它們。由于調(diào)度程序用根用戶(hù)特權(quán)運(yùn)行,因此使用這個(gè)選項(xiàng)時(shí)要極其小心。這個(gè)選項(xiàng)不是必需的 |
disp_qos = |
控制調(diào)度程序與審計(jì)守護(hù)進(jìn)程之間的通信類(lèi)型。有效值為lossy和lossless。如果設(shè)置為lossy,若審計(jì)守護(hù)進(jìn)程與調(diào)度程序之間的緩沖區(qū)已滿(緩沖區(qū)為128千字節(jié)),則發(fā)送給調(diào)度程序的引入事件會(huì)被丟棄。然而,只要log_format沒(méi)有設(shè)置為nolog,事件就仍然會(huì)寫(xiě)到磁盤(pán)中。如果設(shè)置為lossless,則在向調(diào)度程序發(fā)送事件之前和將日志寫(xiě)到磁盤(pán)之前,調(diào)度程序會(huì)等待緩沖區(qū)有足夠的空間 |
max_log_file = |
以兆字節(jié)表示的最大日志文件容量。當(dāng)達(dá)到這個(gè)容量時(shí),會(huì)執(zhí)行max_log_file _action指定的動(dòng)作 |
max_log_file_action = |
當(dāng)達(dá)到max_log_file的日志文件大小時(shí)采取的動(dòng)作。值必須是IGNORE、SYSLOG、SUSPEND、ROTATE和KEEP_LOGS之一。如果設(shè)置為IGNORE,則在日志文件達(dá)到max_log_file后不采取動(dòng)作。如果設(shè)置為SYSLOG,則當(dāng)達(dá)到文件容量時(shí)會(huì)向系統(tǒng)日志/var/log/messages中寫(xiě)入一條警告。如果設(shè)置為SUSPEND,則當(dāng)達(dá)到文件容量后不會(huì)向日志文件寫(xiě)入審計(jì)消息。如果設(shè)置為ROTATE,則當(dāng)達(dá)到指定文件容量后會(huì)循環(huán)日志文件,但是只會(huì)保存一定數(shù)目的老文件,這個(gè)數(shù)目由num_logs參數(shù)指定。老文件的文件名將為audit.log.N,其中N是一個(gè)數(shù)字。這個(gè)數(shù)字越大,則文件越老。如果設(shè)置為KEEP_LOGS,則會(huì)循環(huán)日志文件,但是會(huì)忽略num_logs參數(shù),因此不會(huì)刪除日志文件 |
space_left = |
以兆字節(jié)表示的磁盤(pán)空間數(shù)量。當(dāng)達(dá)到這個(gè)水平時(shí),會(huì)采取space_left_action參數(shù)中的動(dòng)作 |
space_left_action = |
當(dāng)磁盤(pán)空間量達(dá)到space_left中的值時(shí),采取這個(gè)動(dòng)作。有效值為IGNORE、SYSLOG、EMAIL、SUSPEND、SINGLE和HALT。如果設(shè)置為IGNORE,則不采取動(dòng)作。如果設(shè)置為SYSLOG,則向系統(tǒng)日志/var/log/messages寫(xiě)一條警告消息。如果設(shè)置為EMAIL,則從action_mail_acct向這個(gè)地址發(fā)送一封電子郵件,并向/var/log/messages中寫(xiě)一條警告消息。如果設(shè)置為SUSPEND,則不再向?qū)徲?jì)日志文件中寫(xiě)警告消息。如果設(shè)置為SINGLE,則系統(tǒng)將在單用戶(hù)模式下。如果設(shè)置為SALT,則系統(tǒng)會(huì)關(guān)閉 |
action_mail_acct = |
負(fù)責(zé)維護(hù)審計(jì)守護(hù)進(jìn)程和日志的管理員的電子郵件地址。如果地址沒(méi)有主機(jī)名,則假定主機(jī)名為本地地址,比如root。必須安裝sendmail并配置為向指定電子郵件地址發(fā)送電子郵件 |
admin_space_left = |
以兆字節(jié)表示的磁盤(pán)空間數(shù)量。用這個(gè)選項(xiàng)設(shè)置比space_left_action更多的主動(dòng)性動(dòng)作,以防萬(wàn)一space_left_action沒(méi)有讓管理員釋放任何磁盤(pán)空間。這個(gè)值應(yīng)小于space_left_action。如果達(dá)到這個(gè)水平,則會(huì)采取admin_space_left_ action所指定的動(dòng)作 |
admin_space_left_action = |
當(dāng)自由磁盤(pán)空間量達(dá)到admin_space_left指定的值時(shí),則采取動(dòng)作。有效值為IGNORE、SYSLOG、EMAIL、SUSPEND、SINGLE和HALT |
disk_full_action = |
如果含有這個(gè)審計(jì)文件的分區(qū)已滿,則采取這個(gè)動(dòng)作。可能值為IGNORE、SYSLOG、SUSPEND、SINGLE和HALT |
disk_error_action = |
如果在寫(xiě)審計(jì)日志或循環(huán)日志文件時(shí)檢測(cè)到錯(cuò)誤時(shí)采取的動(dòng)作。值必須是IGNORE、SYSLOG、SUSPEND、SINGLE和HALT之一 |
說(shuō)明: /etc/sysconfig/auditd文件可以用來(lái)設(shè)置帶EXTRAOPTIONS參數(shù)的auditd的命令行選項(xiàng)。唯一的命令行選項(xiàng)-f以調(diào)試模式安排守護(hù)進(jìn)程。如果啟用了調(diào)試模式,則會(huì)出現(xiàn)標(biāo)準(zhǔn)錯(cuò)誤消息而不是日志文件。AUDITD_LANG設(shè)置值可以用來(lái)修改守護(hù)進(jìn)程的位置。如果設(shè)置為none,則所有位置信息會(huì)從審計(jì)環(huán)境中刪除。如果AUDITD_CLEAN _STOP選項(xiàng)設(shè)置為yes,則當(dāng)用service auditd stop命令停止守護(hù)進(jìn)程時(shí),會(huì)刪除審計(jì)規(guī)則與觀察器。
(3)審計(jì)規(guī)則文件/etc/audit/audit.rules
要添加審計(jì)規(guī)則,可在/etc/audit/audit.rules文件中用下面的語(yǔ)法:
-a <list>,<action> <options>
以下在 CentOS 6 下的 audit.rules 下配置,請(qǐng)根據(jù)不同的環(huán)境進(jìn)行修改。
添加基本的審計(jì)配置參數(shù)
-D
-b 8192
-f 1
-e 1
添加 audit 日志文件和配置文件的審計(jì)
-w /var/log/audit/
-w /etc/audit/auditd.conf -p rxwa
-w /etc/audit/audit.rules -p rxwa
-w /etc/passwd -p rwxa
-w /etc/sysconfig/
注意:監(jiān)控系統(tǒng)調(diào)用可能會(huì)引起高負(fù)荷的日志活動(dòng),這會(huì)讓內(nèi)核承受更大的負(fù)荷。所以要慎重衡量哪些系統(tǒng)調(diào)用需要放到 audit.rules 中。如果審計(jì)的是目錄的話,只能對(duì)該目錄本身的屬性進(jìn)行審計(jì),也就是諸如擁有者,目錄權(quán)限之類(lèi)的進(jìn)行審計(jì),并不能審計(jì)目錄下面的文件。如果想審計(jì)下面的文件,需要一一列出。另外不支持通配符/正則。
監(jiān)控其他的系統(tǒng)調(diào)用
-a entry,always -F arch=b64 -S clone -S fork -S vfork
-a entry,always -S umask
-a entry,always -S adjtimex -S settimeofday
以上的都設(shè)置完畢了,就可以生成各種報(bào)告了。
(4) 啟動(dòng)auditd守護(hù)進(jìn)程
#service auditd start
如果在守護(hù)進(jìn)程運(yùn)行時(shí)您添加了觀察器/etc/audit/audit.rules,則一定要以根用戶(hù)身份用service auditd restart命令啟用修改。也可以用service auditd reload命令,但是它不會(huì)通知您關(guān)于配置文件錯(cuò)誤的消息。
要使它自動(dòng)在運(yùn)行時(shí)啟動(dòng),則應(yīng)作為根用戶(hù)執(zhí)行命令:
chkconfig auditd on
要停止它,可使用service auditd stop命令,要驗(yàn)證規(guī)則與觀察器已經(jīng)修改,應(yīng)以根用戶(hù)身份執(zhí)行auditctl -1命令列出所有活動(dòng)的規(guī)則和觀察器。
auditctl -1#p#
三、用戶(hù)空間審計(jì)系統(tǒng)的使用實(shí)例
1 auditctl命令實(shí)例:
auditctl用于對(duì)kernel中的audit進(jìn)行控制,可以用來(lái)獲取audit狀態(tài)和增刪audit規(guī)則。auditctl命令控制行為、得到狀態(tài)、從內(nèi)核審計(jì)系統(tǒng)增加或刪除規(guī)則。命令格式如下:
auditctl [options]
auditctl的命令行選項(xiàng)(options)很多,例如:
-e [0|1]表示停止或啟動(dòng)內(nèi)核審計(jì)功能;-a表示將規(guī)則追加到鏈表;-S表示系統(tǒng)調(diào)用號(hào)或名字;-F表示規(guī)則域。-w表示為文件系統(tǒng)對(duì)象<path>插入一個(gè)watch(監(jiān)視)。-p 表示設(shè)置文件權(quán)限。-k key 表示設(shè)置審計(jì)規(guī)則上的過(guò)濾關(guān)鍵詞key,key是不超過(guò)32字節(jié)長(zhǎng)的任意字符串,它能唯一鑒別由watch產(chǎn)生的審計(jì)記錄 。-D 表示刪除所有的規(guī)則和watch 。-s 表示報(bào)告狀態(tài) 。
下面是幾個(gè)例子:
先查看audit運(yùn)行狀態(tài)
# auditctl -s
AUDIT_STATUS: enabled=1 flag=1 pid=1585 rate_limit=0 backlog_limit=256 lost=0 backlog=0
通過(guò)enabled flag rate_limit backlog_limit lost backlog參數(shù)可以得知audit運(yùn)行狀態(tài)是否正常。
從 auditctl 命令參數(shù)可以看到
enabled值為 [0|1] 啟用/禁用audit審核.
flag值為 [0.1.2] 設(shè)置失敗標(biāo)記的等級(jí),有0,1,2三個(gè)值,0是不輸出日志,1為輸出printk日志,2為最高級(jí),會(huì)大量輸出日志信息。這個(gè)選項(xiàng)用于設(shè)置audit獲得錯(cuò)誤的等級(jí).默認(rèn)值為1.在安全環(huán)境下可以設(shè)置為2 。
查看已有的audit規(guī)則
# auditctl -l
添加一條audit規(guī)則,記錄maj用戶(hù)的所用open系統(tǒng)調(diào)用
# auditctl -a entry,always -S open -F uid=500
open表示:要查看某一特定用戶(hù)打開(kāi)的文件
在另一個(gè)終端以maj用戶(hù)登錄,登錄后執(zhí)行一個(gè)ls命令即可
刪除這條audit規(guī)則
# auditctl -d entry,always -S open -F uid=500
如不想看到用戶(hù)登陸類(lèi)型的消息,可以如下添加規(guī)則:
#auditctl -a exclude,always -F msgtype=USER_LOGIN
這里過(guò)濾是以“消息類(lèi)型”為對(duì)象的。
監(jiān)視/etc/passwd文件被讀、寫(xiě)、執(zhí)行、修改文件屬性的操作記錄
#auditctl -w /etc/passwd -p rwax
查看程序所有的系統(tǒng)調(diào)用
#auditctl -a entry,always -S all -F pid=1005
查看指定用戶(hù)打開(kāi)的文件
#auditctl -a exit,always -S open -F auid=510
查看不成功的open系統(tǒng)調(diào)用
auditctl -a exit,always -S open -F success!=0
設(shè)置規(guī)則和顯示規(guī)則的命令樣例列出如下:
#auditctl -a entry,always -S all -F pid=1005
#auditctl -l
LIST_RULES: entry,always pid=1005 (0x3ed) syscall=all
查看audit日志文件:
#cat /var/log/audit/audit.log
2 使用aureport 生成報(bào)表
要生成審計(jì)消息的報(bào)表,可使用aureport。為了安全起見(jiàn)/var/log/audit/目錄和其中的所有審計(jì)日志文件只對(duì)根用戶(hù)可讀。因此必須作為根用戶(hù)執(zhí)行aureport命令。aureport 命令格式:
aureport [選項(xiàng)]
主要選項(xiàng):
-a 報(bào)告關(guān)于訪問(wèn)向量緩沖(access vector cache,AVC)的消息
-c報(bào)告關(guān)于配置修改的消息
-cr報(bào)告關(guān)于crypto事件的消息
-e報(bào)告關(guān)于事件的消息
-f報(bào)告關(guān)于文件的消息
-h報(bào)告關(guān)于主機(jī)的消息
-l報(bào)告關(guān)于登錄的消息
-m報(bào)告關(guān)于賬戶(hù)修改的消息
-ma報(bào)告關(guān)于Mandatory Access Control(MAC)事件的消息
-p報(bào)告關(guān)于進(jìn)程的消息
-s報(bào)告關(guān)于系統(tǒng)調(diào)用的消息
-tm報(bào)告關(guān)于終端的消息
如果執(zhí)行aureport時(shí)沒(méi)有使用任何選項(xiàng),則會(huì)顯示如匯總報(bào)表。
要顯示每個(gè)日志的啟動(dòng)和停止時(shí)間,可以添加-t選項(xiàng):
aureport -<flag> -i -t
要僅顯示失敗事件,則使用- -failure,注意這個(gè)選項(xiàng)前面有兩條虛線而不是一條:
aureport -<flag> -i --failed
要僅顯示成功事件,則使用- -success,注意這個(gè)選項(xiàng)前面有兩條虛線而不是一條:
aureport -<flag> -i --success
要產(chǎn)生來(lái)自一個(gè)日志文件的報(bào)表而不是默認(rèn)報(bào)表,則可用-if選項(xiàng)指定它:
aureport -<flag> -i -if /var/log/audit/audit.log.1
下面是一些實(shí)際的例子:
生成一段特定時(shí)間內(nèi)的報(bào)告
# aureport -ts 8:00 -te 17:30 -f -i
顯示失敗事件
# aureport –-failed
顯示成功事件
# aureport –-success
列出未被成功訪問(wèn)的文件
# aureport -f -i –-failed --summary
還可以圖形化報(bào)告,下載如下腳本:
# wget http://people.redhat.com/sgrubb/audit/visualize/mkbar
#chmod +x mkbar
在rhel和 centos 上需要安裝 gnuplot
# yum install gnuplot
生成整體的事件報(bào)告
# aureport -e -i --summary | /path/mkbar events
系統(tǒng)會(huì)生成一個(gè)圖像文件events.png如圖2 。
圖2 整體的事件報(bào)告圖像文件
生成文件事件報(bào)告
# aureport -f -i --summary | /path/mkbar files
生成登陸事件報(bào)告
# aureport -l -i --summary | /path/mkbar login
生成用戶(hù)事件報(bào)告
# aureport -u -i --summary | /path/mkbar users
生成系統(tǒng)調(diào)用事件報(bào)告
# aureport -s -i --summary | /path/mkbar syscalls
要了解不同 audit 對(duì)象之間的關(guān)系,比如用戶(hù)跟系統(tǒng)調(diào)用,可以使用 mkgraph 腳本
使用 mkgraph 要用到 graphviz請(qǐng)先配置好再使用:
# wget http://people.redhat.com/sgrubb/audit/visualize/mkgraph
##chmod +x mkgraph
例如users 和 executables關(guān)系
# aureport -u -i | awk '/^[0-9]/ { print $4" "$7 }' | sort | uniq | mkgraph users_vs_exec
審計(jì)守護(hù)進(jìn)程將關(guān)于這些事件的日志消息寫(xiě)到專(zhuān)門(mén)的日志文件中。然后可以用aureport和ausearch實(shí)用程序生成報(bào)表來(lái)找到失敗的系統(tǒng)調(diào)用,以確定誰(shuí)在訪問(wèn)文件以及訪問(wèn)頻率如何,執(zhí)行程序是成功的還是失敗等。舉個(gè)安全管理的例子,如果使用aureport命令發(fā)現(xiàn)如下字段信息:
Number of logins: 111
Number of failed logins: 111
Number of authentications: 111
Number of failed authentications:111
表示111次登錄并且全部失敗, (我們知道一個(gè)正常用戶(hù)不可能連續(xù)登錄系統(tǒng)111次并且每次都失敗而且連續(xù)不斷)那么系統(tǒng)可能遭到暴力口令登錄 。
3 使用ausearch命令使用搜索記錄
ausearch的語(yǔ)法列出如下:
ausearch [ options ]
其中,options表示選項(xiàng)值,如:-a <audit event id>、-f <file name>等。
除了生成事件報(bào)表并用aureport匯總外,管理員也可以用ausearch搜索審計(jì)記錄。以根用戶(hù)身份執(zhí)行ausearch命令,當(dāng)顯示結(jié)果時(shí),每個(gè)記錄用4條虛線組成的一行隔開(kāi),每個(gè)記錄前均顯示時(shí)間標(biāo)記。圖3 是ausearch -x su中的結(jié)果 。
圖3 ausearch -x su中的結(jié)果
設(shè)置 Keys 來(lái)管理審計(jì)事件記錄
假設(shè)你在 audit.rules 下加了如下的一條規(guī)則
-w /etc/audit/audit.rules -p wa
如果沒(méi)有 key,如果要查找 SYSCALL 或者 PATH 事件,你可能要使用 grep 等類(lèi)似的工具才能過(guò)濾到你想要的內(nèi)容。使用 key 就能簡(jiǎn)化上述的過(guò)程
-w /etc/audit/audit.rules -p wa -k CFG_audit.rules
-k 后面的內(nèi)容是你自己定義的。現(xiàn)在要找特定的內(nèi)容就容易多了
# ausearch -k CFG_audit.rules
4 使用seaudit工具查看Linux 用戶(hù)空間審計(jì)系統(tǒng)信息
seaudit是SElinux故障診斷工具包(setools-gui)的組件。打開(kāi)seaudit工具可以看到許多Linux 用戶(hù)空間審計(jì)系統(tǒng)信息,seaudit工具可以讀取/var/log/audit/audit.log,方法是從file菜單選擇“open log “打開(kāi)/var/log/audit/audit.log seaudit工作界面如圖4。
圖4使用seaudit工具查看Linux安全審計(jì)信息
使用seaudit工具也可以生成報(bào)表方法是從tools菜單選擇“Creat Report “如圖5 。
圖5 使用seaudit工具生成報(bào)表
可以使用瀏覽器查看生成的報(bào)表文件如圖6 。
圖6 使用瀏覽器查看生成的報(bào)表文件
總結(jié):Linux提供了用來(lái)記錄系統(tǒng)安全信息的審計(jì)系統(tǒng),審計(jì)系統(tǒng)分為用戶(hù)空間和內(nèi)核空間審計(jì)系統(tǒng),用戶(hù)空間審計(jì)系統(tǒng)用來(lái)設(shè)置規(guī)則和審計(jì)系統(tǒng)狀態(tài)、將內(nèi)核審計(jì)系 統(tǒng)傳來(lái)的審計(jì)消息寫(xiě)入log文件。內(nèi)核審計(jì)系統(tǒng)用于產(chǎn)生和過(guò)濾內(nèi)核的各種審計(jì)消息。本文重點(diǎn)介紹Linux用戶(hù)空間審計(jì)系統(tǒng)的使用。另外Linux用戶(hù)空間審計(jì)系統(tǒng)通常是和Selinux系統(tǒng)配合使用的 。