如何跟蹤進(jìn)程文件訪問 auditd審計(jì)系統(tǒng)配置指南

auditd可通過添加規(guī)則追蹤進(jìn)程文件訪問,具體步驟為:1.使用auditctl指定路徑或pid設(shè)置監(jiān)控規(guī)則;2.利用ausearch查詢?nèi)罩荆?.編輯配置文件實(shí)現(xiàn)規(guī)則持久化。例如用auditctl -w /usr/bin/myapp -p war -k myapp_access監(jiān)控文件訪問,通過ausearch -k myapp_Access篩選日志,將規(guī)則寫入/etc/audit/rules.d/目錄下的文件確保重啟生效,并需注意權(quán)限、性能、日志輪轉(zhuǎn)及安全模塊干擾等問題。

如何跟蹤進(jìn)程文件訪問 auditd審計(jì)系統(tǒng)配置指南

如果你在 linux 系統(tǒng)中需要追蹤某個(gè)進(jìn)程訪問了哪些文件,auditd 是一個(gè)非常實(shí)用的工具。它不像簡單的 strace 那樣只能臨時(shí)追蹤,而是可以長期記錄、審計(jì)系統(tǒng)調(diào)用和文件訪問行為。下面是一些實(shí)際配置方法和建議,幫助你快速上手 auditd 來監(jiān)控特定進(jìn)程的文件訪問。

如何跟蹤進(jìn)程文件訪問 auditd審計(jì)系統(tǒng)配置指南


如何添加針對(duì)某個(gè)進(jìn)程的審計(jì)規(guī)則

首先你需要知道要監(jiān)控的進(jìn)程 PID 或者程序路徑。假設(shè)你想跟蹤 /usr/bin/myapp 這個(gè)程序訪問的所有文件,你可以使用 auditctl 添加如下規(guī)則:

如何跟蹤進(jìn)程文件訪問 auditd審計(jì)系統(tǒng)配置指南

auditctl -w /usr/bin/myapp -p war -k myapp_access
  • -w 指定要監(jiān)控的路徑;
  • -p war 表示監(jiān)聽寫入(w)、屬性修改(a)、執(zhí)行(r)等操作;
  • -k 是一個(gè)可選標(biāo)簽,方便后面查詢?nèi)罩緯r(shí)過濾。

如果你已經(jīng)知道目標(biāo)進(jìn)程的 PID,也可以通過系統(tǒng)調(diào)用來更精確地跟蹤:

auditctl -F pid=<PID> -S openat -S open -k file_open_by_pid

這樣就只會(huì)記錄該進(jìn)程調(diào)用 open() 或 openat() 的情況。

如何跟蹤進(jìn)程文件訪問 auditd審計(jì)系統(tǒng)配置指南


怎么查看審計(jì)日志并過濾關(guān)鍵信息

auditd 的日志默認(rèn)保存在 /var/log/audit/audit.log 中。由于日志量可能很大,建議使用 ausearch 工具來篩選:

ausearch -k myapp_access

或者根據(jù) PID 查詢:

ausearch -p <PID>

輸出的日志中會(huì)包含訪問的文件名、調(diào)用的系統(tǒng)調(diào)用號(hào)、成功與否的狀態(tài)等信息。例如你會(huì)看到類似下面的內(nèi)容:

type=SYSCALL msg=audit(1234567890.123:456): arch=c000003e syscall=2 success=yes exit=3 ... type=PATH msg=audit(...): name="/etc/passwd" ...

其中 name= 后面就是被訪問的文件路徑。


審計(jì)規(guī)則持久化保存的方法

上面提到的 auditctl 命令是臨時(shí)生效的,重啟后會(huì)失效。如果希望規(guī)則持久保留,需要編輯 /etc/audit/audit.rules 文件或在 /etc/audit/rules.d/ 目錄下新建 .rules 文件。

例如創(chuàng)建 /etc/audit/rules.d/myapp.rules 內(nèi)容如下:

-w /usr/bin/myapp -p war -k myapp_access

然后加載規(guī)則:

augenrules --load

這樣即使系統(tǒng)重啟后規(guī)則也會(huì)自動(dòng)生效。


一些容易忽略但重要的細(xì)節(jié)

  • 權(quán)限問題:auditd 需要 root 權(quán)限才能添加規(guī)則和讀取日志;
  • 性能影響:不要過度監(jiān)控大范圍路徑(比如整個(gè)根目錄),否則會(huì)影響系統(tǒng)性能;
  • 日志輪轉(zhuǎn):確保配置了 logrotate 或 auditd 自帶的輪轉(zhuǎn)機(jī)制,防止日志過大;
  • 系統(tǒng)調(diào)用兼容性:不同架構(gòu)下的系統(tǒng)調(diào)用號(hào)可能不同,使用 ausyscall 可以查看當(dāng)前系統(tǒng)的調(diào)用名對(duì)應(yīng)編號(hào);
  • SELinux/AppArmor干擾:某些安全模塊可能會(huì)限制 auditd 的行為,注意排查相關(guān)策略。

基本上就這些,auditd 功能強(qiáng)大但配置不復(fù)雜,只要理解規(guī)則語法和日志結(jié)構(gòu),就能輕松實(shí)現(xiàn)對(duì)進(jìn)程文件訪問的追蹤。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊8 分享