減少auditd的冗長,我的最小規則擷取他們不應該的東西(apparmor)
我的 auditd 規則和我的需求相當簡單,我只想記錄 root 操作。
# auditctl -l -a always,exit -S all -F euid=0 -F perm=x -F key=ROOT_ACTION
這是唯一的規則,並且有效:
type=SYSCALL msg=audit(1550318220.514:11479): arch=c000003e syscall=59 success=yes exit=0 a0=56002fde79a8 a1=56002fdeffc8 a2=56002fdee3a0 a3=0 items=2 ppid=7250 pid=7251 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts6 ses=1 comm="tail" exe="/usr/bin/tail" key="ROOT_ACTION"
但是,我也有 apparmor 配置文件來明確拒絕他們不需要的某些應用程序權限。這是經過深思熟慮的,並且按預期工作。但是,它們會導致我的 auditd.log 被垃圾郵件發送,例如:
type=AVC msg=audit(1550309442.438:207): apparmor="DENIED" operation="exec" profile="/usr/lib/slack/slack" name="/bin/dash" pid=2893 comm="slack" requested_mask="x" denied_mask="x" fsuid=1000 ouid=0
如您所見,這是由作為非 root 使用者執行的 Slack 執行的,並沒有被我的 ROOT_ACTION 審核規則擷取。
它做了很多:
# cat /var/log/audit/*| egrep apparmor | wc -l 40574
那是在不到 24 小時內。
我意識到我可以使用 aureport 和 ausearch 或無數其他方法來過濾我看到的內容。但是,我不想引入只發現我所期待的怪異的偏見,因為讓我擔心的是出乎意料的事情。
那麼,我該如何:
- 阻止 auditd 將這些事件附加到 /var/log/audit/audit.log?
- 防止 apparmor 在單個配置文件(不是全域)的上下文中記錄被拒絕的活動(更新,Hargut 下面的回答解決了這個問題,解決方案是明確使用不記錄的“拒絕”)
幫助!
在詳細了解了一些細節之後,還有一些方法可以在
auditd
級別上配置您的要求。有一個名為的列表,exclude
您可以在其中添加要過濾的規則。例如,以下命令將排除任何 AVC 消息:
auditctl -a never,exclude -F msgtype=AVC
在這種情況下,審計事件由
apparmor
載入的apparmor
配置生成並控制。auditctl
核心審計子系統上沒有可以控制/刪除的相應規則。可以使用具有相應匹配規則的列表來創建顯式
auditctl
過濾規則。exclude
apparmor
就我個人而言,我更喜歡通過僅配置為不需要生成審計事件的方式deny
。AVC 也稱為訪問向量記憶體。SELinux/Apparmor 使用這個記憶體來記錄訪問決策,看起來這個消息類型預設是用 auditd 記錄的,如果使用者不想要,必須明確拒絕。
auditctl
手冊頁將此列為該部分中的範例exclude
。此外,在 SELinux 中,還有一種機制可以在 auditd 未執行時將 AVC 日誌寫入磁碟。