Linux auditd コマンド

Linux 命令大全Linux コマンド大全


auditd は Linux システム上の監査デーモンであり、Linux 監査フレームワークの中核コンポーネントです。auditd の主な機能はシステムアクティビティの監視と記録であり、以下を含みます:

  • ファイルとディレクトリへのアクセス
  • システムコール
  • ユーザーログイン/ログアウト
  • 特権コマンドの実行
  • システム設定の変更

これらの監査ログは、システムセキュリティの監視、コンプライアンスチェック、トラブルシューティングにとって非常に重要です。


auditd コアコンポーネント

auditd デーモン

継続的に実行されるデーモンで、監査イベントの収集と保存を担当します。

auditctl ツール

監査ルールの設定と監査システムの制御に使用されるコマンドラインツールです。

ausearch ツール

監査ログを照会するためのコマンドラインツールです。

aureport ツール

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


auditd のインストールと起動

auditd のインストール

ほとんどの Linux ディストリビューションでは、auditd は通常プリインストールされています。手動でインストールする必要がある場合:

例

# Ubuntu/Debian
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> ファイルからルールを読み込む

ルールの種類

ファイルシステムルール:ファイル/ディレクトリへのアクセスを監視

例

# /etc/passwd ファイルの読み書きと属性変更を監視
auditctl -w /etc/passwd -p rwxa -k passwd_access
  • -w:監視パス
  • -p:権限(r=読み取り、w=書き込み、x=実行、a=属性変更)
  • -k:キーワード(ログフィルタリング用)

システムコールルール:特定のシステムコールを監視

例

# sudo を使用するすべてのコマンドを監視
auditctl -a always,exit -F arch=b64 -S execve -F path=/usr/bin/sudo -k sudo_cmds
  • -a:アクションとリスト(always,exit はシステムコール終了時に記録することを示します)
  • -F:フィルタ条件
  • -S:システムコール名

ユーザールール:特定のユーザーの行動を監視

例

# UID が 500 より大きいユーザーによるファイル削除を監視
auditctl -a always,exit -S unlink -S unlinkat -S rename -S renameat -F auid&gt;=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:機密ファイルの監視

例

# /etc/shadow ファイルを監視
auditctl -w /etc/shadow -p wa -k shadow_mod

# 関連ログを確認
ausearch -k shadow_mod | less

例2:ユーザー権限昇格の監視

例

# sudo または su を使用するすべてのコマンドを監視
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 ログインの監視

例

# 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'

ベストプラクティス

ログローテーションを適切に設定:ログでディスクがいっぱいにならないようにする

例

# /etc/audit/auditd.conf を編集
max_log_file = 50
num_logs = 10

監査ルールを一元管理:ルールをファイルに保存する

例

# ルールファイル /etc/audit/rules.d/my.rules を作成
-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

監査ログの保護:ログの改ざんを防ぐ

例

chmod 600 /var/log/audit/audit.log
chown root:root /var/log/audit/audit.log

よくある問題のトラブルシューティング

問題1:auditd サービスが起動できない

解決策:

  1. 設定ファイルの構文を確認:auditd -f /etc/audit/auditd.conf
  2. システムログを確認:journalctl -u auditd

問題2:監査ログが生成されない

解決策:

  1. サービスが実行中であることを確認:systemctl status auditd
  2. ルールが読み込まれているか確認:auditctl -l
  3. カーネルのサポートを確認:grep "audit" /boot/config-$(uname -r)

問題3:ログファイルが大きすぎる

解決策:

  1. ログのサイズと数を調整:/etc/audit/auditd.conf内のmax_log_fileとnum_logs
  2. ログ圧縮を設定:compress = yesを設定ファイルに追加します

まとめ

auditd は Linux システムの強力な監査ツールであり、適切に設定することで以下が可能です:

  • 重要なファイルとディレクトリへのアクセスを監視
  • 特権コマンドの使用を追跡
  • ユーザーログインとシステムアクティビティを記録
  • コンプライアンス要件を満たす

auditd の使い方を習得することは、システム管理者やセキュリティ専門家にとって非常に重要です。auditd は Linux システムをより深く理解し、保護するのに役立ちます。


Linux 命令大全Linux コマンド大全

その他の拡張