検索
連載

ものいわぬOpenLDAPサーバのログ管理OpenLDAPによるディレクトリサーバ運用(3)(3/3 ページ)

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

PC用表示
Share
Tweet
LINE
Hatena
前のページへ |       

OpenLDAPサーバのアクセスログ

 アクセスログとは、OpenLDAPサーバにモジュールを追加することで利用可能となる機能であり、アクセス状況を把握する目的で利用されます。このアクセスログは、指定するバックエンドデータベースに対して行われたbind(認証)、add(追加)、modify(変更)といった指定する操作を、ファイルではなく別のバックエンドデータベースへ記録することができます。また、記録したログはldapsearchにて条件を絞り込んで参照できます。

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

 また、アクセスログは、OpenLDAPサーバのコンパイル時にも、デフォルトでは含まれないオプションです。この機能を利用するには、コンパイルの過程で“--enable-accesslog=yes”または“--enable-overlays=yes”など、明示的にオプションを追加する必要があります(注1)。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

注1:“enable-accesslog”はアクセスログモジュールのみ、“enable-overlays”はすべての追加モジュールを含めてコンパイルすることを指定するオプションです。


アクセスログの出力

 ここでは、OpenLDAPサーバ側の設定を行う前に、アクセスログを記録するバックエンドデータベースを配置するディレクトリを“var/openldap-accesslog”として準備します。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 次の例では、OpenLDAPサーバの設定ファイルslapd.confに、アクセスログの調査対象とするバックエンドデータベースをsuffix“dc=my-domain,dc=com”、またアクセスログを蓄積するバックエンドデータベースをsuffix“cn=accesslog”としてディレクティブを設定しています。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

注2:アクセスログで利用するスキーマ情報は、アクセスログモジュール内(overlays/accesslog.c)に実装されています。このため、設定ファイル内で、明示的にスキーマファイルを読み込む必要はありません。また、ここでのobjectClassはフィルタなしでの検索に備えるため、reqStartはlogpurge機能が利用するため、reqDNは後述の検索例でフィルタ条件に利用しているため、等価インデックス(eq)を指定しています。


 上記の設定例では、「あるエントリのユーザーが、直近の1週間で、このOpenLDAPサーバを認証に利用できているか」を確認するアクセスログを取得することを目的としています。このような設定は、例えば、不要なエントリをクリーンアップする際に、現在もシステムを利用しているのか、それとも長くシステムを利用しておらず削除候補となるユーザーのエントリであるのかの判定に応用することができます。

 設定変更後は、OpenLDAPサーバを再起動してアクセスログへの記録を開始します。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

アクセスログの確認

 次のコマンド例では、ここまでに説明したアクセスログ設定を行い、アクセスログが蓄積された後、特定エントリ(uid=test1000,ou=people,dc=my-domain,dc=com)の認証が成功した記録を確認するため、reqDN属性を条件に検索を行っています。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

アクセスログに設定可能なディレクティブ一覧

 アクセスログモジュールでは、次のディレクティブが利用可能です。

ディレクティブ 説明
logdb アクセスログを蓄積するバックエンドデータベースのsuffixを指定
例)logdb cn=accesslog
logops 記録対象とする操作(add、delete、modify、modrdn、compare、search、bind、unbind、abandon)を指定。次のエイリアス利用も可能。
writes:add、delete、modify、modrdnを含む
reads:compare、searchを含む
session:bind、unbind、abandonを含む
all:すべての操作を含む
例)logops bind writes
logold 削除(delete)、変更(modify)処理にて、変更前のエントリ情報を記録する対象エントリを特定するために、マッチさせるフィルタを指定
例)logold uid=test*
logoldattr 変更処理(modifyおよびmodrdn)にて、変更前の値も記録対象とする属性を指定
例)logoldattr cn uid uidNumber
logpurge ログを保持する期間および削除可能かどうかの確認を行う間隔を指定。時間の指定に利用するフォーマットは[ddd+]hh:mm[:ss]。日数、秒は省略可能
例)logpurge 7+00:00 1+00:00
logsuccess TRUEを設定した場合は、成功した操作のみを記録。デフォルトはFALSEであり、成功、失敗に関わらずlogopsで指定された操作を記録
例)logsuccess TRUE

 次回は、もう1つのログに関連する追加モジュールである監査ログモジュールと、今回説明したsyslogに送付するOpenLDAPサーバのログの読み方を中心に説明します。


前のページへ |       

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る