Linux-Audit

使用 auditd 擷取“權限被拒絕”通知

  • August 5, 2015

我試圖弄清楚當使用者Permission denied在嘗試訪問文件後收到通知時如何記錄/跟踪。我讀過添加規則/etc/audit/audit.rules可以實現這一點。

我看到的唯一建議似乎沒有按預期工作。或者,至少,它沒有做我想做的事。它很可能會按照它的編寫方式工作。規則是

-a always,exit -F arch=b64 -S open -F success!=0

實際上,上面連結中的建議不包括 arch 選項。我不得不補充一點。

拖尾時/var/log/audit/audit.log,我看到了所有內容success=yes。這包括當我點擊視窗並更改焦點或輸入組合鍵以在視窗功能之間進行更改時。我沒有看到任何與Permission denied包含success=no條目或有關我試圖打開的特定文件的任何內容,因為我知道我沒有權限。

我只能明確地說,當我 grep for success=noin /var/log/audit/audit.lognothing 時會返回。

規則應該是什麼?或者更好的是,這真的可能嗎?上面的解決方案不正確嗎?

我一直在使用工具,發現如果我使用success!=1thenaudit.log將顯示指示success=no. 這對我來說似乎違反直覺,因為非零退出程式碼通常表示某種失敗,但!=1可能是任何東西,包括其他失敗退出程式碼以及成功 ( 0)。但有趣的是,這些並沒有出現。

另一個問題是它沒有指出哪個文件的訪問失敗。相反,它只列出在返回失敗的退出程式碼時執行的命令。就我而言,我正在執行cat /etc/shadow. 所以,而不是看到

type=SYSCALL msg=audit(1438754257.463:11451): arch=c000003e syscall=2 success=no exit=-13 a0=7ffea511f35f a1=0 a2=1ffffffffffe0000 a3=0 items=1 ppid=1650 pid=5489 auid=1000 uid=1000 gid=100 euid=1000 suid=1000 fsuid=1000 egid=100 sgid=100 fsgid=100 tty=pts0 ses=1 comm="cat" exe="/usr/bin/cat" key="access"
type=CWD msg=audit(1438754257.463:11451):  cwd="/home/msnyder"
type=PATH msg=audit(1438754257.463:11451): item=0 name="/etc/shadow" inode=1131047 dev=00:20 mode=0100640 ouid=0 ogid=15 rdev=00:00 nametype=NORMAL

我只會看到

type=SYSCALL msg=audit(1438752096.223:4952): arch=c000003e syscall=2 success=yes exit=3 a0=7f77d575c057 a1=80000 a2=1 a3=22 items=1 ppid=1650 pid=4873 auid=1000 uid=1000 gid=100 euid=1000 suid=1000 fsuid=1000 egid=100 sgid=100 fsgid=100 tty=pts0 ses=1 comm="cat" exe="/usr/bin/cat" key=(null)
type=CWD msg=audit(1438752096.223:4952):  cwd="/home/msnyder"

然後我查看了audit.rules手冊頁。**尤里卡!**答案一直都在裡面:

-a always,exit -F arch=b64 -S open,openat -F exit=-EACCES -F key=access
-a always,exit -F arch=b64 -S open,openat -F exit=-EPERM -F key=access

這兩個規則結合起來解決了這個問題。它不僅會記錄失敗的文件訪問,還會記錄嘗試訪問的文件。這會導致上面的前三個日誌條目包含文件名。

引用自:https://unix.stackexchange.com/questions/220250