ausearchコマンドでLinuxの監査ログを検索・分析する方法|aureportでのレポート生成と実務活用も

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips, セキュリティ > ausearchコマンドでLinuxの監査ログを検索・分析する方法|aureportでのレポート生成と実務活用も
「auditdを設定したのに、どこで何が起きたのかログをうまく追えない」
「ausearchって何を指定すれば目的のログが出てくるの?」
「そもそもauditctlでルールを追加しないとログが残らないのでは?」

こうした疑問を持つ方は多いと思います。Linuxの監査ログ(auditd)は、セキュリティインシデントの追跡・コンプライアンス対応・権限変更の追跡など、現場で欠かせない仕組みです。しかし、「ルールの設定方法」「ログの検索方法」「レポートの作り方」をまとめて把握していないと、いざというときに使い物になりません。

この記事では、auditctlコマンドによる監査ルールの設定から、ausearchコマンドを使った監査ログの検索・分析、そして集計レポートを生成するaureportコマンドの使い方まで、一気通貫で解説します。RHEL 9 / AlmaLinux 9での動作確認済みです。

この記事のポイント

・auditctl -w でファイルやディレクトリへのアクセスを監視するルールを追加できる
・ausearch -m でイベントタイプを絞り込み、素早く原因ログを特定できる
・ausearch --start today でその日の監査ログだけを抽出できる
・aureport --failed でログイン失敗や権限エラーの集計レポートを作れる
・ausearch -i でUIDやシステムコール番号を人間が読めるテキストに変換できる


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

auditdとausearchの関係を理解する

Linuxの監査サブシステムは大きく4つのコンポーネントで構成されています。

カーネル監査モジュール:システムコールやファイルアクセスをイベントとして記録する
auditd(監査デーモン):カーネルのイベントを受け取り、/var/log/audit/audit.logへ書き込む
auditctl:「何を記録するか」のルールをカーネルに登録・削除するコマンド
ausearch / aureport:audit.logを解析・検索するためのコマンドラインツール

つまり、ausearchは「すでに記録されたログを検索する」ためのツールです。auditdが動いていて、auditctlで監視ルールが設定されていないとそもそもログが残りませんので、まず状態を確認しましょう。

Linux Audit システムはsyslogとは異なり、ルートであっても改ざんが難しいという特性を持ちます。PCI DSS や ISO 27001 などのコンプライアンス要件への対応や、インシデント発生時の事後追跡で特に威力を発揮します。

1. auditdの状態確認

# auditdのステータス確認 systemctl status auditd # auditdが止まっていれば起動 systemctl start auditd # OS再起動後も自動起動させる systemctl enable auditd

実際の出力例(AlmaLinux 9.4):

# systemctl status auditd * auditd.service - Security Auditing Service Loaded: loaded (/usr/lib/systemd/system/auditd.service; enabled; preset: enabled) Active: active (running) since Mon 2026-04-28 09:12:04 JST; 1h 15min ago Main PID: 1034 (auditd) Tasks: 4 (limit: 23246) Memory: 8.2M

auditctlで監査ルールを設定する

auditdが起動しただけでは、デフォルトでは最低限のイベントしか記録されません。「どのファイルへのアクセスを記録するか」「どのシステムコールを監視するか」は、auditctlコマンドでルールを登録して初めて機能します。

auditctlには大きく2種類のルール指定方式があります。

-w オプション(watchルール):ファイルやディレクトリを監視する
-a オプション(syscallルール):特定のシステムコールを監視する

2. -w オプションでファイル・ディレクトリを監視する

書式:

auditctl -w パス -p パーミッション -k キー名

-pオプションで監視するアクセス種別を指定します。

r:読み取り(read)
w:書き込み(write)
x:実行(execute)
a:属性変更(attribute change。chmodやchownなど)

実際の設定例を見てみましょう。

# /etc/passwd の読み取り・書き込み・属性変更を監視する(キー名: passwd_changes) auditctl -w /etc/passwd -p rwa -k passwd_changes # /etc/shadow の全アクセスを監視する auditctl -w /etc/shadow -p rwxa -k shadow_access # /etc/sudoers の変更を監視する auditctl -w /etc/sudoers -p rwa -k sudoers_changes # /tmp ディレクトリの実行を監視する(マルウェア対策) auditctl -w /tmp -p x -k tmp_exec # ルールが登録されたか確認 auditctl -l

auditctl -lの出力例:

-w /etc/passwd -p rwa -k passwd_changes -w /etc/shadow -p rwxa -k shadow_access -w /etc/sudoers -p rwa -k sudoers_changes -w /tmp -p x -k tmp_exec

3. -a オプションでシステムコールを監視する

ファイル単位では捉えにくい「誰がどのシステムコールを呼んだか」を記録する場合に使います。

# UID 1000 以上の一般ユーザーによるファイル削除を監視する auditctl -a always,exit -F arch=b64 -S unlink,unlinkat,rename,renameat -F auid>=1000 -F auid!=4294967295 -k file_deletion # setuid バイナリの実行を監視する(権限昇格の追跡) auditctl -a always,exit -F arch=b64 -S execve -C uid!=euid -F euid=0 -k setuid_exec # root によるファイルオープンを監視する auditctl -a always,exit -F arch=b64 -S open,openat -F uid=0 -k root_open

-F arch=b64は64ビット環境用の指定です。32ビット互換を含む場合はb32も追加します。auid!=4294967295はログイン前(デーモン起動時等)の除外フィルタです。

4. ルールを削除する

# 特定のwatchルールを削除する(-w の代わりに -W を使う) auditctl -W /etc/passwd -p rwa -k passwd_changes # すべてのルールを削除する auditctl -D # 削除確認 auditctl -l

auditctlのルールを永続化する(再起動後も有効に)

auditctlコマンドで設定したルールは再起動すると消えます。再起動後も有効にするには、設定ファイルに書く必要があります。

5. /etc/audit/rules.d/ に .rules ファイルを作成する

# 設定ファイルを作成(先頭数字で読み込み順を制御) vi /etc/audit/rules.d/90-custom.rules

ファイルの内容例:

## カスタム監査ルール(/etc/audit/rules.d/90-custom.rules) # 認証関連ファイルの監視 -w /etc/passwd -p rwa -k passwd_changes -w /etc/shadow -p rwxa -k shadow_access -w /etc/group -p rwa -k group_changes -w /etc/sudoers -p rwa -k sudoers_changes -w /etc/sudoers.d/ -p rwa -k sudoers_d_changes # SSH設定ファイルの変更を監視 -w /etc/ssh/sshd_config -p rwa -k sshd_config_changes # /tmp での実行を監視 -w /tmp -p x -k tmp_exec # UID 1000以上のファイル削除 -a always,exit -F arch=b64 -S unlink,unlinkat,rename,renameat -F auid>=1000 -F auid!=4294967295 -k file_deletion

設定ファイルを反映する:

# augenrules で rules.d 配下を結合して /etc/audit/audit.rules に反映 augenrules --load # または auditd を再起動して反映(RHEL系は service コマンド経由で) service auditd restart # 反映確認 auditctl -l

注意:systemctl restart auditdではなくservice auditd restartを使ってください。RHEL系ではsystemctl restart auditdだとaugenrulesの自動実行が行われない場合があります。

ausearchの基本的な使い方

ausearchはroot権限で実行します。オプションなしで実行するとすべての監査ログが出力されるため、実務では必ずフィルタを組み合わせます。

6. イベントタイプで絞り込む(-m)

最もよく使うのが-mオプションによるイベントタイプ指定です。

# ログイン失敗のイベントだけ抽出 ausearch -m USER_AUTH --success no # ファイル変更イベントを確認 ausearch -m PATH # sudoコマンドの実行履歴 ausearch -m USER_CMD # SELinuxのアクセス拒否イベント ausearch -m AVC

主なイベントタイプは以下のとおりです。

USER_AUTH:ユーザー認証(SSH・コンソールログインなど)
USER_CMD:sudoで実行されたコマンド
AVC:SELinuxのアクセス制御違反
SYSCALL:システムコールの呼び出し
PATH:ファイルへのアクセスや変更
CONFIG_CHANGE:audit設定の変更

7. 時間範囲を指定して絞り込む(--start, --end)

「今日の午後から何かあった」という場合に有効です。

# 今日のログだけ確認 ausearch --start today # 昨日のログ ausearch --start yesterday --end today # 特定日時の範囲を指定(MM/DD/YYYY HH:MM:SS形式) ausearch --start 04/27/2026 10:00:00 --end 04/27/2026 18:00:00 # 直近10分以内のログ ausearch --start recent

--start recentは過去10分のログを意味します。正確な1時間指定には時刻を明示してください。

8. ユーザーやプロセスで絞り込む(-ua, -p)

# 特定ユーザーの操作履歴を確認(UID or ユーザー名) ausearch -ua tomohiro # rootによる操作のみ ausearch -ua root # 特定プロセスIDのログ ausearch -p 12345 # コマンド名で絞り込む ausearch -c passwd

-uaはログ取得時のUID(auid: audit user ID)を指定します。sudoを経由した操作の場合でも、実際に端末にログインしたユーザーのUIDで追跡できます。これはセキュリティ調査で特に重要な機能です。

9. ファイルやディレクトリへのアクセスを調べる(-f)

「このファイルがいつ誰に変更されたか」を調べるときに使います。事前にauditルールで該当パスの監視を設定している必要があります。

# /etc/passwdへのアクセスを検索 ausearch -f /etc/passwd # /etc/shadowへの書き込み操作 ausearch -f /etc/shadow # /etc/sudoersの変更履歴 ausearch -f /etc/sudoers

監視ルールの追加はauditctlまたは/etc/audit/rules.d/への設定ファイル追記で行います(前章参照)。

# /etc/passwd・/etc/shadowを書き込み監視するルール追加例 auditctl -w /etc/passwd -p wa -k passwd-change auditctl -w /etc/shadow -p wa -k shadow-change # 設定を永続化する場合は /etc/audit/rules.d/audit.rules に記述 echo '-w /etc/passwd -p wa -k passwd-change' >> /etc/audit/rules.d/audit.rules

10. キー名で絞り込む(-k)

auditctlで-k キー名を付けてルールを登録した場合、ausearchの-kオプションで素早く絞り込めます。

# キー名でログを検索 ausearch -k passwd_changes # キー名 + 可読形式変換を組み合わせ ausearch -k passwd_changes -i # キー名 + 今日の日付を組み合わせ ausearch -k sudoers_changes --start today -i

ausearch -i で可読形式に変換する

デフォルトのausearch出力はUIDやシステムコールが数値で表示されるため、読みにくいことがあります。-iオプションで名前に変換できます。

# UIDをユーザー名に、syscallを名前に変換 ausearch -m USER_CMD -i # 時間範囲と組み合わせ ausearch --start today -m USER_AUTH -i

変換前後の比較(抜粋):

・変換前:uid=1000 syscall=59
・変換後:uid=tomohiro syscall=execve

インシデント調査では-iをほぼ必ず付けるようにしましょう。

ausearchの出力には複数のフィールドが含まれます。主要なフィールドの意味を押さえておくと解析が格段に速くなります。

auid:ログイン時の実UID(suした後でも元のユーザーを追跡できる)
uid / euid:プロセス実行時のUID / 実効UID(setuidバイナリ実行時に差が出る)
exe:実行されたコマンドのフルパス
comm:コマンド名(短縮形)
key:auditctlで設定したキー名
nametype:PATHイベントでの操作種別(CREATE/DELETE/NORMAL等)

aureportで監査ログを集計・レポート化する

ausearchが「検索」ツールであるのに対し、aureportは「集計・サマリー生成」ツールです。定期的なセキュリティ監査や月次レポート作成に向いています。

実際の本番環境での出力例(ホスト名・IPはマスク済み):

# 全体サマリーを表示 # aureport Summary Report ====================== Range of time in logs: 04/01/2026 00:00:01.219 - 04/28/2026 09:45:22.771 Selected time range: 04/01/2026 00:00:01.219 - 04/28/2026 09:45:22.771 Number of changes in configuration: 3 Number of changes to accounts, groups, or roles: 2 Number of logins: 47 Number of failed logins: 5 Number of authentications: 62 Number of failed authentications: 8 Number of users: 3 Number of terminals: 6 Number of host names: 4 Number of executables: 18 Number of commands: 24 Number of files: 12 Number of AVC's: 0 Number of MAC events: 0 Number of failed syscalls: 11 Number of anomaly events: 0 Number of responses to anomaly events: 0 Number of crypto events: 91 Number of integrity events: 0 Number of key events: 23 Number of process IDs: 156 Number of events: 1842

11. よく使うaureportオプション

# 認証失敗のレポート aureport --auth --failed # 実行されたコマンドのレポート aureport --comm # ログイン成功・失敗の一覧 aureport --login # ファイルアクセスのレポート aureport --file # 失敗したシステムコールの集計 aureport --syscall --failed # 時間範囲を指定してレポート生成 aureport --start today --login # AVCイベント(SELinux拒否)のレポート aureport --avc # キー別のイベント数を確認(負荷の高いルールを特定) aureport -k | sort -k 1 -n -r | head -20

実際のaureport --authの出力例:

# aureport --auth --failed Authentication Report ============================================ # date time acct host term exe success event ============================================ 1. 04/26/2026 22:14:35 unknown 203.0.113.xx ssh /usr/sbin/sshd no 1720 2. 04/26/2026 22:14:41 root 203.0.113.xx ssh /usr/sbin/sshd no 1722 3. 04/27/2026 03:05:17 admin 198.51.100.xx ssh /usr/sbin/sshd no 1891

このように不審なSSHログイン試行を素早く把握できます。Linux ポート確認の全コマンドと組み合わせて、接続元IPのポート状況も確認するとさらに有効です。

実務でよく使う監査ルール例

auditctlのルール設定で迷ったときは、業界標準のベースラインを参考にするのが近道です。

12. CIS Benchmark推奨の基本ルール

CIS(Center for Internet Security)のベンチマークで推奨されている代表的なルールです。PCI DSS対応や社内セキュリティ監査の基盤として活用できます。

## /etc/audit/rules.d/99-cis-basic.rules # 時刻変更の監視 -a always,exit -F arch=b64 -S adjtimex,settimeofday -k time_change -a always,exit -F arch=b64 -S clock_settime -k time_change -w /etc/localtime -p wa -k time_change # ユーザー・グループ管理ファイルの監視 -w /etc/group -p wa -k identity -w /etc/passwd -p wa -k identity -w /etc/gshadow -p wa -k identity -w /etc/shadow -p wa -k identity -w /etc/security/opasswd -p wa -k identity # ネットワーク設定変更の監視 -a always,exit -F arch=b64 -S sethostname,setdomainname -k system_locale -w /etc/issue -p wa -k system_locale -w /etc/hosts -p wa -k system_locale # ログイン・ログアウトの監視 -w /var/log/faillog -p wa -k logins -w /var/log/lastlog -p wa -k logins # 特権コマンドの監視(setuid/setgidバイナリ) -a always,exit -F arch=b64 -S execve -C uid!=euid -F euid=0 -k setuid # sudo の使用監視 -w /etc/sudoers -p wa -k sudoers_changes -w /etc/sudoers.d -p wa -k sudoers_changes

13. Webサーバー向けルール

Apache/Nginx を運用している環境向けです。設定ファイルの改ざん検知と、DocumentRootへの不審な書き込みを追跡できます。

## Webサーバー管理向けルール例 # Apache/Nginx の設定ファイル変更を監視 -w /etc/httpd/conf/ -p wa -k httpd_config -w /etc/httpd/conf.d/ -p wa -k httpd_config -w /etc/nginx/nginx.conf -p wa -k nginx_config -w /etc/nginx/conf.d/ -p wa -k nginx_config # DocumentRoot へのファイル書き込み監視(改ざん検知) -w /var/www/html/ -p wa -k www_changes # cron の変更を監視 -w /etc/cron.d/ -p wa -k cron_changes -w /etc/crontab -p wa -k cron_changes -w /var/spool/cron/ -p wa -k cron_changes

応用・実務Tips

14. ausearchとgrepを組み合わせた絞り込み

# sudoでrootになった操作をユーザー別に集計 ausearch -m USER_CMD -i | grep "cmd=" | awk '{print $NF}' | sort | uniq -c | sort -rn # 特定ホストからのSSHログイン試行を抽出 ausearch -m USER_AUTH --start today -i | grep "addr=192.168." # /etc以下の設定ファイルへの書き込みを抽出 ausearch -m PATH --start today -i | grep "nametype=CREATE\|nametype=DELETE"

15. 定期的なセキュリティ監査スクリプト

週次の監査レポートをメールで受け取る例です。

#!/bin/bash # /etc/cron.weekly/audit-report.sh REPORT_DATE=$(date +%Y-%m-%d) REPORT_FILE="/tmp/audit-report-${REPORT_DATE}.txt" { echo "===== 監査レポート: ${REPORT_DATE} =====" echo "" echo "--- 認証失敗 ---" aureport --auth --failed --start "$(date -d '7 days ago' '+%m/%d/%Y')" --end today echo "" echo "--- sudo実行コマンド ---" aureport --comm --start "$(date -d '7 days ago' '+%m/%d/%Y')" --end today echo "" echo "--- ファイルアクセス ---" aureport --file --start "$(date -d '7 days ago' '+%m/%d/%Y')" --end today } > "${REPORT_FILE}" # メール送信(mailコマンドが使える環境の場合) mail -s "週次監査レポート ${REPORT_DATE}" admin@example.com < "${REPORT_FILE}"

このスクリプトを/etc/cron.weekly/に置いて実行権限を付けると毎週自動実行されます。Linux DNS 設定の基本と合わせてサーバー管理の基本を固めておくと、セキュリティ設定全体の見通しが良くなります。

トラブルシュート・エラー対処

「ausearch: no matches」と表示される

検索条件に一致するログが存在しない場合に表示されます。以下を確認してください。

auditdが起動しているか:systemctl status auditdで確認
監査ルールが設定されているか:auditctl -lで現在のルールを確認。「No rules」なら対象ファイルのログは残っていない
時間範囲が正しいか:--startの日付フォーマット(MM/DD/YYYY)を再確認
ログファイルの場所:デフォルトは/var/log/audit/audit.logauditd.confで変更されている場合がある

「You don't have permission to search the audit logs」エラー

ausearchはroot権限(またはadmグループ)が必要です。

# rootで実行する場合 sudo ausearch -m USER_AUTH # または sudo -i でrootシェルへ切り替え sudo -i ausearch -m USER_AUTH

Linux ポート確認の全コマンドと同様、セキュリティ関連コマンドはroot権限が必要なものが多いため、sudoの適切な設定も合わせて確認しておきましょう。

ログが大量すぎてausearchが遅い

audit.logが数百MBを超えると処理に時間がかかります。以下の対処を検討してください。

時間範囲を必ず指定:--start/--endで対象期間を絞る
aureportでボトルネックを確認:aureport -k | sort -k 1 -n -r | head -20で多発しているキーを特定する
ローテーション設定を見直す:/etc/audit/auditd.confmax_log_file_actionを確認
不要なルールを削除:auditctl -lで過剰なルールがないか確認し、auditctl -Dで一時削除

auditdが起動しない・ログが止まった場合

# エラーメッセージを確認する journalctl -u auditd -n 50 # ディスク容量を確認(audit.log が満杯になると auditd が停止することがある) df -h /var/log/

/etc/audit/auditd.confdisk_full_actionの設定にも注意してください。デフォルトはSUSPEND(監査の一時停止)ですが、セキュリティ要件が高い環境ではHALT(システムを停止する)に設定するケースもあります。

本記事のまとめ

やりたいこと コマンド
ファイル監視ルールを追加 auditctl -w パス -p rwa -k キー名
システムコール監視ルールを追加 auditctl -a always,exit -F arch=b64 -S syscall -k キー名
登録済みルールを確認 auditctl -l
ルールを永続化する /etc/audit/rules.d/に.rulesファイル作成 → augenrules --load
ログイン失敗を抽出 ausearch -m USER_AUTH --success no -i
今日のsudo実行を確認 ausearch -m USER_CMD --start today -i
特定ファイルへのアクセスを確認 ausearch -f /etc/passwd -i
キー名でログを絞り込む ausearch -k キー名 -i
SELinux拒否ログを確認 ausearch -m AVC --start today -i
認証失敗の集計レポート aureport --auth --failed
実行コマンドの集計レポート aureport --comm
UID→ユーザー名変換 ausearch -m USER_CMD -i
特定ユーザーの操作履歴 ausearch -ua ユーザー名 -i

「セキュリティを意識したLinux運用」ができるエンジニアになりたいなら

auditctl・ausearch・aureportを使いこなせると、インシデント対応の速度が格段に上がります。
ネットの古い情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。