Ubuntu

減少auditd的冗長,我的最小規則擷取他們不應該的東西(apparmor)

  • February 16, 2019

我的 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 或無數其他方法來過濾我看到的內容。但是,我不想引入只發現我所期待的怪異的偏見,因為讓我擔心的是出乎意料的事情。

那麼,我該如何:

  1. 阻止 auditd 將這些事件附加到 /var/log/audit/audit.log?
  2. 防止 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 日誌寫入磁碟。

引用自:https://serverfault.com/questions/954264