張 雷,謝明玉
(阿壩師范學(xué)院,四川汶川 623002)
audit 用戶空間子系統(tǒng)作為用戶態(tài)系統(tǒng)程序,主要包括auditd、auditctl、ausearch 和aureport 等子系統(tǒng)模塊。audit 用戶空間子系統(tǒng)通過設(shè)置配置文件和文件監(jiān)控規(guī)則控制內(nèi)核kauditd 模塊只產(chǎn)生監(jiān)控文件操作日志數(shù)據(jù)并轉(zhuǎn)存。
(1)auditd.conf 設(shè) 置。auditd.conf 作 為audit 審計守護(hù)程序的配置文件,其相關(guān)參數(shù)可設(shè)置日志數(shù)據(jù)的輸出存儲方式。通過對local_events、write_logs、log_format 和q_depth 參數(shù)分 別設(shè)置 為yes、no、ENRICHED 和2000,擴展audit 分發(fā)器內(nèi)部隊列大小,阻止日志數(shù)據(jù)落盤,便于日志數(shù)據(jù)轉(zhuǎn)存。
(2)audit.rules 文件規(guī)則設(shè)置。audit.rules 文件用于存儲控制規(guī)則、文件系統(tǒng)規(guī)則和系統(tǒng)調(diào)用規(guī)則。通過把目標(biāo)文件監(jiān)控規(guī)則存儲在此文件,重啟audit 審計守護(hù)程序,接收內(nèi)核kauditd 模塊產(chǎn)生的文件操作日志數(shù)據(jù)。
netlink 作為unix/linux 所特有的IPC 機制,是一種異步全雙工通信方式,支持由內(nèi)核發(fā)起通信并為netlink 通信提供一組特殊API 接口,用戶態(tài)則基于socket API,實現(xiàn)內(nèi)核態(tài)進(jìn)程和用戶態(tài)進(jìn)程之間雙工數(shù)據(jù)傳輸。內(nèi)核態(tài)進(jìn)程kuaidtd 通過netlink 通信機制向用戶態(tài)守護(hù)進(jìn)程auditd 傳輸各類審計文件操作日志數(shù)據(jù)并保存在auditd 守護(hù)進(jìn)程的socket 緩存接收隊列中,由auditd 守護(hù)進(jìn)程根據(jù)其配置文件決定是存儲到/var/log/audit 文件夾下,或是借助第三方程序轉(zhuǎn)存。
為轉(zhuǎn)存文件操作日志數(shù)據(jù),重啟audit 用戶態(tài)審計子系統(tǒng),根據(jù)已設(shè)置的auditd.conf 文件初始化audit 子系統(tǒng),按照unix 域配置文件(af_unix.conf)建立一個本地通信服務(wù)器端,其unix socket 配置路徑為/var/run/audispd_events;同時,為在本地接收文件操作日志數(shù)據(jù),建立本地文件操作日志數(shù)據(jù)接收客戶端,等待接收服務(wù)器端傳輸?shù)娜罩緮?shù)據(jù)。啟動本地通信客戶端程序,建立本地進(jìn)程間的unix 域套接字通信關(guān)聯(lián),隨時接收auditd 守護(hù)進(jìn)程轉(zhuǎn)發(fā)的各位審計文件操作日志數(shù)據(jù)。
/proc 文件系統(tǒng)作為一個偽文件系統(tǒng),只存在于內(nèi)存中,不占用外存空間。在/proc 文件系統(tǒng)中存儲文件,其數(shù)據(jù)讀寫效率比外存快幾十甚至上百倍。在/proc 目錄下創(chuàng)建auditlog 目錄,在此目錄里創(chuàng)建審計文件操作日志數(shù)據(jù)存儲文件logN(0 ≤n<6),每個日志文件依次存儲1 min 內(nèi)的日志數(shù)據(jù),當(dāng)N≥6時,N清零重新賦值為0,日志文件輪轉(zhuǎn)覆蓋寫存儲日志數(shù)據(jù),確保日志數(shù)據(jù)能夠快速存儲與讀寫。
audit 審計系統(tǒng)一般安裝在unix/Linux 服務(wù)器系統(tǒng)上,通過設(shè)置文件監(jiān)控規(guī)則控制內(nèi)核kauditd 進(jìn)程只產(chǎn)生文件操作日志數(shù)據(jù)事件,通過netlink 和unix域套接字通信傳輸?shù)奈募僮魅罩緮?shù)據(jù)輪轉(zhuǎn)覆蓋寫存儲于/proc/auditlog 文件目錄下的logN文件內(nèi)。文件操作日志數(shù)據(jù)事件通常包含類型為PROCTITLE、PATH、SYSCALL 和CWD4 條記錄,全面記錄文件操作的動態(tài)和靜態(tài)關(guān)聯(lián)日志數(shù)據(jù)。
audit 系統(tǒng)雖設(shè)置了文件監(jiān)控規(guī)則,但其仍能夠額外獲取一部分關(guān)聯(lián)的日志數(shù)據(jù)信息。為方便日志數(shù)據(jù)解析,在數(shù)據(jù)解析之前,依據(jù)文件操作日志數(shù)據(jù)ID 和記錄標(biāo)記關(guān)鍵字,過濾多余日志數(shù)據(jù)記錄,精簡日志數(shù)據(jù),提升數(shù)據(jù)解析精度和效率。
根據(jù)文件操作日志數(shù)據(jù)特點,運用auditDataParse庫,以記錄類型為單位,把日志數(shù)據(jù)拆分成鍵值對,從PROCTITLE 類型中提取時間戳、事件ID、文件操作命令和參數(shù),從PATH 類型中提取文件名稱及其操作權(quán)限,從SYSCALL 類型中提取具體操作用戶和操作結(jié)論,從CWD 類型中提取當(dāng)前工作目錄,最后所有提取目標(biāo)日志數(shù)據(jù)存儲到結(jié)構(gòu)體struct audit。運用auditDataPars 庫中的解析方法,把相應(yīng)的數(shù)字日志數(shù)據(jù)解析成對應(yīng)的文本日志數(shù)據(jù)并以事件ID 為主鍵存儲于MYSQL 數(shù)據(jù)庫中。
audit 審計系統(tǒng)產(chǎn)生海量的日志數(shù)據(jù),包含文件操作日志數(shù)據(jù)(前提是設(shè)置好文件監(jiān)控規(guī)則)。文章在audit 審計系統(tǒng)產(chǎn)生文件操作日志數(shù)據(jù)的基礎(chǔ)上,有效設(shè)置配置文件和文件監(jiān)控規(guī)則文件,優(yōu)化文件操作日志數(shù)據(jù)傳輸和存儲,運用auditDataParse 庫提取和解析文件操作日志數(shù)據(jù),完成文件操作日志數(shù)據(jù)收集與存儲。其文件操作溯源機制框架設(shè)計如圖1所示。
圖1 文件操作溯源框架設(shè)計
文件操作溯源框架包含定制化配置、傳輸層、數(shù)據(jù)存儲與處理層、數(shù)據(jù)庫層和顯示層5個層次。據(jù)此框架設(shè)計,可開發(fā)設(shè)計實現(xiàn)Linux 下文件操作溯源。
在Linux 系統(tǒng)(centOS 8)下,基于audit 審計系統(tǒng)(audit 3.0)按上述框架完成文件操作溯源編程。其文件操作溯源如下。
(1)設(shè)定配置文件auditd.conf 參數(shù)。
(2)設(shè)置系統(tǒng)控制和文件系統(tǒng)規(guī)則文件 audit.rules。
(3)重啟audit 審計系統(tǒng)。
(4)在/home/autest 文件夾下執(zhí)行如下操作。
(5)根據(jù)溯源框架傳輸層和數(shù)據(jù)存儲與處理層,獲取文件操作日志數(shù)據(jù)并提取、過濾和分析。
(6)存儲溯源文件操作日志數(shù)據(jù)到MYSQL 數(shù)據(jù)庫。
其對應(yīng)的文件操作記錄數(shù)據(jù)結(jié)果見表1。
表1 文件操作溯源記錄信息
文章基于audit 審計系統(tǒng),構(gòu)建文件操作溯源框架,設(shè)置守護(hù)進(jìn)程配置文件和文件監(jiān)控規(guī)則文件,建立netlink 和unix 域套接字日志通信與/proc 存儲,基于auditDataParse 庫提取、過濾和解析日志,實現(xiàn)溯源文件操作記錄信息。但由于audit 審計系統(tǒng)緩存隊列大小限制,在有海量日志數(shù)據(jù)的情況下,容易丟失日志數(shù)據(jù)。所以基于audit 的文件操作溯源機制適合運用于中型及小型Linux 服務(wù)系統(tǒng)。