情報分離の検討
日常的に確認している /var/log/auth.log には、ssh ログインの成功・失敗や、su の利用、PAM を通じた認証イベントなど、セキュリティ監査にとって重要な情報が集約されている。
一方で、sudo コマンドの使用履歴も同じく auth.log に出力される。シングルユーザーのような環境では、sudo の実行履歴はシステム的なセキュリティ監査よりも日常作業の操作ログに近い性質を持つ。
そのため auth.log のセキュリティ情報と sudo の利用記録を分離した方がログの性質が明確になり auth.log の監視に寄与するのではないかと考え、これらの情報を分離する設定を検討することにした。
ログファイル設定についての試行
まず /etc/sudoers.d/90-logging を作成し、以下の 2 行を記述した。
Defaults !syslog
これにより sudo のログは専用の /var/log/sudo.log にのみ出力され、auth.log には記録されなくなる。
さらにログローテーションを考慮し /etc/logrotate.d/rsyslog に倣って /etc/logrotate.d/sudo を用意した。
{
rotate 12
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
これで sudo.log は週次ローテーションされ、最大で約 3 ヶ月分を保持する運用とした。
観測とその結果
数日間この構成で運用して、実際のログ件数を確認した。
- auth.log: 約 20,000 行
- sudo.log: 約 500 行
auth.log から sudo の記録は完全に消え、分離は意図通り成功した。しかし観測の結果、sudo のログは全体の 2.5% に過ぎなかった。 auth.log を大きくしていたのは sshd のログイン試行や PAM の認証失敗などであり、sudo 分離の効果は限定的であることが分かった。
評価
今回の試行によって、以下の知見を得た。
- Defaults logfile= と Defaults !syslog を併用することで、sudo ログを完全に syslog から分離できる。
- ログローテーションを設定すれば、独立したファイルとして十分に管理可能。
- しかし実際の環境では sudo のログは全体のごく一部であり、auth.log の肥大化要因は別にあった。
- 監査要件やポリシー上の必要性がない限り、分離のメリットは小さい。
そのため、最終的にはこの設定を採用せず、従来どおり sudo ログも auth.log に含める方針に戻した。
結論とまとめ
- sudo ログの分離は技術的に容易であり、必要に応じて有効な手段である。
- しかしそのデータ量から auth.log と sudo.log を分ける効果は限定的だった。
- 今回は採用を見送ったが、検討から試行、観測、評価までを経て得た知見は、将来の運用や他の環境に応用できると考える。