私のauditdルールとニーズはかなり単純です。ルートアクションのみをログに記録します。
# 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
レベルで要件を構成する方法もあります。除外するルールを追加できる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ログをディスクに書き込むメカニズムもあります。
ドキュメントを見ると、これは対応するapparmorプロファイルで設定する必要があることがわかりました。
http://manpages.ubuntu.com/manpages/cosmic/man5/apparmor.d.5.html
Manページからの引用:
Rule Qualifiers
There are several rule qualifiers that can be applied to permission rules. Rule qualifiers can modify the rule and/or permissions within the rule.
allow
Specifies that permissions requests that match the rule are allowed. This is the default value for rules and does not need to be specified. Conflicts with the deny qualifier.
audit
Specifies that permissions requests that match the rule should be recorded to the audit log.
deny
Specifies that permissions requests that match the rule should be denied without logging. Can be combined with 'audit' to enable logging. Conflicts with the allow qualifier.