LDAP

OpenLDAPについて

OpenLDAPはTCP/IPで実装されたディレクトリサービス用のプロトコル、LDAP(Lightweight Directory Access Protocol)のオープンソースソフトウェア版です。

LDAPのバージョン2とバージョン3の両方のプロトコルに対応しており、汎用性があります。

開発は OpenLDAP Foundationが運営するOpenLDAP Projectで行われております。

 

OpenLDAPの用語

DN (Disingunished Name) : 各エントリーで持っているユニークな名前の属性

RDN (Relative Distingunished Name) : エントリ検索を容易にするたに、上位のエントリ名を含まない名前の属性

objectClass : エントリに設定する必要がある属性、もしくは設定することができる特別な属性

スキーマ定義 : objectClassの定義

dc (DOmain Component) : ドメインの構成要素

o (Organization) : 組織名

ou (Organization Unit) : 組織の単位

cn (Common Name) : 一般の名称

 

インストール

環境: CentOS 6.4 の場合 Sambaとの連携を想定

1)パッケージのインストール openldap-servers  openldap-clients  です。

openldapは一般的にデフォルトでインストール済が多い、libtool-ltdlはopenldap-clientsの依存パッケージです 。

 # yum install openldap-servers openldap-clients

2)設定用ディレクトリのパスワード作成

 # slappasswd

/etc/openldap/slapd.conf/cn=config/olcDatabase={0}config.ldif ファイルを開いて、oclRootPW として作成したパスワードを記入し保存します。

3)データベースチューニングのための設定ファイル

 # cp -ar /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

 # chown -R ldap:ldap /var/lib/ldap/DB_CONFIG

4)設定ファイルの作成

/etc/openldap に slapd.conf を作成し、 slappasswdコマンドで作成したパスワードを記入し保存します。

5)LDAPサービスの起動

 # service slapd start   もしくは # /etc/rc.d/init.d/slapd start

LDAPサービスの制御スクリプト引数として start stop status restart condrestart configtest

6)LDAPデータベースの基本設定

基本設定の確認  -D オプションでルートDNを指定し DN(cn=config))配下のエントリに対して検索します。

 # ldapsearch -x -LLL -D 'cn=config' -W -b 'cn=config' '(olcDatabase={1}bdb)'

  もしくは

 # ldapsearch -x -LLL -D 'cn=config' -W -b 'cn=config' '(objectClass=*)'

結果の内容から /var/lib/ldap/ にデータが保存され、olcSuffixでLDAPデータベースツリーのDN、olcRootDNでLDAPサーバの管理用アクセス権のある特権DNの設定が確認出来ます。

olcRootPWは設定されていません。

7)データ用ディレクトリの管理情報を変更

データ変更用のLDIFファイル(bdb-init.ldif)を作成します。 以下のように、 DN名やolcDatabase={ } などは調整して下さい

dn: olcDatabase={2}bdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=sambadom1,dc=local
-
replace: olcSuffix
olcSuffix: dc=sambadom1,dc=local
-
add: olcRootPW
olcRootPW: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxx

8)LDAPサーバで管理するデータを登録

以下のサンプルldifファイルはSambaとOpenLDAPとの連携をするときを想定した内容です。実際の運用環境に合わせて調整します。

組織、グループ、ユーザアカウントの基本となるLDAPデータ

dn: dc=sambadom1,dc=local
objectClass: top
objectClass: dcObject
objectClass: organization
o: dc=sambadom1,dc=local
dc: sambadom1

dn: cn=Manager,dc=sambadom1,dc=local
objectClass: organizationalRole
cn: Manager

dn: ou=users,dc=sambadom1,dc=local
objectClass: top
objectClass: organizationalUnit
ou: users

dn: ou=groups,dc=sambadom1,dc=local
objectClass: top
objectClass: organizationalUnit
ou: groups

dn: ou=idmap,dc=sambadom1,dc=local
objectClass: top
objectClass: organizationalUnit
ou: idmap

dn: ou=computers,dc=sambadom1,dc=local
objectClass: top
objectClass: organizationalUnit
ou: computers

グループのアカウントに関するLDAPデータ

 Sambaとの連携ではSambaデータベースからデータを移行します。

ユーザーのアカウントのLDAPデータ

 Sambaとの連携ではSambaデータベースからデータを移行します。

データアクセスの制御

 /etc/openldap/slapd.d/cn=config/olcDatabase={1}dbd.cn=config ファイルで dn名やその他の設定を調整します。

9)slapd.confの設定

/etc/openldap/slapd.conf ファイルをSamba用に設定する 詳細は別途

Sambaのスキーマ( /usr/share/doc/samba-3.6.9/LDAP/samba.schema )を /etc/openldap/schema へコピー

10)Linux認証のLDAP化

UNIXユーザの情報もLDAPに格納するプログラム nss-pam-ldapd  pam_ldap  nscd  をインストール

 # yum install nss-pam-ldapd nscd pam_ldap

 # authconfig --enableldap --enableldapauth --ldapserver=127.0.0.1 --ldapbasedn=dc=sambadom1,dc=local --update

11)Winbindの設定と起動  # authconfig --enablewinbindauth --update

nscdは二重キャッシュになるのでサービスを停止

12)net sam provision コマンドでSamba用の初期ユーザやグループを作成

 

環境: Debian の場合

 

備考

CentOS 6.4 でのOpenLDAPのインストール

ここのページを参考にします >> ここから

olcRootPW を olcDatabase={0}config.lfid に編集して追加します。 olcDatabase{2}bdb.ldif には必要ありません。

 

再インストールする場合

OpenLDAP Server を再インストールするときなどは、 /var/lib/ldap 以下のOpenLDAPのBDBデータを削除するか、別の場所に新規保存するようにします。 

どちらの場合もDB_CONFIGファイルを新規設定します。

また、/etc/openldap のディレクトリも削除されているか確認します。

 

LDAPデータベースのバックアップ

CentOS 6.4 でアーカイブする場合 (下記の手順では、キャッシュ用の一時ファイルは削除しています)

# service slapd stop

# cd /var/lib/ldap

# tar cvzf /var/lib/ldap_backup.tar.gz --exclude __db.* /var/lib/ldap/

# service slapd start

CentOS 6.4 でLDIFファイルに書き出す場合もLDAPデータベースは停止した状態で実行します。

 

phpldapadmin のインストール

CentOSの場合 phpldapadmin のダウンロードとインストール(標準レポジトリにはないので外部レポジトリからダウンロード)

 # yum install phpldapadmin

  /etc/httpd/conf.d/phpldapadmin.conf  を編集し、 Allow from 127.0.0.1 の行に アクセスするネットワーク、例えば 192.168.0.0/24 を追加

/etc/phpldapadmin/config.php を編集し、以下の内容に修正する。

397行をコメントアウトし 398行をコメントに設定する

$servers->setValue('login','attr','dn');

//$servers->setValue('login','attr','uid');

 

ブラウザから localhost/ldapadmin で起動  

phpldapadmin 1.2.3-1

 

 

 

 

 

 

 

OpenLDAPのログの設定

CentOS 6.4 の場合

1)LDAPサーバのログファシリティとログレベルの調整

/etc/sysconfig/ldap ファイルを編集します  SLAPD_OPTIONS="-l local4 -s 512"  を挿入します。 

デバックレベルは必要に応じて増減します 

例えば 512 は送られたエントリのステータス

2048 はエントリの解析処理

65535 ですべてのレベルを表示

2)/etc/rsyslog.conf  ファイルに以下の行を追加します

local4.*                                                /var/log/slapd.log

3)念のためにrsyslog とOpenLDAPの再起動後、ログの確認

# service rsyslog restart

# service slapd restart

# cat /var/log/slapd.log
GUIで管理できる便利なツール(Samba対応)

LAM (Ldap Account Manager)  Webブラウザで管理できる  開発元のサイト

GOsa2 LDAPデータベースでアカウントやシステムを管理できるフレームワーク 開発元のサイト

Webmin  Linuxのシステム管理ツールで、LDAP、SAMBAもサポート

LDAP Admin WindowsベースのLDAP管理ツール SAMABも対応

Apache Directory Studio Apache FoundationのLDAPプロジェクトとして開発されている  開発元のサイト

 

 

 

 

 

タグ: 

オープンソースソフトウェア: