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
コメント