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

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

こうした疑問を持つ方は多いと思います。Linuxの監査ログ(auditd)は、セキュリティインシデントの追跡・コンプライアンス対応・権限変更の追跡など、現場で欠かせない仕組みです。しかし、膨大なログの中から必要な情報を絞り込む方法を知らないと、あっという間に作業が行き詰まります。

この記事では、ausearchコマンドを使った監査ログの検索方法と、集計レポートを生成するaureportコマンドの使い方を実践的に解説します。RHEL 9 / AlmaLinux 9での動作確認済みです。

この記事のポイント

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


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

auditdとausearchの関係を理解する

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

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

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

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

ausearchの基本的な使い方

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

2. イベントタイプで絞り込む(-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設定の変更

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

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

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

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

4. ユーザーやプロセスで絞り込む(-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で追跡できます。これはセキュリティ調査で特に重要な機能です。

5. ファイルやディレクトリへのアクセスを調べる(-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

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をほぼ必ず付けるようにしましょう。

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

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

# 認証失敗のレポート aureport --auth --failed # 実行されたコマンドのレポート aureport --comm # ログイン成功・失敗の一覧 aureport --login # ファイルアクセスのレポート aureport --file # 失敗したシステムコールの集計 aureport --syscall --failed # 時間範囲を指定してレポート生成 aureport --start today --login # AVCイベント(SELinux拒否)のレポート aureport --avc

実際の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のポート状況も確認するとさらに有効です。

応用・実務Tips

7. 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"

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

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

#!/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で確認
時間範囲が正しいか:--startの日付フォーマット(MM/DD/YYYY)を再確認
監査ルールが設定されているか:auditctl -lで現在のルールを確認
ログファイルの場所:デフォルトは/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で対象期間を絞る
ローテーション設定を見直す:/etc/audit/auditd.confmax_log_file_actionを確認
不要なルールを削除:auditctl -lで過剰なルールがないか確認し、auditctl -Dで一時削除

本記事のまとめ

やりたいこと コマンド
ログイン失敗を抽出 ausearch -m USER_AUTH --success no -i
今日のsudo実行を確認 ausearch -m USER_CMD --start today -i
特定ファイルへのアクセスを確認 ausearch -f /etc/passwd -i
SELinux拒否ログを確認 ausearch -m AVC --start today -i
認証失敗の集計レポート aureport --auth --failed
実行コマンドの集計レポート aureport --comm
UID→ユーザー名変換 ausearch -m USER_CMD -i
特定ユーザーの操作履歴 ausearch -ua ユーザー名 -i

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

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

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

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

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

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

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

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

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

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

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

この記事を書いた人

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

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

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