「ausearchって何を指定すれば目的のログが出てくるの?」
こうした疑問を持つ方は多いと思います。Linuxの監査ログ(auditd)は、セキュリティインシデントの追跡・コンプライアンス対応・権限変更の追跡など、現場で欠かせない仕組みです。しかし、膨大なログの中から必要な情報を絞り込む方法を知らないと、あっという間に作業が行き詰まります。
この記事では、ausearchコマンドを使った監査ログの検索方法と、集計レポートを生成するaureportコマンドの使い方を実践的に解説します。RHEL 9 / AlmaLinux 9での動作確認済みです。
この記事のポイント
・ausearch -m でイベントタイプを絞り込み、素早く原因ログを特定できる
・ausearch --start today でその日の監査ログだけを抽出できる
・aureport --failed でログイン失敗や権限エラーの集計レポートを作れる
・ausearch -i でUIDやシステムコール番号を人間が読めるテキストに変換できる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
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
# 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 --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
応用・実務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.log。auditd.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
sudoの適切な設定も合わせて確認しておきましょう。ログが大量すぎてausearchが遅い
audit.logが数百MBを超えると処理に時間がかかります。以下の対処を検討してください。・時間範囲を必ず指定:
--start/--endで対象期間を絞る・ローテーション設定を見直す:
/etc/audit/auditd.confのmax_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日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:envsubstコマンドでシェル変数を環境変数で展開する方法|テンプレートファイルの動的生成と実務活用も
- 前のページへ:nmcliコマンドでネットワーク接続を設定する方法|静的IP・DHCP・接続追加・削除の手順も
- この記事の属するカテゴリ:Linuxtips・セキュリティへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます