連載
» 2010年04月15日 00時00分 公開

OpenLDAPによるディレクトリサーバ運用(4):ものいわぬOpenLDAPサーバのログ管理・その2 (1/3)

ユーザー情報や組織情報などを一元的に管理するディレクトリサーバは、企業システムの中で重要な役割を果たしています。オープンソースの「OpenLDAP」によるディレクトリサーバの構築方法を解説した前連載に続き、その運用方法を紹介していきます。(編集部)

[菊池研自,伊藤忠テクノソリューションズ株式会社]

 今回は、追加モジュールとして提供される監査ログを説明した後、これまでに紹介したログを一覧にまとめます。その後、OpenLDAPサーバを管理するうえで大切な、syslogへ送付されるログの基本的な読み方を説明していきます。

OpenLDAPサーバの監査ログ(Auditlogモジュール)

 監査ログは、OpenLDAPサーバにモジュールを追加することで利用可能となる機能であり、指定したバックエンドデータベースに対して行われたすべての変更操作を、ファイルへと記録します。同じ追加モジュールであるアクセスログ(Accesslogモジュール)が、記録する操作を選択して別のバックエンドデータベースへ保存するのに対し、監査ログは、すべての変更操作をテキストファイルへと記録する点が異なります。

 本連載で対象としているCentOSにバンドルされるOpenLDAPサーバ(openldap-serversパッケージ)には、監査ログモジュールが含まれていません。CentOS 5.3以降、監査ログなどのオーバレイ機能は、openldap-servers-overlaysパッケージとして、別途、提供されています。

 また、監査ログは、OpenLDAPサーバのコンパイル時にも、デフォルトでは含まれないモジュールです。この機能を利用するには、コンパイルの過程で「--enable-auditlog=yes」、または「--enable-overlays=yes」など、明示的にコンパイルオプションを指定する必要があります(注1)。

$ CPPFLAGS=-I/usr/local/BerkeleyDB.4.8/include \
> LDFLAGS=-L/usr/local/BerkeleyDB.4.8/lib \
> ./configure --prefix=/usr/local/openldap-2.4.21 --enable-auditlog=yes

注1:「enable-auditlog」は監査ログモジュールのみ、「enable-overlays」はすべての追加モジュールを含めてコンパイルすることを指定するオプションです。


監査ログの出力

 ここでは、監査ログを出力するディレクトリを「var/openldap-auditlog」として準備します。

# cd /usr/local/openldap-2.4.21
# mkdir var/openldap-auditlog
# chown -R ldap.ldap var/openldap-auditlog
# chmod 700 var/openldap-auditlog

 slapd.confには、記録対象とするバックエンドデータベースのセクションにて、次の設定を行います。「overlay auditlog」以下に指定可能なディレクティブは、出力先ファイルを指定する「auditlog」だけです。

# cd /usr/local/openldap-2.4.21
# vi etc/openldap/slapd.conf

...[略]...
# 監査対象のバックエンドデータベース
database        bdb
suffix          "dc=my-domain,dc=com"
rootdn          "cn=Manager,dc=my-domain,dc=com"
rootpw          secret
directory       /usr/local/openldap-2.4.21/var/openldap-data

index   objectClass     eq
...[略]...             ↓ 監査対象のDB "dc=my-domain,dc=com"への設定
overlay auditlog    ←監査ログモジュールを利用
auditlog /usr/local/openldap-2.4.21/var/openldap-auditlog/my-domain.com.log
                       ←監査ログを記録するファイルを指定

 slapd.confの変更後は、OpenLDAPサーバを再起動し設定を反映させます。

# cd /usr/local/openldap-2.4.21
# kill -INT `cat var/run/slapd.pid`
# ./libexec/slapd -u ldap

 その後、監査対象のバックエンドデータベースに対する変更が行われた時点で「auditlog」ディレクティブで指定したファイルが作成され、LDIF(LDAP Data Interchange Format)形式で変更操作が記録されていきます。

監査ログの出力内容

 監査ログには、どの操作にも共通して次の3行が最初に記録されます。

# 操作 記録時のUNIXタイム 対象データベース 変更者
dn: 変更されたエントリのdn
changetype: 操作

 その後は、追加、変更といった操作に応じて、ユーザー属性や運用属性が追加されます。そして最終行には再び、どの操作にも共通して次の1行が記録されます。

# end 操作 記録時のUNIXタイム

 次の出力例は、あるエントリを追加したときに記録された監査ログの内容です。

# cd /usr/local/openldap-2.4.21
# less var/openldap-auditlog/my-domain.com.log

# add 1268806150 dc=my-domain,dc=com cn=Manager,dc=my-domain,dc=com
dn: ou=People,dc=my-domain,dc=com
changetype: add
objectClass: organizationalUnit
ou: People
structuralObjectClass: organizationalUnit        ←構造化オブジェクトクラス
entryUUID: 84208fa7-b8fe-432e-a718-0f839992476d  ←エントリUUID
creatorsName: cn=Manager,dc=my-domain,dc=com     ←作成者
createTimestamp: 20100317060910Z                 ←作成時間
entryCSN: 20100317060910.493811Z#000000#000#000000 ←エントリCSN
modifiersName: cn=Manager,dc=my-domain,dc=com    ←最終変更者
modifyTimestamp: 20100317060910Z                 ←最終変更時間
# end add 1268806150

ログ関連ディレクティブのまとめ

 以下に、OpenLDAPサーバのログ関連ディレクティブおよびOpenLDAPサーバのバックエンドに利用されることが多いBerkeley DBのログ関連ディレクティブをまとめます。

ディレクティブ 設定ファイル ログの役割
loglevel slapd.conf(グローバルセクション) 運用時の管理、または動作状況のデバックに用いると便利なログ。loglevelディレクティブで出力内容(出力量)を調整し、syslogに送付し記録する。
logfile slapd.conf(グローバルセクション) 主にデバック時、導入時など、loglevelディレクティブで指定した内容を、syslogに加え、さらにファイルにも重複して出力したい場合に利用すると便利。
overlay accesslog slapd.conf(各バックエンドセクション) 主に監査目的で、指定したバックエンドデータベースに行われた特定の操作を、別のバックエンドデータベースに記録する。ldapsearchでの検索や一定期間を経過したログの自動削除が可能。
overlay auditlog slapd.conf(各バックエンドセクション) 主に監査目的で、指定したバックエンドデータベースに行われたすべての変更操作を、指定したファイルにLDIF形式で記録する。
set_lg_dir、set_lg_maxなど DB_CONFIG Berkeley DBが動作するうえで必要なトランザクションログファイル。Berkeley DBへの変更が記録される。set_lg_dirでトランザクションログファイルの出力先ディレクトリを、set_lg_maxでサイズが指定可能。また「set_flags DB_LOG_AUTOREMOVE」フラグを利用して自動削除が可能。
表1 ログ関連のディレクティブ一覧

syslogが記録するログの必要性

 OpenLDAPサーバはさまざまなログを出力でき、目的に応じて使い分けることができますが、OpenLDAPサーバの動作状況を把握するうえで有効な情報は、一般にsyslogへ送付されます。OpenLDAPサーバ側でloglevelディレクティブを“0”としない限り、“0”以外のどのレベルであっても、最低限必要と思われる情報はsyslogへ送付されます。

 このためOpenLDAPサーバの管理者は、運用中に何かがおかしいと感じたとき、syslogが出力するログファイルを真っ先に確認することになるでしょう。

 これ以降、loglevelディレクティブにOpenLDAPコミュニティでの推奨値である「256」(16進数で「0x100」、文字列で「stats」)が指定されていることを前提に、syslogに送付されるログの基本的な読み方を説明していきます。


       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。