
第14号(2007年11月)
記事:セキュリティの要です。auditd編
今号ではxenによる仮想化の簡単な説明と導入方法、そしてRed Hat Enterprise Linux 5.1 でのxenの変更点について紹介いたします。
今号ではauditdについて紹介いたします。
■auditdとは?
まずauditdとは監査メッセージをログファイルに出力するためのデーモンです。カーネルはあらかじめ設定した条件にマッチする動作をした場合に監査メッセージを出力します。それをログファイルに保存するのがauditdの役割です。
監査メッセージの取得はセキュリティのために行うわけですが、auditd の目的はこの監査メッセージをログファイルに確実に記録することによってあとから不正な利用を発見できるようにすることです。ログ出力といえば、 syslogがありますが、なぜsyslog ではなく専用のデーモンが必要なのでしょう?
単純に言えば、syslogが提供している機能では監査用のログに求められる要件を満たせないからです。ログファイルの保存に失敗した場合監査の対象にならずに任意の操作を実行できるようになってしまいます。こうなると、監査メッセージを取得していたそもそもの目的が果たせません。
そのため、auditdでは単純なログ保存だけでなく、監査用のログに必要な特殊な設定項目があります。本稿ではこの点に焦点をあててご説明します。
-------基本的な使い方---------------
RHEL5ではデフォルトでauditdが導入されており、基本的な設定が行われています。デフォルトの設定では、ログファイルは/var/log/audit/audit.log になっています。
設定ファイル /etc/audit/auditd.rules で、どのような条件で監査メッセージを出力するかを設定できます。
具体的な設定項目については、 man auditctl により参照してください。
マニュアルに記述されている例から:
|
auditctl -a entry,always -S all -F pid=1005
|
のようにauditctlを実行すると PIDが1005のプロセスが呼び出したシステムコールを全て出力します。この場合、/etc/audit/audit.rules には、以下のような行を追加します。
|
-a entry,always -S all -F pid=1005
|
設定ファイル /etc/audit/auditd.conf で以下のような設定ができます。
具体的な設定項目については、 man auditd.conf により参照してください。
ログファイル
・ログファイル名
ログローテートの設定
・ログローテート条件
・世代数(保存されるログの数)
・最大の大きさ
ログファイルのフォーマット
ログ失敗対策
auditdに特徴的なものとしてログを保存するディスクがあふれるなどログ失敗時の対策について設定できます。
次の節ではログ失敗対策について説明します。
-------ログ失敗対策---------------
syslogで記録する通常のログとは違い、監査用のログを厳密に運用する場合は、ログがとれなくなった時にコマンドの実行を禁止するなど、適宜対応する必要があります。
そこで、auditd.conf には以下のような設定項目があります。
残容量が足りなくなった時にの動作を指定します。
動作には ignore, syslog, email, suspend, single, haltのいずれかを選んで、無視、syslogへの出力、emailによる通知、auditdの停止、シングルユーザモードへの移行によるコマンド停止、システムのシャットダウン を実施します。
space_left_actionを実行する契機になる残容量
同様の設定項目に admin_space_left_action, disk_full_action, disk_error_action があり、それぞれ slace_leftより小さい任意の残容量, ディスクあふれ, ディスクエラー発生時の動作を指定できます。
このような設定を使用することで、ログの保存が難しくなった場合に管理者へ警告を発したり、実際に失敗が発生した場合にもサーバを停止して
セキュリティを確保することができます。
可用性が問題になる場合には、クラスタシステムなどを併用してサービスは停止させず、ログ保存に失敗したサーバだけを停止させる工夫が必要になります。
-------安全な使い方---------------
以上のように、監査用のログの記録に失敗したまま放置するとセキュリティ上の問題になりますので、適宜停止させるなどの動作が必要です。しかしできるだけサーバは停止させたくないので、以下のようなノウハウがあります。
ディスクあふれ対策としては、以下のような運用で回避します。
・ログ専用パーティションを用意する。
・auditd.confで容量によるローテート指定と世代数の指定をおこない、
(世代数 + 1) × ログファイルの最大容量 < 専用パーティション
となるようにする。
このように設定することで、ログがあふれることを防ぐことができます。必要な容量は、監査メッセージの出力条件と、バックアップ間隔、サーバのアクティビティ次第で非常に大きく変化しますので、必要性と想定される操作の頻度にあわせて実験することで求めます。
ディスクエラーについてはあまり有効な対策はありませんが、LVMまたはRAIDによるミラーリングを利用して複数ディスクを利用して可用性を上げることができます。
-------まとめ-------
今回は監査用のログを保存することでセキュリティを確保する、auditdと呼ばれるアプリケーションと、その設定について説明しました。
基本的な使い方、また失敗したときの対策といった、確実にログを保存するためのノウハウを、サーバ管理のご参考にして頂ければ幸いです。
レッドハット株式会社/ニュースレター編集部