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

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【4/18開催】VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/

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

今回は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 ログレベルと粒度の関係

Leveldescription
1trace function calls
2debug packet handling
4heavy trace debugging
8connection management
16print out packets sent and received
32search filter processing
64configuration processing
128access control list processing
256stats log connections/operations/results
512stats log entries sent
1024print communication with shell backends
2048print entry parsing debugging
16384syncrepl consumer processing
32768only 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を使った方が読みやすいと思います。

使い分けが大事ですね。

アバター画像
About 藤原 6 Articles
文教向け案件を主に担当。ID管理、SSOを中心にインフラ構築からWebアプリ開発など幅広く業務を行っています。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

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

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


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる