手当たり次第に書くんだ

飽きっぽいのは本能

CentOS 6 OpenLDAP LDAP サーバー構築

Overview

CentOS 6 における LDAP サーバー (OpenLDAP) の構築手順です。この LDAP サーバーは、Samba, FreeRadius と連携します。

インストール

OpenLDAP をインストールします。

[root@centos-6 ~]# yum -y install openldap-servers openldap-clients pam_ldap nss-pam-ldapd

Samba をインストールします。Samba スキーマの入手のみが目的であるため、このホストで Samba は稼働させません。

[root@centos-6 ~]# yum -y install samba samba-swat samba-client

Samba と同じ目的で、FreeRadius をインストールします。

[root@centos-6 ~]# yum -y install freeradius freeradius-utils freeradius-ldap freeradius-perl

管理者パスワードの生成

slappasswd を使用し、SSHA (Secure Salted Hash Algorithm) でハッシュされた管理者パスワードを生成します。生成したパスワードは、後述の設定ファイルに記述します。

[root@centos-6 ~]# slappasswd
New password:
Re-enter new password:
{SSHA}xxxxxxxx

スキーマを配置

Samba スキーマは Samba のインストール時点で適切に配置されていますが、FreeRadius スキーマは手動で配置する必要があります。

[root@centos-6 ~]# cp -a /usr/share/doc/freeradius-2.1.12/examples/openldap.schema /etc/openldap/schema/radius.schema

slapd.conf.obsolete

OpenLDAP 2.3 以降、設定方法がファイル形式から DB 形式に変更されました。DB 形式になることで、設定変更がオンラインで可能になるなどのメリットがありますが、現状では参考とする情報量が少なく、今回は完全な DB 形式での設定は断念します。回避策として、一時的に従来のファイル形式での設定し、それを DB 形式に変換する方法をとります。

設定ファイルのテンプレート (slapd.conf.obsolete) を配置します。obsolete (時代遅れ)というファイル名の通り、OpenLDAP としても非推奨であることは分かります。

[root@centos-6 ~]# cp -a /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap

/etc/openldap/slapd.conf.obsolete を編集します。以下は追記箇所のみを記載しています。

[root@centos-6 ~]# vim /etc/openldap/slapd.conf.obsolete
# Append
include /etc/openldap/schema/samba.schema
include /etc/openldap/schema/radius.schema
database monitor
access to *
    by self write
    by dn="cn=admin,dc=si1230,dc=com" write
    by * read
access to attrs=userPassword
    by self write
    by dn="cn=admin,dc=si1230,dc=com" write
    by anonymous auth
    by * none
# Modification
suffix "dc=si1230,dc=com"
rootdn "cn=admin,dc=si1230,dc=com"
rootpw {SSHA}xxxxxxxx

include /etc/openldap/schema/samba.schema

samba.schema スキーマファイルをインクルードしています。これは Samba 用の LDAP スキーマを追加するためのものです。

include /etc/openldap/schema/radius.schema

radius.schema スキーマファイルをインクルードしています。これは Radius (Remote Authentication Dial-In User Service) 用の LDAP スキーマを追加するためのものです。

database monitor

モニタリングデータベースを使用することを指定しています。これにより、LDAP サーバーの状態や動作を監視することができます。

access to *

  • by self write: ユーザーは自分のエントリーに対して書き込み権限を持ちます。
  • by dn="cn=admin,dc=si1230,dc=com" write: cn=admin,dc=si1230,dc=com は全てのエントリーに対して書き込み権限を持ちます。
  • by * read: その他のユーザーは読み取り権限のみを持ちます。

access to attrs=userPassword

  • by self write: ユーザーは自分の userPassword 属性に対して書き込み権限を持ちます。
  • by dn="cn=admin,dc=si1230,dc=com" write: 管理者は userPassword 属性に対して書き込み権限を持ちます。
  • by anonymous auth: userPassword 属性への認証(ログイン)操作を匿名ユーザーに許可します。
  • by * none: その他のユーザーには userPassword 属性へのアクセスを完全に拒否します。

suffix "dc=si1230,dc=com"

この設定で定義されているデータベースのサフィックス(データベースのルートとなる DN)を dc=si1230,dc=com と指定しています。

rootdn "cn=admin,dc=si1230,dc=com"

管理者 (root) の DN を cn=admin,dc=si1230,dc=com と指定しています。

rootpw {SSHA}xxxxxxxx

管理者のパスワードを SSHAでハッシュ化した値で設定しています。xxxxxxxx は実際のハッシュ値に置き換えて下さい。

[ ACL 設定について ]

この設定により、管理者は全ての情報と userPassword 属性を書き換えることができ、一般ユーザーは自分自身のエントリーと userPassword 属性のみを書き換えることができます。また、匿名ユーザーは userPassword 属性の認証操作のみを行うことができます。

設定ファイルを DB 形式に変換

設定ファイルを DB 形式に変換します。

[root@centos-6 ~]# rm -rf /etc/openldap/slapd.d/*
[root@centos-6 ~]# slaptest -f /etc/openldap/slapd.conf.obsolete -F /etc/openldap/slapd.d
[root@centos-6 ~]# chown -R ldap:ldap /etc/openldap/slapd.d

サービス起動設定

slapd サービスを起動し、システムの起動時に有効になるように設定します。

[root@centos-6 ~]# service slapd start && chkconfig slapd
[root@centos-6 ~]# chkconfig slapd --list

初期データ登録

初期データを登録します。以下のように LDIF を作成します。

[root@centos-6 ~]# vim /root/init.ldif
dn: dc=si1230,dc=com
objectClass: dcObject
objectclass: organization
o: si1230
dc: si1230

dn: cn=admin,dc=si1230,dc=com
objectclass: organizationalRole
cn: admin

dn: ou=users,dc=si1230,dc=com
objectClass: organizationalUnit
ou: users

dn: ou=groups,dc=si1230,dc=com
objectClass: organizationalUnit
ou: groups

ldapadd で LDIF を登録します。ここまで、OpenLDAP 自体の設定は一通り完了となります。後はユーザー登録、各アプリケーションの LDAP 参照設定となります。

[root@centos-6 ~]# ldapadd -x -D "cn=admin,dc=si1230,dc=com" -W -f /root/init.ldif
CentOS 6 OpenLDAP LDAP サーバー構築

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る