Linux監査イベントはgo-auditに渡されません。

Linux監査イベントはgo-auditに渡されません。

Slackのgo-auditツールを使用してLinux監査イベントをキャプチャ/処理しようとしています。追加情報:https://github.com/slackhq/go-audit

問題は、Linux監査がイベントを正しく選択しますが、go-auditがイベントを選択しないこと、またはgo-auditがイベントを正しく出力しないことです。

例 go-audit 設定ファイルは、/opt/secret.txt ファイルへのアクセスに関する情報をキャプチャする単一のルールを持つように変更されました。

rules:
- -a exit,always -F path=/opt/secret.txt -F perm=wra -k test_changes

完全なgo-audit設定ファイルは次のとおりです。 https://gist.github.com/tom-chaoscube/fc2f14b448650ea4018620bbbf2c3345

go-auditを実行した後、このルールが正常にデプロイされたことを確認できます。

# auditctl -l
-w /opt/secret.txt -p rwa -k test_changes

ファイルにアクセスしようとすると、監査ログファイルに監査履歴を表示できます。

$ cat secret.txt
# cat /var/log/audit/audit.log

type=SYSCALL msg=audit(1485357520.702:868): arch=c000003e syscall=2 success=yes exit=3 a0=7ffee46830dc a1=0 a2=1fffffffffff0000 a3=7ffee4681670 items=1 ppid=5199 pid=5469 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts5 ses=7 comm="cat" exe="/usr/bin/cat" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="test_changes"
type=CWD msg=audit(1485357520.702:868):  cwd="/opt"
type=PATH msg=audit(1485357520.702:868): item=0 name="secret.txt" inode=26244598 dev=ca:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:usr_t:s0 objtype=NORMAL

しかし、go-auditの出力を見ると、イベントは記録されません。 stdoutとファイルとして出力するようにgo-auditを設定してみました。

go-auditでstraceを実行すると、auditdへの接続であるNETLINKソケットが開いているように見えます。また、audit.logの一般的なエントリと一致して、一部のデータがソケットを介して受信されていることがわかりますが、そうではありません。〜らしいauditdがファイルアクセス監査エントリを作成するときに特定のデータを受け取るのと同じです。 (これは必ずしも明示的に言うことはできません)。

socket(PF_NETLINK, SOCK_RAW, 9)         = 4
bind(4, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
setsockopt(4, SOL_SOCKET, SO_RCVBUF, [16384], 4) = 0
getsockopt(4, SOL_SOCKET, SO_RCVBUF, [32768], [4]) = 0
... ...
... ...
write(1, "Started processing events\n", 26) = 26
recvfrom(4, "L\0\0\0\2\0\0\0\1\0\0\0\261\25\0\0\357\377\377\3778\0\0\0\351\3\5\0\1\0\0\0"..., 8970, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, [12]) = 76
futex(0xa0f1d0, FUTEX_WAIT, 0, NULL)    = 0

提案:

  • Go-Auditがイベントを受信できなかったのはなぜですか?
  • go-auditが実際にソケットを介してイベント情報を受信して​​いるかどうかを調べるための追加の手順を実行できます。 (つまり、感謝の中で迷子にならないようにするためのステップ)

編集:その後、Ubunutu 16.10(元のCentos 7システムを含む)でローカルで試しましたが、同じ結果が得られました。

乾杯。

答え1

解決する。

この質問に対する答えは、auditdがまだシステムで実行されていることです。

監査データを受け取るには、auditdを停止してgo-auditを再起動するだけです。

sudo service auditd stop

関連情報