Linux auditd コマンド
auditd は Linux システム上の監査デーモンであり、Linux 監査フレームワークの中核コンポーネントです。auditd の主な機能はシステムアクティビティの監視と記録であり、以下を含みます:
- ファイルとディレクトリへのアクセス
- システムコール
- ユーザーログイン/ログアウト
- 特権コマンドの実行
- システム設定の変更
これらの監査ログは、システムセキュリティの監視、コンプライアンスチェック、トラブルシューティングにとって非常に重要です。
auditd コアコンポーネント
auditd デーモン
継続的に実行されるデーモンで、監査イベントの収集と保存を担当します。
auditctl ツール
監査ルールの設定と監査システムの制御に使用されるコマンドラインツールです。
ausearch ツール
監査ログを照会するためのコマンドラインツールです。
aureport ツール
監査ログの集計レポートを生成します。
auditd のインストールと起動
auditd のインストール
ほとんどの Linux ディストリビューションでは、auditd は通常プリインストールされています。手動でインストールする必要がある場合:
例
sudo apt-get install auditd
# CentOS/RHEL
sudo yum install audit
auditd サービスの起動と有効化
例
sudo systemctl start auditd
# 自動起動を設定
sudo systemctl enable auditd
# サービス状態を確認
sudo systemctl status auditd
auditd 設定ファイル
auditd の主な設定ファイルは次の場所にあります/etc/audit/auditd.conf、以下の重要なパラメータが含まれています:
| パラメータ | 説明 | デフォルト値 |
|---|---|---|
log_file |
監査ログファイルのパス | /var/log/audit/audit.log |
max_log_file |
単一ログファイルの最大サイズ(MB) | 8 |
num_logs |
保持するログファイルの数 | 5 |
flush |
ログの書き込み方式 | INCREMENTAL |
freq |
flush=INCREMENTAL の場合、同期する頻度 | 20 |
設定変更後はサービスの再起動が必要です:
sudo systemctl restart auditd
auditctl コマンドの詳細
auditctlは監査ルールを設定するための主要ツールです。
基本構文
auditctl [选项] [规则]
よく使用するオプション
| オプション | 説明 |
|---|---|
-l |
現在のすべてのルールを一覧表示 |
-D |
すべてのルールを削除 |
-s |
監査システムの状態を表示 |
-R <file> |
ファイルからルールを読み込む |
ルールの種類
ファイルシステムルール:ファイル/ディレクトリへのアクセスを監視
例
auditctl -w /etc/passwd -p rwxa -k passwd_access
-w:監視パス-p:権限(r=読み取り、w=書き込み、x=実行、a=属性変更)-k:キーワード(ログフィルタリング用)
システムコールルール:特定のシステムコールを監視
例
auditctl -a always,exit -F arch=b64 -S execve -F path=/usr/bin/sudo -k sudo_cmds
-a:アクションとリスト(always,exit はシステムコール終了時に記録することを示します)-F:フィルタ条件-S:システムコール名
ユーザールール:特定のユーザーの行動を監視
例
auditctl -a always,exit -S unlink -S unlinkat -S rename -S renameat -F auid>=500 -F auid!=4294967295 -k delete_files
監査ログの分析
ausearch コマンド
監査ログの照会に使用します。
例
ausearch -k passwd_access
# 特定の時刻のログを検索
ausearch -ts today
ausearch -ts 10:00:00 -te 11:00:00
# 特定のユーザーのログを検索
ausearch -ua 1000
aureport コマンド
監査ログの集計レポートを生成します。
例
aureport -l
# ファイルアクセスレポートを生成
aureport -f
# すべてのイベントの要約レポートを生成
aureport --summary
実際の応用例
例1:機密ファイルの監視
例
auditctl -w /etc/shadow -p wa -k shadow_mod
# 関連ログを確認
ausearch -k shadow_mod | less
例2:ユーザー権限昇格の監視
例
auditctl -a always,exit -F arch=b64 -S execve -F path=/usr/bin/sudo -k priv_esc
auditctl -a always,exit -F arch=b64 -S execve -F path=/usr/bin/su -k priv_esc
# 権限昇格レポートを生成
aureport --start today --event --summary -i | grep priv_esc
例3:SSH ログインの監視
例
auditctl -a always,exit -F arch=b64 -S execve -F path=/usr/sbin/sshd -k sshd_login
# SSH ログイン記録を確認
ausearch -k sshd_login | grep 'acct="user"' | grep 'res=success'
ベストプラクティス
ログローテーションを適切に設定:ログでディスクがいっぱいにならないようにする
例
max_log_file = 50
num_logs = 10
監査ルールを一元管理:ルールをファイルに保存する
例
-w /etc/passwd -p wa -k passwd_changes
-w /etc/group -p wa -k group_changes
# ルールを読み込む
auditctl -R /etc/audit/rules.d/my.rules
ログを定期的に確認:cron ジョブを設定してログを定期的に分析する
例
0 0 * * * /usr/sbin/aureport --summary --start yesterday --end now | mail -s "Daily Audit Report" admin@example.com
監査ログの保護:ログの改ざんを防ぐ
例
chown root:root /var/log/audit/audit.log
よくある問題のトラブルシューティング
問題1:auditd サービスが起動できない
解決策:
- 設定ファイルの構文を確認:
auditd -f /etc/audit/auditd.conf - システムログを確認:
journalctl -u auditd
問題2:監査ログが生成されない
解決策:
- サービスが実行中であることを確認:
systemctl status auditd - ルールが読み込まれているか確認:
auditctl -l - カーネルのサポートを確認:
grep "audit" /boot/config-$(uname -r)
問題3:ログファイルが大きすぎる
解決策:
- ログのサイズと数を調整:
/etc/audit/auditd.conf内のmax_log_fileとnum_logs - ログ圧縮を設定:
compress = yesを設定ファイルに追加します
まとめ
auditd は Linux システムの強力な監査ツールであり、適切に設定することで以下が可能です:
- 重要なファイルとディレクトリへのアクセスを監視
- 特権コマンドの使用を追跡
- ユーザーログインとシステムアクティビティを記録
- コンプライアンス要件を満たす
auditd の使い方を習得することは、システム管理者やセキュリティ専門家にとって非常に重要です。auditd は Linux システムをより深く理解し、保護するのに役立ちます。
その他の拡張
Linux コマンド大全