linux:lpic:303:02-host-security:2-host-intrusion-detection:use-and-configure-linux-audit-system

Linux の監査システムの使用と設定

  • Auditは、Linuxの監査システムであり、システムで発生したイベントについての情報をログファイルに出力する
  • Audit の用途
    • ファイルアクセスの監視
    • システムコールの監視
    • ユーザーログイン結果の記録
    • コマンド実行の記録
  • ユーザーのログイン、プログラムの動作、もしくはファイルへのアクセスといった任意の監査のルールを追加することができる

Audit の主なコマンド

コマンド 説明
auditctlAudit の動作に関する設定、およびAuditのルールを定義する
ausearchログファイルから特定の監査結果を検索する
aureportAuditログファイルから監査結果のレポートを作成する

Audit の主な設定ファイル

設定ファイル 説明
/etc/audit/audit.confAuditデーモンの設定ファイル
/etc/audit/audit.rulesAuditルールの定義ファイル
  • Auditデーモン(auditd)は、カーネルから受け取った監査結果をAuditログファイルに出力する
  • auditdの設定は/etc/audit/auditd.confファイルで以下のような項目を設定する
    • Auditログファイルの数
    • ファイルサイズ
    • Auditログ出力先の空きディスク容量が指定値に達した場合の動作など

Auditルールの定義

  • Auditルールの定義には、以下の3つがある
    • 制御ルール
      Auditの動作に関する設定
    • ファイルシステムルール
      指定したファイルもしくはディレクトリへのアクセスに対して監査する設定
    • システムコールルール
      指定したシステムコールに対して監査する設定
  • これらのルールは、auditctlコマンドで指定するか、/etc/audit/audit.rulesファイルにルールを記述する
  • デフォルトの状態で適切なルールが設定されているが、必要に応じてauditctlコマンドを用いて、制御ルールの定義、ファイルシステムルール、およびシステムコールルールの定義を追加する
  • auditctlコマンドで追加したAuditルールの定義は一時的なものであり、auditdを再起動するとルールは削除される
  • 再起動後もルールを反映させるには、/etc/audit/audit.rulesファイルに設定を追加する
auditctl [オプション]

制御ルールに関するオプション

オプション 説明
-b 数値 Auditバッファの最大値を指定(デフォルト:64)
-D すべてのAuditルールを削除
-e 数値 Auditの監査を有効または無効にする、もしくは設定をロックして変更を不可とする
0: 無効
1: 有効
2: ロック
-f 数値 重大なエラーが検出された際の動きを指定
0: 何もしない
1: printk出力
2: カーネルパニック
-l すべてのAuditルールを一覧表示
-r 数値 1秒あたりに生成されるメッセージ数の上限を指定(デフォルト:0 <無制限>)
-s オプションの設定値を表示

ファイルシステムルールに関するオプション

オプション 説明
-w ファイル 監査対象となるファイルもしくはディレクトリを指定
-k キー名 識別するための任意の名称を指定
-p パーミッション 監査の種類となる以下のパーミッションを指定
r: 読み取り
w: 書き込み
x: 実行
a: 属性変更

ファイルシステムルールの定義

auditctl -w ファイル -p パーミッション -k キー名

ex. ファイルシステムルールを定義する

$ sudo auditctl -w /etc/passwd -p wa -k identity
$ sudo auditctl -l
-w /etc/passwd -p wa -k identity

システムコールルールに関するオプション

オプション 説明
-a アクション, リスト 追加するアクションとリストをカンマ「,」区切りで指定
-d アクション, リスト 削除するアクションとリストを指定
-k キー名 識別するための任意の名称を指定
-F フィールド=値 アーキテクチャ、ユーザーID、プロセスIDなどのフィールドに値を指定
複数指定時の条件は論理積(and)
-S システムコール名|システムコール番号|all システムコールもしくはallを指定
複数指定時の条件は論理和(or)

システムコールルールに関するアクションおよびリスト

アクション/リスト 説明
アクション always 常に監査記録を生成する
never 監査記録を生成しない
リスト exclude 特定のイベントを監査から除外
exit システムコル終了時
task 子プロセスの生成時(fork)、プロセスコピー時(clone
user ユーザー空間でのイベントをフック
auditctl -a アクション,リスト -S システムコール -F フィールド=値 -k キー名

ex. システムコールルールを定義する

$ sudo auditctl -a always,exit -F arch=b64 -S adjtimex, settimeofday -F -k time-change
$ sudo auditctl -l
-a always,exit -F arch=b64 -S adjtimex, settimeofday -F key=time-change
  • /etc/audit/audit.rulesファイルにルールを記載することにより、システム再起動後も設定を維持することができる
  • CentOS 7 においては、/etc/audit/rules.d/audit.rulesファイルに記載することで、auditdサービスの再起動後、/etc/audit/audit.rulesファイルに設定が反映される
  • ausearchは、指定した条件に従ってAudit監査ログを検索する
  • デフォルトで、/var/log/audit/audit.logファイル(ローテ―とされたファイルを含む)を検索する
ausearch [オプション]

主なオプション

オプション 説明
-f ファイル名
–file ファイル名
指定したファイルに対するイベントを検索
-gs GID
–gid-all GID
指定したグループIDもしくはグループIDを持つイベントを検索
-i
–interpret
日時やUIDなどをテキストに変換
-k キー名
–key キー名
指定したキー名に一致するイベントを検索
-m メッセージタイプ
–message メッセージタイプ
指定したメッセージタイプに一致するイベントを検索
-sv
–success
指定した値(yes: 成功、no: 失敗)に一致するイベントを検索
-te [日付け] [時間]
–end [日付け] [時間]
ログの検索範囲における終了日時を指定
-ts [日付け] [時間]
–start [日付け] [時間]
ログの検索範囲における開始日時を指定
-ua UID
–uid-all UID
指定したユーザーIDに対するイベントを検索
-x ファイル名
–executable ファイル名
実行可能なファイルに対するイベントを検索

ex. ausearch コマンドを使用したAuditログファイルの検索

$ sudo ausearch -i -k time-change
  • aureportは、指定した条件に従ってAudit監査ログの要約とレポートを行う
aureport [オプション]

主なオプション

オプション 説明
-f, –file ファイルに対するレポートを生成
-i, –interpret 日時やUIDなどをテキストに変換
-l, –login ログインに関するレポートを生成
-t, log ログファイルの開始と終了日時を表示
-te, –end [日付] [時間] ログの検索範囲における終了日時を指定
-ts, –start [日付] [時間] ログの検索範囲における開始日時を指定
-u, –user ユーザーに対するレポートを生成
-x, –executable 実行可能なファイルに対するレポートを生成
–failed 失敗したイベントに関するレポートを生成
–summary サマリーを生成
–tty TTY監査レポートを生成

ex. aureportコマンドを使ったAuditレポートの生成

$ sudo aureport -l -i -ts yesterday -te now
  • pam_tty_audit.soモジュールを使用して、ユーザーが実行するコマンドやバックスペースなどのTTYからの入力について、Auditログファイルに記録することができる

ex. pam_tty_audit.soモジュールの主な引数

引数 説明
disable=patterns パターンに指定したユーザーのTTY監査を無効にする
これよりも前に記述したenableの指定を上書きする
enable=patterns パターンに指定したユーザーのTTY監査を有効にする
これよりも前に記述したdisableの指定を上書きする
log_passwd パスワード入力を記録
デフォルトは有効

ex. testuserのみにTTY監査を有効にする (/etc/pam.d/system-auth/etc/pam.d/password-auth)

session required pam_tty_audit.so disable=* enable-testuser

ex. aureportコマンドによるTTY監査結果の表示

$ sudo aureport --tty
 
TTY Report
===============================================
# date time event auid term sess comm data
===============================================
<no events of interest were found>
  • linux/lpic/303/02-host-security/2-host-intrusion-detection/use-and-configure-linux-audit-system.txt
  • Last modified: 2017/08/08 03:31
  • by ujin