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