LDAP は Lightweight Directory Access Protocol の略です。
LDAP は、ネットワークを介して集中的に保存された情報にアクセスするためのソリューションです。この一元的に保存された情報は、X.500 標準に準拠したディレクトリに編成されます。
情報は階層的に保存および編成されます。このアプローチの利点は、情報をコンテナーにグループ化して、クライアントが必要なときにいつでもこれらのコンテナーにアクセスできることです。
OpenLDAP 階層は、DNS 階層とほとんど同じです。
OpenLDAP で最も一般的に使用される 2 つのオブジェクトは次のとおりです。
たとえば、階層 sam.thegeekstuff.com にユーザーが存在する場合、このユーザーの完全識別名は、cn=sam、dc=thegeekstuff、dc=com として参照されます。 FDN (完全識別名) でお気づきの場合は、DNS で一般的なドットではなくコンマが区切り文字として使用されています。
さまざまな LDAP エントリ タイプを使用することで、階層ディレクトリ構造をセットアップできます。これが、openLDAP が非常に広く使用されている理由です。ローカル サーバーにオブジェクトを格納しなくても、他の場所にあるオブジェクトを簡単に参照できる openLDAP 階層を簡単に構築できます。これにより、特に Microsoft の Active Directory などの他のディレクトリ サーバーと比較した場合、OpenLDAP は軽量なディレクトリになります。
次に、ネットワーク内の複数のクライアントが認証のために使用できる LDAP サーバーの単一インスタンスをセットアップする方法を見てみましょう。
OpenLDAP パッケージをインストールする
CentOS および RedHat では、以下に示すように yum install を使用して、openldap 関連パッケージをインストールします。
yum install -y openldap openldap-clients openldap-servers
次の 3 つのパッケージをインストールする必要があります:
<オール>LDAP 構成ファイル
- config.ldif – LDAP のデフォルト設定は、LDIF 形式で作成された /etc/openldap/slapd.d/cn=config.ldif のファイルに保存されます。これは、LDAP ディレクトリに情報を入力できる特定の形式である LDAP 入力形式 (LDIF) です。
- olcDatabase{2}bdb.ldif – ファイル /etc/openldap/slapd.d/cn=config/olcDatabase{2 の下で、サーバーがサポートできる接続数、タイムアウト、その他のデータベース設定などの設定を変更することもできます}bdb.ldif.これは、LDAP ルート ユーザーやベース DN などのパラメーターも含むファイルです。
olcRootDN アカウントを管理者として作成
最初に、LDAP データベースの情報を変更するための完全な権限を持つ専用のユーザー アカウントを作成することを常にお勧めします。
olcDatabase={2}bdb.ldif ファイルを変更し、olcRootDN エントリを変更します。以下はデフォルトのエントリです。
# grep olcRootDN /etc/openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif olcRootDN: cn=Manager,dc=my-domain,dc=com
上記の行を管理者ユーザーに変更します。この例では、ユーザー「ramesh」が olcRootDN になります。
olcRootDN: cn=ramesh,dc=thegeekstuff,dc=com
olcRootPW ルート パスワードの作成
slappasswd コマンドを使用して、使用する root パスワードのハッシュを作成します。パスワードが生成されたら、cn=config.ldif ファイルを開き、olcRootPW パラメーターを含め、以下に示すようにハッシュ化されたパスワードをコピーします。
次のコマンドを実行し、パスワードを指定します。これにより、指定されたパスワードのハッシュが生成されます。
# slappasswd New password: SecretLDAPRootPass2015 Re-enter new password: SecretLDAPRootPass2015 {SSHA}1pgok6qWn24lpBkVreTDboTr81rg4QC6
上記のコマンドのハッシュ出力を取得し、次に示すように config.ldif ファイルの oclRootPW パラメータに追加します。
# vi /etc/openldap/slapd.d/cn=config.ldif olcRootPW: {SSHA}1pgok6qWn24lpBkVreTDboTr81rg4QC6
olcSuffix ドメイン名の作成
次に、olcSuffix をセットアップし、必要なドメインを設定します。以下に示すように、ファイル olcDatabase={2}bdb.ldif の olcSuffix で始まる行を変更するだけです。
# vi /etc/openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif olcSuffix: dc=thegeekstuff,dc=com
構成ファイルを確認する
以下に示すように、slaptest コマンドを使用して構成ファイルを確認します。これにより、以下に示すように「テストが成功しました」というメッセージが表示されます。
# slaptest -u config file testing succeeded
上記のコマンドの実行中に次のメッセージが表示される場合がありますが、現時点では無視してかまいません。
54a39508 ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif" 54a39508 ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif"
LDAP サーバーを開始
以下に示すように LDAP サーバーを起動します。
# service slapd start Checking configuration files for slapd: [WARNING] config file testing succeeded Starting slapd: [ OK ]
LDAP 検索を確認する
LDAP サーバーが正常に構成されていることを確認するには、以下のコマンドを使用して、ドメイン エントリが存在することを確認します。
# ldapsearch -x -b "dc=thegeekstuff,dc=com" # extended LDIF # # LDAPv3 # base <dc=thegeekstuff,dc=com> with scope subtree # filter: (objectclass=*) # requesting: ALL # # search result search: 2 result: 32 No such object # numResponses: 1
base.ldif のベース LDAP 構造
OU (組織単位) オブジェクトを使用すると、LDAP データベースに追加の構造を提供するのに役立ちます。ユーザー、グループ、コンピューター、プリンターなど、さまざまな種類のエントリを LDAP ディレクトリに追加する予定がある場合は、すべての種類のエントリを独自のコンテナーに簡単に配置できます。
これらの OU を作成するには、次の例に示すように初期 LDIF ファイルを作成します。この例では、このファイルを使用して dc=thegeekstuff,dc=com というベース コンテナーを作成し、そのコンテナー内に users と groups という名前の 2 つの組織単位を作成できます。
# cat base.ldif dn: dc=thegeekstuff,dc=com objectClass: dcObject objectClass: organization o: thegeekstuff.com dc: thegeekstuff dn: ou=users,dc=thegeekstuff,dc=com objectClass: organizationalUnit objectClass: top ou: users dn: ou=groups,dc=thegeekstuff,dc=com objectClass: organizationalUnit objectClass: top ou: groups
ldapadd を使用して基本構造をインポート
以下に示すように、ldapadd コマンドを使用して、基本構造を LDAP ディレクトリにインポートできます。
# ldapadd -x -W -D "cn=ramesh,dc=thegeekstuff,dc=com" -f base.ldif Enter LDAP Password: adding new entry "dc=thegeekstuff,dc=com" adding new entry "ou=users,dc=thegeekstuff,dc=com" adding new entry "ou=groups,dc=thegeekstuff,dc=com"
ldapsearch を使用して基本構造を確認する
OU が正常に作成されたことを確認するには、次の ldapsearch コマンドを使用します。
# ldapsearch -x -W -D "cn=ramesh,dc=thegeekstuff,dc=com" -b "dc=thegeekstuff,dc=com" "(objectclass=*)" Enter LDAP Password:
上記のコマンドの出力には、LDAP ディレクトリ構造内のすべてのオブジェクトが表示されます。
# extended LDIF # # LDAPv3 # base <dc=thegeekstuff,dc=com> with scope subtree # filter: (objectclass=*) # requesting: ALL # # thegeekstuff.com dn: dc=thegeekstuff,dc=com objectClass: dcObject objectClass: organization o: thegeekstuff.com dc: thegeekstuff # users, thegeekstuff.com dn: ou=users,dc=thegeekstuff,dc=com objectClass: organizationalUnit objectClass: top ou: users # groups, thegeekstuff.com dn: ou=groups,dc=thegeekstuff,dc=com objectClass: organizationalUnit objectClass: top ou: groups # search result search: 2 result: 0 Success # numResponses: 4 # numEntries: 3
次の OpenLDAP 記事では、新しいユーザーとグループを LDAP ディレクトリに追加する方法について説明します。