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 で起動
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プロジェクトとして開発されている 開発元のサイト