web-dev-qa-db-ja.com

auditdの冗長性を減らし、私の最小限のルールは、彼らがしてはいけないもの(apparmor)をキャッチします

私の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、または無数の他の方法を使用して、表示されているものをフィルタリングできることに気付きました。しかし、私が心配していたのは予期せぬことなので、私が期待していた奇妙さだけを見つけるというバイアスを導入したくないのです。

だから、どうすればいいですか:

  1. auditdがこれらのイベントを/var/log/audit/audit.logに追加するのを停止しますか?
  2. apparmorが拒否されたアクティビティを個々のプロファイルのコンテキストで(グローバルではなく)ログに記録しないようにします([〜#〜] update [〜#〜]、下記のHargutの回答はこれに対処します。解決策は明示的に '記録しない拒否」

助けて!

4
Nanzikambe

詳細をもう少し詳しく調べた後、auditdレベルで要件を構成する方法もあります。除外するルールを追加できるexcludeという名前のリストがあります。

例として、次のコマンドはAVCメッセージを除外します。

auditctl -a never,exclude -F msgtype=AVC

この場合、監査イベントはapparmorによって生成され、ロードされたapparmor構成で制御されます。カーネル監査サブシステムでauditctlによって制御/削除できる対応するルールはありません。

明示的なauditctlフィルタリングルールは、対応する一致ルールとともにexcludeリストを使用して作成できます。

個人的には、apparmordenyのみに構成することで、監査イベントが不要な場合でも生成しない方法を希望します。

AVCは、アクセスベクトルキャッシュとも呼ばれます。このキャッシュは、アクセスの決定をログに記録するためにSELinux/Apparmorによって使用され、このメッセージタイプはデフォルトでauditdで記録され、ユーザーがそれを望まない場合は明示的に拒否する必要があるようです。 auditctlのマニュアルページには、これが例としてexcludeセクションにリストされています。さらにSELinuxには、auditdが実行されていないときにAVCログをディスクに書き込むメカニズムもあります。

1
hargut

ドキュメントを見ると、これは対応する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. 
3
hargut