私は大企業で働いており、中央の読み取り専用LDAPサーバーをリモートで使用できます。 LDAPサーバーはnot匿名バインディングを許可します。このサーバーを使用して、pamモジュールを使用して小さなサーバー上のユーザーを認証するには、LDAP上のデータを公開するアカウントが必要です。アカウントデータは通常、構成のbinddn
フィールドとbindpw
フィールドに入力されます。私が理解したように、pamモジュールは通常binddn
とbindpw
でログインし、検索を実行してから、ログインする意思のある各ユーザーをバインドします。
ただし、サーバーの管理者は、すべてのデータを私に公開することを好みません。そして私の質問は:
Binddnアカウントなしでpamを構成するにはどうすればよいですか?理想的には、各ユーザーの直接バインドは、binddnアカウントで事前にログインせずに実行する必要があります。
既存のPAMモジュールでこれを行う方法がわからなかったので、1つ作成しました。現時点では、単純な認証のみをサポートしています。次のように、必ずuriおよびbinddnテンプレートパラメータを含めてください。
auth sufficient pam_ldapdb.so uri=ldap://example.com binddn=uid=%s,dc=example,dc=com
%sは、接続しているユーザーに置き換えられます。
これには、g ++、pam devel、およびldapdevelが必要です。 CentOS 6および7、64ビットでテストされています。
問題は、UNIXでのユーザー認証が、「usera」などの単純なユーザー名文字列を使用して機能することです。
LDAPはこのようには機能しませんが、代わりにuid=mruser,cn=users,dc=ibm,dc=com
などの完全なユーザー名DNが必要です。
したがって、匿名バインディングを許可するか、有効なbinddnを用意する必要があるのは、認証システムがLDAPサーバーにバインドし、検索を実行してusera
-> uid=mruser,cn=users,dc=ibm,dc=com
を変換できるようにするためです。この機能がないと、ディレクトリでパスワードを何に対してテストするかがわかりません。
LDAP管理者は通常、匿名バインディングを許可したくないのですが、UNIXでLDAP認証を機能させるために必要な特定の詳細へのアクセスのみを許可する特定のユーザーを作成できる必要があります。すなわち。 LDAP階層のユーザーおよびグループ領域への読み取り専用アクセス。
実際に話しているOSについては言及していませんが、PAMは認証用であることを忘れないでください。また、NSSサービスでユーザー名とユーザーIDを解決できるようにする必要もあります。実装によっては、これは必要な構成作業の異なる部分になる場合があります。
私はあなたが何をしたいのか理解していると思います。
ユーザーが検証のために資格情報を提示します。
匿名アクセスを介して、またはバインディング資格情報の標準セットを使用してLDAPサーバーにバインドする代わりに、ユーザーから提示された資格情報を毎回使用して、LDAPサーバーへの認証を行い、検証を依頼します。それらの資格情報。
それですか?
その場合、それが意味をなすためには、各ユーザーの資格情報がLDAPである必要があります-自分の資格情報を認証するためにのみ有効です。それ以外の場合は、そのように提示された最初の資格情報のセットを使用して、明らかに恐れられている幅広い検索を実行できます。また、LDAPサーバーの管理者が一連の資格情報の範囲を厳密に制限できる場合は、許可されているユーザーに対して検索を実行する場合にのみ有効な標準の一連の資格情報を提供できるはずです。見る。
私の主張がわかりますか? LDAPサーバー管理者は、資格情報で実行できる検索のスコープを設定するのが得意な場合、適切なバインド資格情報のセットを提供するために必要なスキルを備えています。そして、彼らがそれほど良くない場合、あなたは彼らがあなたに望まないことをするのに十分強力な資格情報をすでに持っているので、彼らが望むことをするようにあなたに頼む意味はありません。
LDAPサーバーにアクセスする2つの標準的な方法は、(1)匿名で、および(2)サーバー管理者によって発行された一連の資格情報を使用することです。これらの資格情報は必要なことを実行する場合にのみ適しています。サーバー管理者が(1)を気に入らない場合は、(2)を実行するための適切な資格情報を提供するのが彼らの仕事です。