メインコンテンツへスキップ
  1. ブログ/

auditdでファイルの変更を監視する方法

·
Linux AlmaLinux セキュリティ Auditd
目次

auditdでファイルの変更を監視する方法
auditdでファイルの変更を監視する方法

コマンド早見表
#

解説は不要という方は、以下のコマンドをそのままコピーしてご利用ください。

  • 特定のファイルに対してルールを追加する
auditctl -w <監視対象ファイル> -p <監視する項目> -k <キー名>
  • 監視ルールの確認
auditctl -l
  • 監視ログを検索する
ausearch -k <キー名> -i

auditdとは
#

auditd は、Linux カーネルに組み込まれている「Linux Audit Framework」を利用するためのデーモンとなります。

カーネルレベルで発生するシステムコールを監視し、ファイルへのアクセスや変更、コマンドの実行、ログインの試行などのイベントをログとして記録することができます。

通常のシステムログ(messages など)では捉えきれない、「誰が」「いつ」「どのファイルに対して」「どのような操作を行ったか」という詳細な情報まで記録することができます。

このような特性から、不正アクセスやファイル改ざんの検知、操作履歴の追跡など、セキュリティ強化の目的で広く利用されています。

auditd は OSS として開発されており、ソースコードは以下のリポジトリにて公開されております。

linux-audit/audit-userspace

Linux audit userspace repository

C
712
237

auditdで監視できる主な項目
#

auditd ではファイルだけでなく、システムコールやユーザーの操作など幅広いイベントを監視することができます。

代表的なイベントは以下のとおりです。

  • ファイルのアクセス・変更
  • ディレクトリのアクセス・変更
  • コマンドの実行
  • ユーザーのログイン・ログアウト
  • 権限変更(chmod・chown など)
  • システムコール
  • カーネルモジュールのロード・アンロード
  • ユーザーおよびグループ管理
  • プロセスの起動・終了

本記事では、これらの中でも代表的な例として /etc/passwd への書き込み・属性変更を監視する方法を解説します。

auditdのインストールと起動確認
#

AlmaLinux 環境では auditd がデフォルトでインストールされています。

ただし環境によってはインストールされていない場合もあるため、その際は以下のコマンドでインストールしてください。

dnf install audit

AlmaLinux 10 では auditctl コマンドが audit パッケージには含まれておらず、audit-rules パッケージとして分離されています。

そのため、auditd のインストールに加えて以下のコマンドも実行し、audit-rules パッケージをインストールしてください。

dnf install audit-rules

次に、サービスの起動状態を以下のコマンドで確認します。

systemctl is-active auditd

正常に起動している場合は、以下のように表示されます。

active

起動していない場合は以下のコマンドで起動してください。

systemctl enable --now auditd

ファイル監視ルールの設定
#

auditd でファイルへのアクセスを監視するには、-w オプションを使ってルールを設定します。

設定方法には、auditctl コマンドで一時的にルールを反映させる方法と、設定ファイルに記述して永続的に反映させる方法の2種類があります。

コマンドで設定する(一時的)
#

すぐに試したい場合は、以下のように auditctl コマンドでルールを追加することができます。

auditctl -w /etc/passwd -p wa -k passwd-change

この例では、/etc/passwd に対する書き込みおよび属性変更を監査しています。

主な設定は以下のとおりです。

オプション 説明
-w 監視対象のファイルまたはディレクトリを指定する
-p 監視するアクセス種別を指定する
-k ログ検索時に利用するキー名を指定する

-p には以下の値を指定することができます。

説明
r 読み込み
w 書き込み
x 実行
a 属性変更

ただし、この方法で追加したルールは一時的なものであり、システムを再起動すると消える仕様となっております。

設定ファイルに記載する(永続的)
#

監視ルールを永続的に適用するには、/etc/audit/rules.d/ ディレクトリ配下にルールファイルを作成します。

ルールファイルは任意の名前で作成できます。

また、複数の監査ルールを管理する場合は、用途ごとにファイルを分けると管理しやすくなります。

今回は「passwd-change.rules」としてルールファイルを作成します。

vi /etc/audit/rules.d/passwd-change.rules

先ほどと同様に以下の内容を記述します。

各オプションの詳細については、前述のセクションをご参照ください。

-w /etc/passwd -p wa -k passwd-change

ファイルを保存したら、augenrules コマンドを実行しルールを反映させてください。

augenrules --load

設定されたルールを確認する
#

設定が完了したら、ルールが正しく反映されているか確認してください。

ルールは auditctl -l で確認することができます。

auditctl -l

以下はコマンドを実行した際の例となります。

先ほどルールファイルに記載した内容が反映されていることが分かります。

$ auditctl -l
-w /etc/passwd -p wa -k passwd-change

設定されている監査ルールは1行ごとに表示されます。

ルールを複数設定している場合は、その数だけ表示されます。

監視ログの確認
#

監視ログを確認するには、ausearch コマンドを使用する方法とログファイルを直接参照する方法の2種類があります。

ausearchで監視ログを検索する
#

ausearch コマンドを使うことで、監視ルールに設定したキー名でログを検索することができます。

キー名は、監査ルール作成時に -k オプションで指定した値を使用します。

また、-i オプションを付けることで、日時やUIDなどの情報を読みやすい形式に変換して表示します。

ausearch -k <キー名> -i

先ほど設定した passwd-change というキー名を指定する場合は、以下のコマンドとなります。

ausearch -k passwd-change -i

実際に useradd コマンドで新しいユーザーを作成した直後に実行した場合の出力例は以下となります。

type=PROCTITLE msg=audit(06/21/2026 13:28:05.128:37078) : proctitle=useradd audittest01 
type=PATH msg=audit(06/21/2026 13:28:05.128:37078) : item=4 name=/etc/passwd inode=17203909 dev=fc:04 mode=file,644 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:passwd_file_t:s0 nametype=CREATE cap_fp=none cap_fi=none cap_fe=0 cap_fver=0 cap_frootid=0 
type=PATH msg=audit(06/21/2026 13:28:05.128:37078) : item=3 name=/etc/passwd inode=17204679 dev=fc:04 mode=file,644 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:passwd_file_t:s0 nametype=DELETE cap_fp=none cap_fi=none cap_fe=0 cap_fver=0 cap_frootid=0 
type=PATH msg=audit(06/21/2026 13:28:05.128:37078) : item=2 name=/etc/passwd+ inode=17203909 dev=fc:04 mode=file,644 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:passwd_file_t:s0 nametype=DELETE cap_fp=none cap_fi=none cap_fe=0 cap_fver=0 cap_frootid=0 
type=PATH msg=audit(06/21/2026 13:28:05.128:37078) : item=1 name=/etc/ inode=16908417 dev=fc:04 mode=dir,755 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:etc_t:s0 nametype=PARENT cap_fp=none cap_fi=none cap_fe=0 cap_fver=0 cap_frootid=0 
type=PATH msg=audit(06/21/2026 13:28:05.128:37078) : item=0 name=/etc/ inode=16908417 dev=fc:04 mode=dir,755 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:etc_t:s0 nametype=PARENT cap_fp=none cap_fi=none cap_fe=0 cap_fver=0 cap_frootid=0 
type=CWD msg=audit(06/21/2026 13:28:05.128:37078) : cwd=/root 
type=SYSCALL msg=audit(06/21/2026 13:28:05.128:37078) : arch=x86_64 syscall=rename success=yes exit=0 a0=0x7fff850c4be0 a1=0x555f00af5040 a2=0x7fff850c4b50 a3=0x100 items=5 ppid=31375 pid=31935 auid=root uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=pts0 ses=3 comm=useradd exe=/usr/sbin/useradd subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=passwd-change 

主な出力内容は以下となります。

項目 説明
proctitle= 実行されたコマンドの内容
comm= 実行されたプログラム名
exe= 実行されたプログラムの絶対パス
auid= 操作を行ったユーザー(ログインユーザー)
name=/etc/passwd アクセスされたファイル
syscall= 発生したシステムコール

例のログでは、useradd audittest01 コマンドによって /etc/passwd が変更されたことが記録されています。

監査ログからは、誰が(auid=root)、どのコマンドを実行し(comm=useradd)、どのファイルに対して操作を行ったか(name=/etc/passwd)を確認することができます。

ログファイルを直接確認する
#

監査ログは /var/log/audit/audit.log に記録されており、tail コマンドなどでも直接内容を確認することができます。

tail /var/log/audit/audit.log

ただし、このファイルにはサーバー上で発生した監査イベントが全て記録されています。

そのため、設定した監視ルール以外のログも大量に含まれており、目的のログを見つけ出すのは非常に困難となります。

特定のキー名で絞り込みたい場合や、過去のログをまとめて検索したい場合は、前述の ausearch コマンドを使用する方法が効率的のためおすすめです。

関連記事
#

インフラ技術部では auditd 以外にも、AlmaLinuxのセキュリティを強化する方法について解説しています。

興味がある方は是非こちらもあわせてご覧ください。

AlmaLinuxにFail2banをインストールして不正アクセスを防ぐ方法

関連記事

【超入門】AlmaLinux 10でChrootによるSSHユーザー隔離環境を構築する方法
セキュリティ Linux AlmaLinux Chroot
【初心者向け】RPMのChangelogからセキュリティ修正を確認する方法
Linux RPM セキュリティ AlmaLinux
【セキュリティ】LinuxでASLRの設定を確認する方法
Linux ASLR セキュリティ AlmaLinux 音声解説あり
【脆弱性確認】RPMファイルを展開してソースコードとパッチを確認する方法
Linux RPM セキュリティ AlmaLinux
grepで特定のディレクトリを除外して検索する方法(--exclude-dir)
Linux コマンド Grep AlmaLinux
grepでバイナリファイルを除外する方法|-Iオプションの使い方
Grep コマンド AlmaLinux Linux