rsyslogでOpenLDAPのログを見よう!CentOS

こんにちは、サイオステクノロジーの藤原です。

今回はCentOSに標準インストールされているrsyslogを使ってOpenLDAPのログを取得する方法についてまとめます。

 

以前、OpenLDAPで監査ログ(auditlog)を取得する方法について、記事を書きました。

auditlogはバックエンドデータベースに対する操作(エントリの追加、変更、削除)のログを取得できましたが、検索などのログを取得できませんでした。

rsyslogを使う方法では、この検索などのログを取得することができます。

前提条件

  • CentOS 7.8
  • OpenLDAP 2.4.44
  • ログを取得するDIT: fig.1参照
  • rootdn: “cn=Manager,dc=example,dc=com”

fig.1 DIT

rsyslogとは

公式ホームページより、

RSYSLOG is the rocket-fast system for log processing.

とあるように、rsyslogはローカルやリモートのログを高速に処理するデーモンです。

fig.2に示すように、様々なソースからの入力を、処理し、多様な送り先へ出力することができます。


fig.2 rsyslogの入出力先

今回はOpenLDAPからの入力をlogファイルとして出力する設定を行います。

 

rsyslogの設定

以下の3手順で設定を行います。

  1. rsyslog.confに追記
  2. ログレベル設定
  3. デーモンの再起動

rsyslog.confに追記

$sudo vi /etc/rsyslog.conf

46行目あたりに#### RULES ####とあるので、このセクションに以下を追記します。

# Save LDAP messages also to slapd.log
local4.*                   /var/log/slapd.log

slapdがlocal4ファシリティにログを出力をするので、rsyslogはこれを入力として受け取り、/var/log/slapd.logファイルに出力します。

local4.*というのはログを取得するフィルターでlocal4がファシリティ、アスタリスク(*)はプライオリティを表しています。

詳細については、RedHatのカスタマーポータルに載っています。

 

ログレベル設定

$sudo vi /etc/sysconfig/slapd

12行目SLAPD_OPTIONSのコメントアウトを外し、以下のように書き換えます。

SLAPD_OPTIONS="-s 256"

256という数字はログレベルを表しています。

ログレベルはどれくらいの粒度でログを記録するかを設定する値です。

ログレベルと粒度の関係をtable.1に示します。(OpenLDAPの公式ページ6.2.1.5. loglevelより

 

table.1 ログレベルと粒度の関係

Level description
1 trace function calls
2 debug packet handling
4 heavy trace debugging
8 connection management
16 print out packets sent and received
32 search filter processing
64 configuration processing
128 access control list processing
256 stats log connections/operations/results
512 stats log entries sent
1024 print communication with shell backends
2048 print entry parsing debugging
16384 syncrepl consumer processing
32768 only messages that get logged whatever log level is set

今回は検索の操作と結果のログを取得したいのでログレベルは256に設定しました。

自分が知りたい情報の粒度に合わせて適切に設定しましょう。

 

デーモンの再起動

rsyslogを再起動してrsyslog.confに追記した内容を反映します。

$sudo systemctl restart rsyslog

slapdを再起動してログレベルの設定を反映します。

$sudo systemctl restart slapd

ログレベルを変更した場合にはslapdを再起動します。

 

以上で、rsyslogを使ってOpenLDAPのログを取得するための設定は終わりです。

次はログを見ていきます。

ログを見てみる

fig.1のDITに対して、ある操作を行った場合のログを見てみます。

$sudo cat /var/log/slapd.log 
Aug 19 02:23:30 fujiwara slapd[2075]: conn=1000 fd=11 ACCEPT from IP=[::1]:33462 (IP=[::]:389)
Aug 19 02:23:30 fujiwara slapd[2075]: conn=1000 op=0 BIND dn="cn=Manager,dc=example,dc=com" method=128
Aug 19 02:23:30 fujiwara slapd[2075]: conn=1000 op=0 BIND dn="cn=Manager,dc=example,dc=com" mech=SIMPLE ssf=0
Aug 19 02:23:30 fujiwara slapd[2075]: conn=1000 op=0 RESULT tag=97 err=0 text=
Aug 19 02:23:30 fujiwara slapd[2075]: conn=1000 op=1 SRCH base="ou=users,dc=example,dc=com" scope=2 deref=0 filter="(objectClass=*)"
Aug 19 02:23:30 fujiwara slapd[2075]: conn=1000 op=1 SEARCH RESULT tag=101 err=0 nentries=4 text=
Aug 19 02:23:30 fujiwara slapd[2075]: conn=1000 op=2 UNBIND
Aug 19 02:23:30 fujiwara slapd[2075]: conn=1000 fd=11 closed

connはコネクションの番号です。コネクションの確立から解放までを1つの塊として番号が割り当てられています。

opは1回のコネクション中に行われた操作を表します。今回の場合、全部で3回操作が行われており、op=0はバインド、op=1は検索、op=2はアンバインドです。

 

このログを見ることで、

ローカルホストのipアドレス(::1)からポート389でコネクションが確立され、

バインドdn=”cn=Manager,dc=example,dc=com”でシンプル認証を行い、

ベースdn=”ou=user,dc=example,dc=com”に対して検索をかけ、4エントリがヒットし、

アンバインドし、コネクションが解放されたことが分かります。

 

どのようなコマンドが実行されたのか、なんとなく想像できますね。

正解はこれです。

$sudo ldapsearch -W -D cn=Manager,dc=example,dc=com -b ou=users,dc=example,dc=com

色々なコマンドを実行してログを確認することで、より理解が深まっていきますね。

 

まとめ

今回はrsyslogを使ったOpenLDAPのログの取り方についてまとめました。

手順は簡単で以下の3ステップで設定できます。

  1. rsyslog.confに追記
  2. ログレベル設定
  3. デーモンの再起動

適切なログレベルを設定しないと、情報が多すぎて読むのが大変でした。

データベースに加わった変更点だけを見たいときは、以前、使い方を説明したauditlogを使った方が読みやすいと思います。

使い分けが大事ですね。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

2人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です