web-dev-qa-db-ja.com

FreeBSD:OpenLDAP、SASL、およびGSSAPI

FreeBSD(8.2-STABLE)でOpenLDAPを取得してKerberosチケットを使用して認証する際にいくつかの問題が発生しました。脳の不具合が発生したことを願っていますので、明らかなことを見逃したことをお気軽にお知らせください。

ここに物事があります:

  • Kerberosは問題なく機能します。

    kinitを使用して資格情報を取得でき、これらの資格情報を認証に使用できます(たとえば、sshまたはtelnetログイン用)。

  • OpenLDAPがインストールされ、基本認証で動作します。

  • slapdはSASLライブラリに対して明確にリンクされています。 _ldd .../slapd_レポート:

    _libsasl2.so.2 => /usr/local/lib/libsasl2.so.2 (0x800d07000)
    _
  • 次の内容の/usr/local/lib/sasl2/slapd.confが存在します。

    _mech_list: GSSAPI
    _
  • gSSAPI認証をサポートするslapdレポート:

    _$ ldapsearch -x -b '' -s base supportedSASLMechanisms
    dn:
    supportedSASLMechanisms: GSSAPI
    _
  • _/etc/krb5.keytab_および_Host/<myhostname>_のキーを持つ_ldap/<myhostname>_が存在します。

  • サンプルのSASLサーバー/クライアントはgssapi認証で正常に動作しているようです。

    _# server -p 2222 -s ldap -m gssapi
    _

    に続く:

    _# client -p 2222 -s ldap -m gssapi
    _

    最終的には次のようになります。

    _successful authentication
    _

それでも...

GSSAPI認証を受け入れるためにslapdを取得できませんでした。有効なKerberosチケットを使用してldapwhoamiを実行しようとすると、次のエラーが発生します。

_SASL/GSSAPI authentication started
ldap_sasl_interactive_bind_s: Other (e.g., implementation specific) error (80)
    additional info: SASL(-1): generic failure: GSSAPI Error:  No credentials were supplied, or the credentials were unavailable or inaccessible. (unknown mech-code 0 for mech unknown)
_

同じエラーがslapdによってログに記録されます。私はここで壁にぶつかった。さまざまなデバッグをオンにしてもslapdは、何も役に立ちません。助けて?

更新:キックのためだけに、Linux(CentOS 5)刑務所内にOpenLDAPをセットアップして、動作が異なるかどうかを確認することにしました。 OpenLDAPパッケージを再構築した後(FreeBSDのLinuxサポートにはepoll()システムコールが含まれていません)、もう少し便利に思えるエラーメッセージが表示されていました(Kerberosプリンシパルの欠落に関して)。少なくともGSSAPIネゴシエーションを正しく実行しているように見えました。つまり、これはFreeBSDの問題のようです...多分?そこに誰かからの入力を期待しています。

2
larsks

そして...不思議なことにそれは働き始めました。記録のために、これが繰り返し可能なプロセスのように見えるものです:

  • Security/cyrus-sasl2をインストールします。
  • Net/openldap24-serverをインストールします。 SASLサポートを必ず有効にしてください。
  • Net/openlda24-clientをインストールし、SASLもサポートします。
  • ハンドブック に従ってKerberosを初期化します。適切なldap/...プリンシパルを必ず追加してください。
  • Slapdがkeytabファイルを読み取れることを確認してください。最も単純なメカニズムは次のとおりです。

    chgrp ldap /etc/krb5.keytab
    chmod g+r /etc/krb5.keytab
    
  • SASLのslapdを構成します。 sasl-Hostsasl-realm、およびsasl-regexpを設定することをお勧めします。
  • /usr/local/etc/openldap/ldap.confBASEURIに適切な値を設定します。

Kerberosチケットを取得し、ldapwhoami -Y GSSAPIを実行してテストします。

1
larsks

私はまったく同じ問題を抱えていましたが、最終的には、slapd.confのsasl-Hostをkerberosサーバーのホスト名に設定したことが原因であることがわかりました。

Sasl-Hostをldapホスト名(例:sasl-Host ldap.example.com)に変更すると、正しく機能しました。

0
Sina S