Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

7.5. 監査ルールの定義

Audit システムは、ログファイルで取得するものを定義する一連のルールで動作します。以下のタイプの Audit ルールを指定できます。
コントロールルール
Audit システムの動作と、その設定の一部を修正できるようにします。
ファイルシステムルール
ファイル監視とも呼ばれる特定のファイルまたはディレクトリーへのアクセス監査を許可します。
システムコールルール
指定したプログラムによるシステムコールのロギングを許可します。
監査ルールは以下を設定できます。

7.5.1. での Audit ルールの定義 auditctl

auditctl コマンドを使用すると、Audit システムの基本的な機能を制御し、どの Audit イベントをログに記録するかを指定するルールを定義できます。
注記
Audit サービスと対話するコマンドはすべて、Audit ログファイルに root 権限が必要になります。これらのコマンドを root ユーザーとして実行するようにしてください。また、ユーザーメッセージをログに記録するには、CAP_AUDIT_CONTROL が監査サービスを設定する必要があり、CAP_AUDIT_WRITE が必要です。

制御ルールの定義

以下は、Audit システムの動作を変更できるようにする制御ルールの一部です。
-b
カーネル内の既存の Audit バッファーの最大サイズを設定します。以下に例を示します。
~]# auditctl -b 8192
-f
たとえば、重要なエラーが検出されると実行されるアクションを設定します。
~]# auditctl -f 2
上記の設定では、重大なエラーが発生した場合でもカーネルパニックがトリガーされます。
-e
Audit システムもしくはロック設定を有効および無効にします。以下に例を示します。
~]# auditctl -e 2
上記のコマンドは、Audit 設定をロックします。
-r
生成されるメッセージの毎秒単位を設定します。以下に例を示します。
~]# auditctl -r 0
上記の設定では、生成されたメッセージにレート制限を設定しません。
-s
Audit システムのステータスを報告します。以下に例を示します。
~]# auditctl -s
AUDIT_STATUS: enabled=1 flag=2 pid=0 rate_limit=0 backlog_limit=8192 lost=259 backlog=0
-l
読み込み済みの Audit ルールをすべて一覧表示します。以下に例を示します。
~]# auditctl -l
-w /etc/passwd -p wa -k passwd_changes
-w /etc/selinux -p wa -k selinux_changes
-w /sbin/insmod -p x -k module_insertion
⋮
-D
現在読み込み済みの Audit ルールをすべて削除します。以下に例を示します。
~]# auditctl -D
No rules

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

ファイルシステムルールを定義するには、以下の構文を使用します。
auditctl -w path_to_file -p permissions -k key_name
各オプションについての説明は以下のとおりです。
  • path_to_file は、監査されるファイルまたはディレクトリーです。
  • パーミッション はログに記録されているパーミッションです。
    • r - ファイルまたはディレクトリーへのアクセスを読み取ります。
    • w - ファイルまたはディレクトリーへの書き込みアクセス。
    • x - ファイルまたはディレクトリーへのアクセスを実行します。
    • a - ファイルの属性またはディレクトリーの属性を変更します。
  • key_name は、特定のログエントリーを生成したルールまたは一連のルールを特定するのに便利な任意の文字列です。

例7.1 ファイルシステムルール

すべての書き込みアクセスと、/etc/passwd ファイルのすべての属性変更をログに記録するルールを定義するには、以下のコマンドを実行します。
~]# auditctl -w /etc/passwd -p wa -k passwd_changes
-k オプションに続く文字列は任意です。
すべての書き込みアクセスと /etc/selinux/ ディレクトリー内の全ファイルへのアクセスをすべてログに記録するルールを定義するには、以下のコマンドを実行します。
~]# auditctl -w /etc/selinux/ -p wa -k selinux_changes
/sbin/insmod コマンドの実行を Linux カーネルに挿入するルールを定義するには、以下のコマンドを実行します。
~]# auditctl -w /sbin/insmod -p x -k module_insertion

System Call Rules の定義

システムコールルールを定義するには、以下の構文を使用します。
auditctl -a action,filter -S system_call -F field=value -k key_name
各オプションについての説明は以下のとおりです。
  • アクション および フィルター は、特定のイベントがログに記録されるタイミングを指定します。アクションalways または never のいずれかになります。filter は、イベントに適用されるカーネルルール一致フィルターを指定します。rule-matching フィルターには、taskexituser、および exclude のいずれかを使用できます。これらのフィルターの詳細は、「Audit システムのアーキテクチャー」 の最初を参照してください。
  • system_call は、システム名でシステムコールを指定します。すべてのシステムコールの一覧は、/usr/include/asm/unistd_64.h ファイルにあります。複数のシステムコールを 1 つのルールにグループ化できます。それぞれは、独自の -S オプションの後に指定されます。
  • field=value は、指定されたアーキテクチャー、グループ ID、プロセス ID などのイベントに一致するルールをさらに変更する追加オプションを指定します。利用可能なフィールドタイプとその値の完全なリストは、auditctl(8) の man ページを参照してください。
  • key_name は、特定のログエントリーを生成したルールまたは一連のルールを特定するのに便利な任意の文字列です。

例7.2 System Call Rules

システムで 64 ビットアーキテクチャーが使用され、システムコールの adjtimex または settimeofday がプログラムにより使用されるたびにログエントリーを作成するルールを定義するには、以下のコマンドを実行します。
~]# auditctl -a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change
ID が 1000 以上のシステムユーザーがファイルを削除または名前を変更するたびにログエントリーを作成するルールを定義するには、次のコマンドを実行します。
~]# auditctl -a always,exit -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete
-F auid!=4294967295 オプションは、ログイン UID が設定されていないユーザーを除外するために使用します。
また、システムコールのルール構文を使用してファイルシステムルールを定義することもできます。以下のコマンドは、-w /etc/shadow -p wa ファイルシステムルールと同様のシステムコールのルールを作成します。
~]# auditctl -a always,exit -F path=/etc/shadow -F perm=wa

このページには機械翻訳が使用されている場合があります (詳細はこちら)。