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

設定方法

マスターサーバの設定

おおまかに分けて、次の手順となります。

  1. 必要パッケージをインストールする
  2. slapd.conf を編集
  3. センターとのアカウント同期の設定

/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スキーマは更新されており、上位互換性はありません。filefreeradius.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

関連ページ