OpenLDAPとは
オープンソースとして開発されているLDAP v3対応のLDAPソフトウェアです。
ユーザやPCの情報を管理するために利用される場面が多く、
情報工学科でもユーザ管理システムの基幹サーバとして使用しています。
インストール
必要なRPMパッケージ
LDAP関連パッケージと学科独自仕様に必要なパッケージをインストールします。
サーバ
- openldap
- openldap-clients
- openldap-servers
- smbldap-tools
- nss_ldap
- php-ldap
- phpldapadmin
- openldap-devel
- samba
- freeradius
- php-pear-Crypt-CHAP
- ibmcrypt-devel
yumによるインストール方法
# yum install openldap openldap-clients openldap-servers smbldap-tools ? nss_ldap php-ldap phpldapadmin openldap-devel samba freeradius ? php-pear-Crypt-CHAP libmcrypt-devel
クライアント
- openldap
- openldap-clients
- nss_ldap
yumによるインストール方法
# yum install openldap openldap-clients nss_ldap
設定方法
マスターサーバの設定
おおまかに分けて、次の手順となります。
- 必要パッケージをインストールする
- slapd.conf を編集
- センターとのアカウント同期の設定
/etc/openldap/slapd.confを編集
ここでは設定する必要がある項目について説明します。
そのほかにも様々な設定項目があります。
それらについては slapd.conf のオンラインマニュアルを参照してください。
- 使用するスキーマの指定します。
include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schema include /etc/openldap/schema/freeradius.schema include /etc/openldap/schema/samba.schema
freeradius.schema と samba.schema は、それぞれ次の場所から/etc/openldap/schemaへコピーします。
/usr/share/doc/samba-3.0.24/LDAP/samba.schema /usr/share/doc/freeradius-1.0.5/RADIUS-LDAPv3.schema
注意:Fedora7以降のFreeRADIUSパッケージに付属されているRADIUSスキーマは更新されており、上位互換性はありません。freeradius.schema をコピーしてください。
- バックエンドのDBMSを指定します。
database bdb
- suffix, rootdn, rootpwを指定します。
suffix "ou=ie, o=u-ryukyu, c=jp" rootdn "cn=Manager, ou=ie, o=u-ryukyu,c=jp" rootpw {SSHA}exMu4a/BzddYxG79zDpG/MXeHnYq+zWz
rootpwは、slappasswdコマンドを実行した結果を指定してください。
- indexを作成する属性を指定します。
index objectClass,entryCSN,entryUUID eq,pres index ou,cn,mail,surname,givenname eq,pres,sub index uidNumber,gidNumber,loginShell eq,pres index uid,memberUid eq,pres,sub index nisMapName,nisMapEntry eq,pres,sub
これを指定すると、よく使用する属性のindexを作成し、検索性能が上がります。
indexを作成にするには、slapdを停止したあとslapindexを実行する必要があります。
- レプリカ(マスター)の設定をします。
overlay syncprov syncprov-checkpoint 10 10 syncprov-sessionlog 100
- 各属性に対するアクセス制御を設定します。
access to attrs=userPassword,sambaLMPassword,sambaNTPassword by self write by group/groupOfNames/member="cn=ldapadmin,ou=Group,ou=ie,o=u-ryukyu,c=jp" write by anonymous auth by * none access to * by self write by group/groupOfNames/member="cn=ldapadmin,ou=Group,ou=ie,o=u-ryukyu,c=jp" write by * read
基本的に次のようなポリシーでアクセス制御しています。
- パスワード属性は本人や認証時のみ参照可能
- 自分のエントリは変更可能
- ldapadminグループに所属するエントリは、すべてを変更可能
DB_CONFIG
BerkeleyDBの設定ファイルです。RPM付属のサンプルをコピーします。
cp /etc/openldap/DB_CONFIG.sample /var/lib/ldap/DB_CONFIG
syncprovでエラーが発生する場合の対処法
デフォルトでsyncprovが使用できず、サービス起動時に下記のようなエラーがでることがあります。
overlay "syncprov" not found slaptest: bad configuration file!
syncprovのモジュールが読み込まれていないことが原因なので、slapd.confに以下の記述を追加してください。
modulepath /usr/lib/openldap moduleload syncprov.la
スレーブサーバ(レプリカ)
ほぼマスターサーバと同様の設定ですので、まずはマスターサーバと同じ設定をしてください。
次に、”レプリカ(マスター)の設定”をスレーブ用の設定に変更します。
以下にその設定を示します(設定時にはコメントをはずしてください。
syncrepl rid=400 # レプリカの識別子。0以上で3桁以内の整数値を指定してください provider=ldap://nirai.ie.u-ryukyu.ac.jp # マスターサーバの指定。 type=refreshOnly interval=00:00:30:00 # 複製間隔。30分ごとに指定します。 searchbase="ou=ie,o=u-ryukyu,c=jp" # 検索ベース。通常はsuffixを指定します。 scope=sub schemachecking=off bindmethod=simple binddn="cn=Manager,ou=ie,o=u-ryukyu,c=jp" # マスターサーバにアクセスするDN。 credentials="password" # 上記DNのパスワード
複製する内容は、binddnでアクセスできるエントリの内容になります。
クライアントの設定
クライアントのユーザ認証にLDAPを使用するには、
authconfig-tui コマンドを使用します。
スーパーユーザ権限で authconfig-tui コマンドを実行し、次の項目を設定します。
- ユーザ情報の欄の「LDAPを使用」にチェックを入れる
- 認証の欄の「LDAP認証を使用」にチェックを入れる
- LDAP設定欄で、サーバに「ldap://nirai.ie.u-ryukyu.ac.jp ldap://kanai.ie.u-ryukyu.ac.jp」を入力し、ベースDNには「ou=ie,o=u-ryukyu,c=jp」を入力します。
負荷分散のため、基幹サーバ以外では kanai を先に指定してください。
このコマンドは Redhat系Linux特有のコマンドとなっています。
実際には以下のファイルがLDAP用に編集されます。
/etc/nsswitch.conf /etc/pam.d/system-auth /etc/ldap.conf /etc/openldap/ldap.conf