MYEXAMPLE.ORGの私のKerberosドメインですが、サーバーはdmz-int.example.orgdnsゾーンにあります。
LDAPサーバーはb1.dmz-int.example.orgです。そのキータブは次のとおりです。
udo ktutil -k /etc/krb5.keytab list /etc/krb5.keytab: Vno Type Principal Aliases 7 arcfour- hmac-md5 b1 $ @ MYEXAMPLE.ORG 7 aes128-cts-hmac-sha1-96 b1 $ @ MYEXAMPLE.ORG 7 aes256-cts-hmac-sha1-96 b1 $ @MYEXAMPLE。 ORG 7 arcfour-hmac-md5 Host/b1.dmz-int.example.org @ MYEXAMPLE.ORG 7 aes128-cts-hmac-sha1-96 Host /b1.dmz-int。 [email protected] 7 aes256-cts-hmac-sha1-96 Host/b1.dmz-int.example.org @ MYEXAMPLE.ORG 7 arcfour-hmac-md5 ldap/[email protected] 7 aes128-cts-hmac-sha1-96 ldap/[email protected] 7 aes256 -cts-hmac-sha1-96 ldap/[email protected] 7 arcfour-hmac-md5 ldap/[email protected] 7 aes128-cts-hmac-sha1-96 ldap/[email protected] 7 aes256-cts-hmac-sha1-96 l dap/ldap.dmz-int.example.org @ MYEXAMPLE.ORG 7 arcfour-hmac-md5 ldap/ldap.unimore.it @ MYEXAMPLE.ORG 7 aes128-cts-hmac-sha1 -96 ldap/[email protected] 7 aes256-cts-hmac-sha1-96 ldap/[email protected]
ldap2.myexample.org
はb1.dmz-int.example.org
のCNAME
です
これで、GSSAPI
を使用してLDAPサーバーに接続できます。
$ kinit
$ ldapsearch -ZZ -h b1.dmz-int.example.org 'uid=test'
SASL/GSSAPI authentication started
SASL username: [email protected]
SASL SSF: 56
SASL data security layer installed.
[...]
$ ldapsearch -ZZ -h ldap2.myexample.org 'uid=test'
SASL/GSSAPI authentication started
SASL username: [email protected]
SASL SSF: 56
SASL data security layer installed.
[...]
$ klist
Credentials cache: FILE:/tmp/krb5cc_1000
Principal: [email protected]
Issued Expires Principal
Sep 6 09:03:35 2016 Sep 6 19:03:32 2016 krbtgt/[email protected]
Sep 6 09:03:39 2016 Sep 6 19:03:32 2016 ldap/[email protected]
うまく見えます。
プロキシが登場します。
プロキシAレコードはldap.dmz-int.example.org
であり、CNAME
がldap.myexample.org
として存在します。
プロキシは、ポート389および636用のHAPROXYレイヤー4です。SASL
がないと、正常に機能します。
$ ldapsearch -ZZ -h ldap.myexample.org 'uid = test' SASL/GSSAPI認証が開始されました ldap_sasl_interactive_bind_s:ローカルエラー(-2) 追加情報:SASL(-1):一般的な障害:GSSAPIエラー:その他の障害(テキストを参照)(一致する資格情報(ldap/ldap.dmz-int.example.org @ DMZ-INT.EXAMPLE.ORG)が見つかりません) $ ldapsearch -h ldap.dmz-int.example.org'uid = test ' SASL/GSSAPI認証が開始されました ldap_sasl_interactive_bind_s:ローカルエラー(-2) 追加情報:SASL(-1):一般的な失敗:GSSAPIエラー:その他の失敗(テキストを参照)(一致する資格情報(ldap/[email protected])が見つかりません)
そして今、SASL
は機能しません。サーバーのキータブに追加のSPN
が必要ですか? DNSの修正が必要ですか?プロキシクエリがldap/[email protected]
ではなくldap/[email protected]
プリンシパルを検索するのはなぜですか?
参考として、haproxyconfファイルに従います。
$ cat/etc/haproxy/haproxy.cfg global log/ dev/log local0 #log/dev/log local1notice chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy デーモン #デフォルトのSSLマテリアルの場所 ca-base /etc/ssl/certs crt-base /etc/ssl/private #SSL対応のリスニングソケットで使用するデフォルトの暗号。 #詳細については、ciphers(1SSL)を参照してください。このリストは次のとおりです。 #https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/ ssl-default-bind-ciphers ECDH + AESGCM:DH + AESGCM:ECDH + AES256:DH + AES256:ECDH + AES128:DH + AES:ECDH + 3DES:DH + 3DES:RSA + AESGCM:RSA + AES:RSA + 3DES:!aNULL:!MD5:!DSS ssl-default-bind-options no-sslv3 #LDAPおよびLDAP/STARTTLS frontend ldap_service_front log global mode tcp バインド*:389 説明LDAPサービス オプションsocket-stats オプションtcpka オプションtcplog タイムアウトクライアント10秒 default_backend ldap_service_back backend ldap_service_back log global server ldap-1 b1.myexample.org:389 check fall 1 rise 1 inter 2s server ldap-2 b2.myexample.org:389 check fall 1 rise 1 inter 2s mo de tcp balance lessconn option tcpka option ldap-check timeout server 10s timeout connect 1s
ignore_acceptor_hostname = true
または[libdefaults]
の適切なサブセクションに [appdefaults]
が必要です。
ignore_acceptor_hostname
ホストベースのサービスプリンシパルのGSSAPIまたはkrb5セキュリティコンテキストを受け入れる場合、呼び出し元のアプリケーションから渡されたホスト名をすべて無視し、サービス名とレルム名(指定されている場合)に一致するキータブのサービスプリンシパルに対してクライアントが認証できるようにします。 )。このオプションは、マルチホームホスト上のサーバーアプリケーションの管理上の柔軟性を向上させることができますが、仮想ホスティング環境のセキュリティを損なう可能性があります。
デフォルト値はfalseです。リリース1.10の新機能。