我的 kerberos 域在 MYEXAMPLE.ORG 中,但服务器位于 dmz-int.example.org dns 区域。
LDAP 服务器是 b1.dmz-int.example.org;其 keytab 包括:
udo ktutil -k /etc/krb5.keytab 列表 /etc/krb5.keytab: Vno 类型主要别名 7 arcfour-hmac-md5 [电子邮件保护] 7 aes128-cts-hmac-sha1-96 [电子邮件保护] 7 aes256-cts-hmac-sha1-96 [电子邮件保护] 7 arcfour-hmac-md5 主机/[电子邮件保护] 7 aes128-cts-hmac-sha1-96 主机/[电子邮件保护] 7 aes256-cts-hmac-sha1-96 主机/[电子邮件保护] 7 arcfour-hmac-md5 ldap/[电子邮件保护] 7 aes128-cts-hmac-sha1-96 ldap/[电子邮件保护] 7 aes256-cts-hmac-sha1-96 ldap/[电子邮件保护] 7 arcfour-hmac-md5 ldap/[电子邮件保护] 7 aes128-cts-hmac-sha1-96 ldap/[电子邮件保护] 7 aes256-cts-hmac-sha1-96 ldap/[电子邮件保护] 7 arcfour-hmac-md5 ldap/[电子邮件保护] 7 aes128-cts-hmac-sha1-96 ldap/[电子邮件保护] 7 aes256-cts-hmac-sha1-96 ldap/[电子邮件保护]
ldap2.myexample.org
是CNAME
b1.dmz-int.example.org
现在我可以连接到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/[电子邮件保护]) 未找到) $ ldapsearch -h ldap.dmz-int.example.org'uid=test' SASL/GSSAPI 身份验证已开始 ldap_sasl_interactive_bind_s:本地错误(-2) 附加信息:SASL(-1):通用故障:GSSAPI 错误:其他故障(参见文本)(匹配凭据(ldap/[电子邮件保护]) 未找到)
现在SASL
不起作用。我需要SPN
在服务器密钥表中添加一个额外内容吗?我需要一些 DNS 修复吗?为什么代理查询查找:主体而不是?ldap/[email protected]
ldap/[email protected]
作为参考,以下是 haproxy conf 文件:
$ cat /etc/haproxy/haproxy.cfg 全球的 日志/dev/log local0 # 记录 /dev/log local1 通知 chroot /var/lib/haproxy 统计套接字 /run/haproxy/admin.sock 模式 660 级别管理员 统计超时 30 秒 用户 haproxy 组 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 默认绑定密码 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-默认绑定选项 no-sslv3 LDAP 和 LDAP/STARTTLS 前端 ldap_service_front 记录全局 模式 tcp 绑定 *:389 描述 LDAP 服务 选项套接字统计 选项 tcpka 选项 tcplog 客户端超时10秒 默认后端 ldap_service_back 后端 ldap_service_back 记录全局 服务器 ldap-1 b1.myexample.org:389 检查下降 1 上升 1 间隔 2s 服务器 ldap-2 b2.myexample.org:389 检查下降 1 上升 1 间 2s 模式 tcp 平衡最小连接数 选项 tcpka 选项 ldap-check 服务器超时10秒 超时连接1s
答案1
你会想要ignore_acceptor_hostname = true
在 或[libdefaults]
的相应小节中[appdefaults]
。
ignore_acceptor_hostname
当接受基于主机的服务主体的 GSSAPI 或 krb5 安全上下文时,忽略调用应用程序传递的任何主机名,并允许客户端向密钥表中与服务名称和领域名称(如果给定)匹配的任何服务主体进行身份验证。此选项可以提高多宿主主机上服务器应用程序的管理灵活性,但可能会损害虚拟托管环境的安全性。
默认值为 false。版本 1.10 中的新增功能。