Active Directory(AD)とOpenLDAPは、どちらも企業で重要な役割を果たします。 実際、同じ会社内で、OpenLDAPを使用しているUNIXグループと、ADを使用しているLANおよびWindows管理者を見つけることができます。 ただし、ほとんどの人はOpenLDAPを介してADスキーマに完全にアクセスすることはできません。 この記事では、トランスポート層セキュリティ/ SSLを使用したLDAPoverProxyを使用してActiveDirectory認証を構成する方法について検討します。
OpenLDAPとADは平和的に共存できます。重要なのは、LDAP操作がADとOpenLDAPの展開の境界を越えることができるようにするための最良の方法を見つけることです。 これを実現する1つの方法は、LDAP over TLS / SSLを使用してActiveDirectory認証を構成することです。 私たちの主な目標は、LDAPをActiveDirectoryと統合することです。 いくつかのスキーマをメイン構成ファイルに含め、必要なパラメーターを追加します。
始める前に
先に進む前に、用語を定義しましょう。 まず、LDAPサーバーは、実際にはDirectory Service Agent(DSA)と呼ばれるものです。 次に、DSAはディレクトリ情報ツリー(DIT)の一部またはすべてを管理します。 DIT全体を管理し、レプリケーションと高可用性を実現するために、複数のDSAを展開できます。 DSAが管理するDITの部分は、パーティションまたはデータベースと呼ばれます。 データベースという用語を使用します。
OpenLDAPが稼働していることを確認してください
OpenLDAPサーバープロセスの名前はslapdで、これは「スタンドアロンLDAPデーモン」の略です。 LDAPクライアントからの接続を受け入れ、クエリと更新を処理し、ディレクトリ内の機密情報へのアクセスを制限するACLを実装する機能を含む、ほぼすべてのOpenLDAPサーバー機能を提供します。
OpenLDAPをすでにインストールして設定しているとしましょう。
上記の構成によると、slapdはディレクトリツリーdc =のデータベースを管理します。example、dc = com。
slapdサービスが実行されていることを確認してください。
service slapd status
次に、ldapsearchコマンドを使用して、(この記事で提供されているのと同じサンプル構成からの)エントリが正しくロードされたことをテストします。
ldapsearch -LLL -x -h localhost -b 'dc=example,dc=com'
-xオプションは、ldapsearchがSimple Authentication and Security Layer(SASL)ではなくSimple認証を使用する必要があることを指定します。 単純な認証では、LDAPクライアントはクレデンシャルをプレーンテキストで送信します。 LDAP over SSL(LDAPS)またはLDAP StartTLSを使用している場合でも、単純な認証を使用していますが、通信に使用されているトンネルは暗号化されています(さらに安全です)。
ldapsearchコマンドに戻ります。 ツリーのルートの下にあるすべてのエントリを見つけるためにクエリを実行します。 予想どおり、ldapsearchは、提供されているようにldapaddを介して最初にインポートしたすべてのエントリを返します。 example。
ActiveDirectoryとの統合
ローカルクライアントで単純なldapsearchコマンドを使用して、OpenLDAPからのエントリを簡単に表示できましたが、ActiveDirectoryで管理されているエントリを表示するのはどうでしょうか。 そのためには、OpenLDAPをActiveDirectoryに転送する必要があります。
必要なすべてのモジュールが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
次のステップは、OpenLDAPプロキシをActive Directoryとして有効にすることです。slapd.confの最後に移動して、次の行を追加してください。
database ldap
subordinate
rebind-as-user yes
uri "ldaps://ad-dc.example.com"
suffix "DC=corp,DC=ad,DC=com"
chase-referrals yes
idassert-bind bindmethod=simple
binddn="CN=ad-username,DC=corp,DC=ad,DC=com"
credentials="password"
tls_cacert=/etc/openldap/certs/certificate_file
データベースLDAP -プロキシサービスとなるslapd-ldapを使用して、新しいバックエンドを定義しました。
下位 -このキーワードがない場合、slapdは検索ベースで指定されたデータベースのみを検索します(たとえば、dc =の場合)example、dc = comが指定された検索ベースであり、次にcn = users、dc =example、dc = comは、別のslapdデータベースであるため、検査されることはありません)。
ユーザーとして再バインド -このオプションは、クライアントから提供された資格情報を使用してリモートディレクトリサービスエージェントにバインドするようにslapdに指示します。 クレデンシャルはADで有効である必要があることに注意してください。
嫌い -これは、リモートLDAPサーバー(この場合はADドメインコントローラー)を指定します。
追跡紹介 -このオプションは、slapdがすべての紹介を自動的に追跡することを指定します。
idassert-バインド -このパラメーターは、リモートサーバーにバインドし、オプションで別のIDを承認するために使用されます。
bindmethod -このステートメントは、指定された管理IDでリモートサーバーにバインドするためにプロキシが使用するメソッドを定義するために使用されます。
この場合、 単純 TLSを単純なバインドと一緒に使用することを強くお勧めします。 単純なバインドには、追加のパラメーターが必要です。
binddn = “CN = ad-username、DC = corp、DC = ad、DC = com”は、バインドDNを指定するために使用されます。
バインド資格情報を指定するには、credentials = “password”を使用します。
tls_cacert -トランスポート層セキュリティ認証局の証明書は、クライアントがLDAPサーバー証明書を検証できるようにする証明書のパスとファイル名を定義します。 このファイルは、X.509証明書のサプライヤから入手するか、自己署名の場合はLDAPサーバーからコピーして入手できます。
これで、実際にプロキシに匿名で接続している場合でも、クライアントは「CN = ad-username、DC = corp、DC = ad、DC = com」として承認されます。
ここで、slapdサービスを再起動し、ldapsearchを再度実行します。
ldapsearch -v -H "ldaps://ad-dc.example.com:636/" -b "DC=corp,DC=ad,DC=com" -s sub -D "CN=ad-username,DC=corp,DC=ad,DC=com" -w "password"
コマンドが失敗した場合は、次のことを確認してください。
1. ldaps:// ad-dcにアクセスできます。example.com:636
2.クライアントから提供された資格情報を使用してバインドします(Active Directory側)
結論
これで、ActiveDirectoryをOpenLDAPディレクトリの任意の部分に接続できるようになります。 OpenLDAPを使用するLDAPアプリケーションでADユーザーを認証できます。また、ADユーザーがまだ大きなフォレストの一部ではない場合は、ネットワーク内の複数のADへのアクセスを提供することもできます。