Linux Auditd ルールの読み方

CentOS を監視するため Linux Auditd を利用する。

最終的にこの設定を読めるようになる。

Linux Auditd を利用する目的

  • ファイルアクセスの監視 : ファイル・ディレクトリへのアクセス、修正、実行されたか、属性の変更されたかを追跡する。
  • システムコールの監視 : 特定のシステムコールが使用されるたびにログエントリーを生成するように設定できます。
  • ユーザーが実行したコマンドの記録 : ユーザーごとに実行されたコマンドの監査証跡を生成することができまる。
  • セキュリティイベントの記録 : pam_faillock 認証モジュールは、失敗したログイン試行を記録することができる。

Linux Auditd ルール

Linux Auditd のルールには3種類ある。

  • 制御ルール : Audit システム自体の動作設定
  • ファイルシステムのルール : 特定のファイルまたはディレクトリーへのアクセスを記録するための設定
  • システムコールのルール : 特定のプログラムが実行するシステムコールを記録するための設定

制御ルール

  • -D : 以前のルールを削除する
  • -b : バッファサイズを指定、8192が
  • -f : エラーが起きた際の処理を指定、0が何もしない、1が printk 出力、2がカーネルパニック

ファイルシステムルール

-w 。

auditctl -w path_to_file -p permissions -k key_name

permissions は4種類。

  • r : read(読み込み)を記録する
  • w : write(書き込み)を記録する
  • x : execute(実行)を記録する
  • a : attribute(属性変更)を記録する

システムコールルール

-a 。除外ルールはシステムコールルールで設定する。

auditctl -a action,filter -S system_call -F field=value -k key_name

action

action および filter は、特定のイベントがいつログ記録されるかを指定します。

  • always : ログを出力する
  • never : ログを出力しない

filter

Linux Auditd のフィルタは4種類ある。

  • user : uidやpidなどのユーザ情報によるフィルタリング、 list id は 0
  • task : 特定のシステムコール(fork, clone)のみ有効なフィルタリング、使わない、 list id は 1
  • exit : 全システムコール終了時に対するフィルタリング、list id は 4
  • exclude : msgtypeを除外するときに使用するフィルタリング、 list id は 5

イベントは user, task, exit フィルタにまず送れられ、個別にフィルタリングされる。ここでフィルタリングされなかったイベントは exclude フィルタに送られる。そこで除外されなければ、ログとして記録される。

msgtype については B.2. AUDIT 記録のタイプ を参照する。

never,exit と exit,never 順番が違う

どちらでも望んだ動作となる。auditctl -l コマンドで確認しても同様の出力となる。

こちらの設定では exit,never と書かれていたが、Redhat で指定されているフォーマットが以下なので、 never,exit と書くこととする。

auditctl -a action,filter -S system_call -F field=value -k key_name 

参考

第7章 システム監査

7.5. AUDIT ルールの定義

付録B AUDIT システムのリファレンス

B.2. AUDIT 記録のタイプ