私はLinux Audit用のパーサーを書いていますが、標準ではないような奇妙なものを偶然見つけました。
私の参照はRed Hatドキュメント。
正しい監査記録は次のとおりです。
type=USER_CMD msg=audit(1464013671.517:403): pid=3569 uid=0 auid=1000 ses=7 msg='cwd="/root" cmd=123 terminal=pts/1 res=success'
レコードの名前=値フィールドが無効です。
次の記録を見てみましょう。
type=DAEMON_START msg=audit(1464013652.147:626): auditd start, ver=2.4 format=raw kernel=3.16.0-4-586 auid=4294967295 pid=3557 res=success
文書にはauditd start
遵守しない事項は記載されていません。名前=値滞在。
これは何ですか?これについてはどこで読むことができますか?
区切り文字として使用されるカンマとスペース
また、マニュアルによると
各レコードは、スペースまたはカンマで区切られた複数の名前と値のペアで構成されています。
auditd start, ver=2.4
コマンドで区切られていることがわかるように、これは明らかに間違っています。そしてスペース。
なぜですか?基準はどこにありますか本物説明する?
レコードの追加スペース
次の記録を見てみましょう。
type=CWD msg=audit(1464013682.961:409): cwd="/root"
type=CWD msg=audit(1464013682.961:409):
との間には2つのスペースがありますcwd="/root"
。これは言葉ではありません。実際には、type=CWD
この動作はおよびを含むレコードでのみ観察されましたcwd="/root"
。
なぜですか?
注:最近、Debianはこのログを生成しました。
答え1
だから私は問題の小さな部分を解決しましたauditd start, ver=2.2
。効果があることがわかりました。しかし、どの文書も見つかりませんでした。私が持っている唯一の文書はRed Hatのマニュアルの次の例です。
例7.5その他の audit.log イベント
次の監査イベントは、 auditd デーモンの成功した開始を文書化します。 ver フィールドには、開始された監査デーモンのバージョンが表示されます。
type=DAEMON_START msg=audit(1363713609.192:5426): auditd start, ver=2.2 format=raw kernel=2.6.32-358.2.1.el6.x86_64 auid=500 pid=4979 subj=unconfined_u:system_r:auditd_t:s0 res=success
次の監査イベントは、ユーザーUID 500がrootとしてログインしようとした失敗した試みを記録します。
type=USER_AUTH msg=audit(1364475353.159:24270): user pid=3280 uid=500 auid=500 ses=1 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:authentication acct="root" exe="/bin/su" hostname=? addr=? terminal=pts/0 res=failed'
残念ながら、これは単なる例です。どこにも見つからないので、標準の実際の文書を読みたいです。
修正する
私は公式メーリングリスト(私の質問に対する完全な答えを見る)。
私が学んだ内容は次のとおりです。
レコードの名前=値フィールドが無効です。
なぜ存在するのか分かりませんが、auditd start
ここに私の質問に対するSteve Grubbの答えがあります。
auditd start、userなどのすべての要素はどこにリストされていますか?コロン(フィールド内の型とmsg = audit(…)の区切り)とレコードフィールドの間に何が起こるかを指定する文書が見つかりません。
実際にはLibauparseはこれらすべてを処理するので、ユーザーはそれを必要としません。翻訳が必要な場合は、ログを auparse に提供し、必要な方法でイベント形式を指定できます。
デフォルトでは、答えはauparseライブラリのどこかに隠されています。
区切り文字として使用されるカンマとスペース
一部のレコードがカンマとスペースで区切られているのはなぜですか?例:
type=DAEMON_START msg=audit(1363713609.192:5426): auditd start, ver=2.2 format=raw kernel=2.6.32-358.2.1.el6.x86_64 auid=500 pid=4979 subj=unconfined_u:system_r:auditd_t:s0 res=success
ずっと前に、これらの記録は人間が読むことができ(笑わないで)機械が利用可能でなければなりませんでした。時間の経過とともに名前=値のペアに変換されました。上記の問題も解決されました。
レコードの追加スペース
Steve Grubbがこの問題を解決しました。
スポット:https://www.redhat.com/archives/linux-audit/2016-July/msg00086.html