安定したコンピュータ業務のために。お気軽にお問い合わせください。

OpenLDAPを利用したLDAPサーバの構築

簡易なデータベースを利用したLDAPサービスは様々なソフトウェアから利用可能になり、OSからの参照なども容易に設定できることから認証システムの一部としても頻繁に利用されるようになった。
以下では基本的なシステム設定に関して記載しています。他アプリケーションとの連携、OSとの連携手順については別途ページを追加していきます。

スキーマ


OpenLDAPに格納する情報を表現するデータ定義をスキーマと呼びます。openldap標準でインストールされている(設定されているかについてはシステムに依存)スキーマは次のようなものがあります。
ファイル名 内容 主な用途
collective.schema Collective attributes (experimental) ユーザ追加情報格納
corba.schema Corba Object  
core.schema OpenLDAP "core" サーバ設定
cosine.schema COSINE Pilot LDAPv3 derived from X.500
duaconf.schema Client Configuration (work in progress) DUA
dyngroup.schema Dynamic Group (experimental)  
inetorgperson.schema InetOrgPerson ユーザ認証
java.schema Java Object  
misc.schema Miscellaneous Schema (experimental)  
nadf.schema North American Directory Forum (obsolete)  
nis.schema Network Information Service (experimental) ユーザ認証
openldap.schema OpenLDAP Project (FYI)  
ppolicy.schema Password Policy Schema (work in progress)  
基本的なLDAPの利用目的であれば、core.schema、corba.schema、cosine.schema、inetorgperson.schema、nis.schema、misc.schema、openldap.schemaあたりをIncludeしておけば問題ないでしょう。

アクセス制御


LDAPをユーザ認証に利用する場合、システムのユーザに他人のパスワードを閲覧させるのはセキュリティー的に問題があります。以下の制限をslapd.confに追加することで、自分自身のパスワード以外を読み取り、書き込みできなくなります。
access to attrs=userPassword
    by self write
    by users read
    by anonymous auth

access to *
    by self write
    by users read
    by anonymous read

ディレクトリ基本情報登録


管理対象となるディレクトリ情報、管理者パスワードなどを設定します。 暗号化されたパスワードはslappasswdコマンドで作成します。暗号化方式は好みに応じて設定してください。
[root@tsamba openldap]# /usr/sbin/slappasswd -v -h {MD5}
New password:   ←パスワードを入力
Re-enter new password:   ←上記と同じパスワードを入力
{MD5}FyyorNi2ImXXnMCAP2bA9g==
得られたパスワードをもとに、slapd.confファイルを編集します。
database    ldbm
suffix     "dc=i-sys,dc=biz"
rootdn     "cn=root,dc=i-sys,dc=biz"
rootpw     {MD5}FyyorNi2ImXXnMCAP2bA9g==

検索用Indexの設定(参照の高速化)


参照系で頻繁に利用される項目はIndex化しておくと処理が高速になります。データベースのIndex作成処理と同じで、むやみにIndex作成を行うとメモリ使用量が圧迫し、重複する情報にIndexを作成しても検索効率は高くならないことに留意してください。
index objectClass            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

TLS通信の確保

サーバ証明書、サーバキー、証明書の設定をslapd.confに導入します。
TLSCertificateFile /etc/openldap/cacerts/ldap.cert
TLSCertificateKeyFile /etc/openldap/cacerts/ldap.key
TLSCACertificateFile /etc/CA/cacert.pem

サービスの起動

設定は以上で完了です。各システムのコマンドを利用してサービスを起動します。

FreeBSDの場合


/etc/rc.conf
slapd_enable="YES"
/usr/local/etc/rc.d/slapd start

RHEL系の場合

/sbin/chkconfig ldap on
/sbin/service ldap start

接続確認


標準接続(非暗号化通信)

[root@tsamba tls]# ldapsearch -v -x -H 'ldaps://tsamba' -b "dc=i-sys,dc=biz"
ldap_initialize( ldaps://tsamba )
filter: (objectclass=*)
requesting: All userApplication attributes
# extended LDIF
#
# LDAPv3
# base with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# search result
search: 2
result: 32 No such object

# numResponses: 1

SSL接続(暗号化通信)

自己認証局を利用している場合、下記のようなエラーが発生することがあります。
[root@tsamba tls]# ldapsearch -v -x -H 'ldaps://tsamba' -b "dc=i-sys,dc=biz"
ldap_initialize( ldaps://tsamba )
ldap_bind: Can't contact LDAP server (-1)
additional info: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
利用している証明書が信用できると確信できる場合には/etc/openldap/ldap.confに下記一行を追記することで対応可能です。
TLS_REQCERT never
問い合わせに成功すると正常処理結果が返されます。

[root@tsamba tls]# ldapsearch -v -x -H 'ldaps://tsamba' -b "dc=i-sys,dc=biz"
ldap_initialize( ldaps://tsamba )
filter: (objectclass=*)
requesting: All userApplication attributes
# extended LDIF
#
# LDAPv3
# base <dc=i-sys,dc=biz> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# search result
search: 2
result: 32 No such object

# numResponses: 1




パートナー



ニュースリリース | 会社概要 | プライバシーポリシー | リンク | ©2002-2008 Integrated Systems Co. Ltd. All Rights Reserved.