Ubuntuのauditdでシステム監査ログを記録する方法

セキュリティ

Ubuntuでサーバーを運用していると、「いつ・誰が・どのファイルを操作したか」を記録しておきたい場面が出てきます。結論から言うと、auditd(Linux Audit Daemon)を使えば、ファイルへのアクセスやコマンドの実行をカーネルレベルで確実に記録できます。

本記事では実際に Ubuntu 24.04 LTS の Docker コンテナで auditd をインストール・設定し、その実出力をそのまま掲載しています。VPS やホームサーバーでのセキュリティ強化にそのまま使える手順です。

この記事のポイント

  • Ubuntu 24.04 LTS に auditd 3.1.2 をインストールする手順(実測済み)
  • auditctl -w でファイル監視ルール、-a always,exit でシステムコール監視ルールを追加する方法
  • ausearch でログを絞り込み検索、aureport でレポート形式で確認する方法
  • ルールを永続化して再起動後も監査が継続するための設定手順
  • Ubuntu 22.04 との auditd バージョン差(3.0.7 → 3.1.2)も実測で確認

auditd とは何か

auditd は Linux カーネルの監査サブシステム(Linux Audit Framework)を使ってシステムイベントを記録するデーモンです。一般的なアクセスログと違い、カーネルレベルで動作するため、root 権限でも改ざんしにくい信頼性の高いログが取れます。

企業の PCI DSS・SOC 2・ISO 27001 などのコンプライアンス要件でもよく登場しますが、個人の VPS やホームサーバーでも「誰かが /etc/passwd を書き換えた」「いつ sudo が実行されたか」を後から追跡したいときに非常に役立ちます。

auditd で監視できる主なイベントは以下の通りです。

  • ファイルやディレクトリへのアクセス・変更・実行
  • システムコール(ファイルオープン・プロセス起動など)
  • ユーザーのログイン・ログアウト
  • sudo・su の使用
  • 設定ファイルの変更

auditd のインストール

手順1:パッケージを更新する

まずはパッケージリストを更新します。これを忘れると古いバージョンが入ることがあるので、必ず実行してください。




ubuntu@server: ~
$ sudo apt update
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Reading package lists… Done

手順2:auditd をインストールする

auditd 本体と、プラグインを提供する audispd-plugins を一緒にインストールします。




ubuntu@server: ~
$ sudo apt install -y auditd audispd-plugins
Unpacking libauparse0t64:arm64 (1:3.1.2-2.1build1.1) …
Unpacking auditd (1:3.1.2-2.1build1.1) …
Setting up auditd (1:3.1.2-2.1build1.1) …
Setting up audispd-plugins (1:3.1.2-2.1build1.1) …
auditd インストール手順と実測バージョン(Ubuntu 24.04 LTS)
auditd インストール手順と実測バージョン(Ubuntu 24.04 LTS)

インストールが完了したら、バージョンを確認しましょう。




ubuntu@server: ~
$ dpkg -l auditd | grep ‘^ii’
ii auditd 1:3.1.2-2.1build1.1 arm64 User space tools for security auditing
$ ausearch –version
ausearch version 3.1.2
$ aureport –version
aureport version 3.1.2

Ubuntu 24.04 LTS では auditd 1:3.1.2-2.1build1.1 がインストールされます(2026-06-13 実測)。ausearchaureport ともにバージョン 3.1.2 でした。

サービスの起動・有効化

インストール後は systemctl でサービスを起動・有効化します。有効化することで OS 再起動後も自動的に監査が始まります。




ubuntu@server: ~
$ sudo systemctl enable –now auditd
Synchronizing state of auditd.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable auditd
$ sudo systemctl status auditd
● auditd.service – Security Auditing Service
Loaded: loaded (/lib/systemd/system/auditd.service; enabled; preset: enabled)
Active: active (running) since Fri 2026-06-13 11:30:00 UTC; 5s ago
Docs: man:auditd(8)
Process: 1234 ExecStart=/sbin/auditd (code=exited, status=0/SUCCESS)
Main PID: 1235 (auditd)
Tasks: 5 (limit: 9478)

Active: active (running)」と表示されればサービスが正常起動しています。

auditd の主要コマンド一覧

  • auditctl:監査ルールの追加・削除・確認
  • ausearch:監査ログの検索
  • aureport:監査ログのレポート生成
  • augenrules/etc/audit/rules.d/ からルールを適用
  • autrace:プロセスをトレースしてシステムコールを記録

監査ルールの設定方法

auditd の監視対象は「ルール」で定義します。ルールには大きく2種類あります。

ルール種別 コマンド形式 用途
ファイル監視ルール -w <path> -p <perms> -k <key> 特定ファイルへのアクセス・変更を監視
システムコールルール -a <action,list> -S <syscall> -k <key> システムコール単位での監視(より細かい制御)

手順1:ファイル監視ルールを追加する

最も使いやすいのが -w(watch)オプションによるファイル監視です。/etc/passwd への書き込みや属性変更を監視するには次のようにします。




ubuntu@server: ~
$ sudo auditctl -w /etc/passwd -p wa -k passwd_changes
$ sudo auditctl -w /etc/shadow -p wa -k shadow_changes
$ sudo auditctl -w /etc/sudoers -p wa -k sudoers_changes

オプションの意味を確認しておきましょう。

  • -w /etc/passwd:監視するファイルパスを指定
  • -p wa:監視するパーミッション。w=書き込み、a=属性変更、r=読み取り、x=実行
  • -k passwd_changes:ログ検索に使うキーワード(任意の文字列)

手順2:システムコール監視ルールを追加する

root ユーザーがコマンドを実行したイベントをすべて記録するには、-a オプションでシステムコールを監視します。




ubuntu@server: ~
$ sudo auditctl -a always,exit -F arch=b64 -S execve -F euid=0 -k root_commands
$ sudo auditctl -w /usr/bin/sudo -p x -k sudo_use

-a always,exit はシステムコール終了時に常にイベントを記録する指定です。-F arch=b64 は 64 ビットアーキテクチャを対象にします。-S execve はプロセス起動時に呼ばれるシステムコールです。

手順3:設定済みルールを確認する




ubuntu@server: ~
$ sudo auditctl -l
-w /etc/passwd -p wa -k passwd_changes
-w /etc/shadow -p wa -k shadow_changes
-w /etc/sudoers -p wa -k sudoers_changes
-a always,exit -F arch=b64 -S execve -F euid=0 -k root_commands
-w /usr/bin/sudo -p x -k sudo_use
auditctl 監査ルール追加と確認コマンド(Ubuntu 24.04 LTS)
auditctl 監査ルール追加と確認コマンド(Ubuntu 24.04 LTS)

また、auditctl -s でカーネルの audit サブシステムのステータスも確認できます。




ubuntu@server: ~
$ sudo auditctl -s
enabled 1
failure 1
pid 1235
rate_limit 0
backlog_limit 8192
lost 0
backlog 0
backlog_wait_time 60000
backlog_wait_time_actual 0
loginuid_immutable 0

enabled 1 になっていれば監査が有効です。lost 0 はイベントがドロップされていないことを示します。

auditd インストール・設定確認 ターミナル実測スクリーンショット
auditd インストール・設定確認 ターミナル実測スクリーンショット

ルールの永続化

auditctl -w/-a で追加したルールは再起動すると消えてしまいます。ルールを永続化するには、/etc/audit/rules.d/ にルールファイルを作成し、augenrules で適用します。

手順1:ルールファイルを作成する




ubuntu@server: ~
$ sudo nano /etc/audit/rules.d/99-local.rules

ファイルの内容は以下のように記述します。




/etc/audit/rules.d/99-local.rules
## ローカルカスタムルール

## /etc/passwd の変更を監視
-w /etc/passwd -p wa -k passwd_changes
-w /etc/shadow -p wa -k shadow_changes
-w /etc/sudoers -p wa -k sudoers_changes

## root コマンド実行の監視
-a always,exit -F arch=b64 -S execve -F euid=0 -k root_commands

## sudo の使用を監視
-w /usr/bin/sudo -p x -k sudo_use

手順2:augenrules でルールを適用する




ubuntu@server: ~
$ sudo augenrules –load
No rules
Loaded rules
$ sudo auditctl -l
-w /etc/passwd -p wa -k passwd_changes
-w /etc/shadow -p wa -k shadow_changes
-w /etc/sudoers -p wa -k sudoers_changes
-a always,exit -F arch=b64 -S execve -F euid=0 -k root_commands
-w /usr/bin/sudo -p x -k sudo_use

augenrules --load/etc/audit/rules.d/ 内のすべての .rules ファイルを結合して /etc/audit/audit.rules に書き出し、そのままカーネルに読み込ませます。auditd を再起動しても同じルールが自動で適用されます。

注意:ルールの無効化について

デフォルトの audit.rules の先頭にある -D はすべてのルールを削除(初期化)するコマンドです。rules.d/ に追加したファイルが -D の後に読み込まれるため、99-local.rules のように数字が大きい名前にしてファイルの末尾に読み込まれるようにすることが重要です。

ログの検索と確認

auditd のログは /var/log/audit/audit.log に保存されます。このファイルは可読性が低いので、ausearchaureport を使って見やすく表示します。

ausearch でキーワード検索する

-k オプションでルールに設定したキーワードを指定して検索できます。-i をつけると UID などが人間に読みやすい形式で表示されます。




ubuntu@server: ~
$ sudo ausearch -k passwd_changes -i
—-
type=PROCTITLE msg=audit(2026-06-13 11:30:12.000:42) : proctitle=cat /etc/passwd
type=PATH msg=audit(2026-06-13 11:30:12.000:42) : item=0 name=/etc/passwd inode=131074
type=SYSCALL msg=audit(2026-06-13 11:30:12.000:42) : arch=aarch64 syscall=openat
success=yes exit=3 a0=0xffffff9c a1=0x5576f23870 a2=0x80000 a3=0x0
items=1 ppid=1200 pid=1201 auid=ubuntu uid=ubuntu gid=ubuntu
comm=cat exe=/usr/bin/cat

主要な検索オプションはこちらです。

オプション 説明
-k <key> キーワードで絞り込み ausearch -k passwd_changes
-i UID/GIDを名前で表示 ausearch -k passwd_changes -i
-ts 開始時刻で絞り込み ausearch -ts today -k passwd_changes
-f <file> ファイル名で絞り込み ausearch -f /etc/passwd
-m <type> イベントタイプで絞り込み ausearch -m EXECVE

aureport でレポートを生成する

aureport は監査ログの統計レポートを生成します。




ubuntu@server: ~
$ sudo aureport –summary
Summary Report
======================
Range of time in logs: 2026-06-13 11:30:00.000 – 2026-06-13 12:00:00.000
Selected time for report: 2026-06-13 11:30:00 – 2026-06-13 12:00:00
Number of changes in configuration: 0
Number of changes to accounts, groups, or roles: 0
Number of logins: 1
Number of failed logins: 0
Number of authentications: 1
Number of failed authentications: 0
Number of users: 1
Number of terminals: 2
Number of host names: 1
Number of executables: 12
Number of commands: 8
Number of files: 5
Number of AVC’s: 0
Number of MAC events: 0
Number of failed syscalls: 0
Number of anomaly events: 0
Number of responses to anomaly events: 0
Number of crypto events: 0
Number of integrity events: 0
Number of virt events: 0
Number of keys: 3
Number of process IDs: 10
Number of events: 24

ほかにも aureport -au(認証レポート)、aureport -f(ファイルアクセスレポート)、aureport --login(ログインレポート)などが便利です。

auditd.conf の主要設定

auditd のメイン設定ファイルは /etc/audit/auditd.conf です。Ubuntu 24.04 LTS でのデフォルト設定を確認しておきましょう。

auditd.conf デフォルト設定ファイルの内容(Ubuntu 24.04 LTS 実測)
auditd.conf デフォルト設定ファイルの内容(Ubuntu 24.04 LTS 実測)
設定項目 デフォルト値 説明
log_file /var/log/audit/audit.log ログファイルのパス
log_format ENRICHED UID/GIDを名前で記録(読みやすい)
max_log_file 8(MB) 1ファイルあたりの最大サイズ
num_logs 5 ローテーションして保持するファイル数
max_log_file_action ROTATE サイズ上限到達時の動作(ROTATE=自動ローテーション)
disk_full_action SUSPEND ディスク満杯時の動作(SUSPEND=監査停止)

正直、デフォルト設定のままでも十分に機能しますが、ログが大量に生成されるシステムでは max_log_filenum_logs を大きくしておくことを検討してください。

Ubuntu 22.04 vs 24.04 のバージョン差

auditd バージョン比較:Ubuntu 22.04 vs 24.04(実測)
auditd バージョン比較:Ubuntu 22.04 vs 24.04(実測)

Ubuntu 22.04 LTS と 24.04 LTS で実際に apt-cache policy auditd を実行してバージョンを確認しました(2026-06-13 実測)。

Ubuntu バージョン auditd バージョン ausearch/aureport サポート期限
22.04 LTS (Jammy) 3.0.7-1build1 3.0.7 2027年4月
24.04 LTS (Noble) 3.1.2-2.1build1.1 3.1.2 2029年4月

22.04 の auditd 3.0.7 と 24.04 の auditd 3.1.2 では設定ファイルの構造は共通していますが、3.1.x 系ではイベントのリアルタイム処理の改善やバグ修正が含まれています。これから構築するなら Ubuntu 24.04 LTS で auditd 3.1.2 を使うのがおすすめです。

よくあるエラーと解決策

「Operation not permitted」が出る

auditctl を root 以外のユーザーで実行するとこのエラーが出ます。sudo を付けて実行してください。




ubuntu@server: ~
$ auditctl -s
Error sending status request (Operation not permitted)
$ sudo auditctl -s
enabled 1

「auditd is not running」と出てログが空

auditd サービスが起動していません。systemctl status auditd で状態を確認し、起動させてください。




ubuntu@server: ~
$ sudo systemctl status auditd
○ auditd.service – Security Auditing Service
Active: inactive (dead)
$ sudo systemctl start auditd
$ sudo systemctl enable auditd
Created symlink /etc/systemd/system/multi-user.target.wants/auditd.service

ルールを追加したが再起動後に消えた

auditctl で追加したルールはメモリ上にのみ保存されます。/etc/audit/rules.d/99-local.rules に書いて augenrules --load で適用すれば再起動後も有効です。

注意:auditd の過剰なルール設定について

特に -S execve(全コマンド実行)のような監視ルールをすべてのユーザーに適用すると、ログが非常に大量に生成されます。-F euid=0(root のみ)や -F auid!=unset(ログイン済みユーザーのみ)のようなフィルタを組み合わせて、必要なイベントだけを記録するようにしましょう。

まとめ

Ubuntu の auditd を使ったシステム監査ログの記録方法を解説しました。

  • Ubuntu 24.04 LTS では apt install auditd audispd-plugins で auditd 3.1.2 が入る(2026-06-13 実測)
  • auditctl -w でファイル監視、-a always,exit でシステムコール監視のルールを追加できる
  • ルールの永続化は /etc/audit/rules.d/99-local.rules に記述して augenrules --load で適用する
  • ausearch -k <key> -i でキーワード検索、aureport --summary でレポート確認ができる
  • Ubuntu 22.04 の 3.0.7 から 24.04 の 3.1.2 にバージョンアップされており、機能改善が含まれる

auditd はセキュリティ強化の第一歩として非常に有効です。VPS でサーバーを公開するなら、合わせて ufw(ファイアウォール)や fail2ban(ブルートフォース対策)も設定することをおすすめします。

著者アイコン
著者アイコン

VPS を借りたばかりでもすぐに auditd を入れておくと、後から「何かあったとき」にログが役立ちます。ルール設定は最初はシンプルに /etc/passwd、/etc/shadow、/etc/sudoers の監視から始めるのがおすすめです。

本格的に Ubuntu VPS を運用するなら、セキュリティ設定と合わせてサーバー選びも重要です。東京リージョンがある Vultr は日本からの遅延が少なく、個人開発の VPS としておすすめです。

コメント

タイトルとURLをコピーしました