Kerberos+LDAP+NFSv4 实现单点登录(续4)--SASL/GSSAPI

前篇<Kerberos+LDAP+NFSv4 实现单点登录(续1)--dns+dhcp>的krb5 + ldap + bind9 + bind9-dyndb-ldap 全面升级到debian 10,出现bind9-dyndb-ldap的GSSAPI+krb5_keytab认证机制无法连接ldap数据库.
查看日志:
SASL/GSSAPI authentication started
Error: Local error
Additional info: SASL(-1): generic failure: GSSAPI Error: Miscellaneous failure (see text) (Did not find a plugin for ccache_ops)

网上搜索有关GSSAPI+ccache_ops未果,不得不自己动手调试.
思路:从bind9-dyndb-ldap软件包开始及其各依赖包逐个手动降级;或者从正常debian 9开始,修改软件源为debian 10,逐个升级.即降级/升级一个,测试一次.
说明:debian系统是无法自动降级的,可修改软件源为低版或手动下载低版deb包重装软件包

实际整个调试过程还是盲人摸象.krb5、ldap、sasl都是复杂的东西,问题有可能在服务端,也有可能在客户端,也有可能配置上漏缺.
本人能力有限,也希望从源码定位到问题位置,按日志出现的关键词‘plugin for ccache_ops‘搜索上面三者源代码,也仅仅搜到片言只语,不知所然.

功夫不负有心人,从各个依赖包逐个降级,很幸运定为到libsasl2-modules-gssapi-heimdal软件包,也就是说,其它相关的软件包都用debian 10最新版,配置文件不需更改,
只要将libsasl2-modules-gssapi-heimdal软件包降级,bind9-dyndb-ldap就正常连接到ldap数据库.
debian 10 版本是2.1.27+dfsg-1
debian 9 版本是2.1.27~101-g0780600+dfsg-3
实际就一个文件/usr/lib/x86_64-linux-gnu/sasl2/libgssapiv2.so.2.0.25,用debian 9 版本解包直接替换掉就可.

sasl/gssapi也算比较常用的应用,但问题是libsasl2-modules-gssapi-heimdal的2.1.27+dfsg-1版至今到debian 11还一直未更新,采用2.1.27+dfsg-1版的其它sasl/gssapi应用都正常.
如openldap客户端工具在2.1.27+dfsg-1版下正常,如下命令
ldapwhoami -Y GSSAPI -h 192.168.1.11
因此也确定不了2.1.27+dfsg-1版这个出错究竟是BUG还是这个升级版需sasl/gssapi客/服进一步配置?
或者如我的需求bind9-dyndb-ldap+SASL/GSSAPI就比较少见了,所以网上几乎搜不到相关问题,也确定不了是不是bind9-dyndb-ldap问题.
该问题很平静,所以可能深藏着.要调试bind9-dyndb-ldap很麻烦,转个思路,自己编写最简单的ldap/sasl/gssapi/krb5客户端程序测试,果不其然,发现是使用内存票据会出现该问题.
krb5客户端可以指定票据的位置,如下
"MEMORY:krb5cc_1000" 存放在进程内存里
"FILE:/tmp/krb5cc_1000" 存放在临时目录下

krb5的票据通常是放在临时目录下,即如/tmp/krb5cc_1000的票据文件,openldap客户端工具就是读取临时目录下的票据.
经测试,libsasl2-modules-gssapi-heimdal 2.1.27+dfsg-1版对内存票据有BUG,对文件票据正常.
在前篇 <Kerberos+LDAP+NFSv4 实现单点登录> SSSD客户机安装提到libsasl2-modules-gssapi-mit和libsasl2-modules-gssapi-heimdal两者可互相替换.
因此安装debian 10的libsasl2-modules-gssapi-mit,对内存票据已完全正常.mit版更主流,或许正因为有mit版可代替heimdal版,所以heimdal版问题很平静.

小结:
对于sasl/gssapi应用,请安装libsasl2-modules-gssapi-mit

后记:
1.对于krb5客户端,尽量使用mit版,Kerberos本就是mit发明,更活跃.
2.我的Kerberos服务器为什么要采用heimdal版?
因为我的目标Kerberos+LDAP一体,两套密码同步.

                                        mit                              heimdal
-----------------------------------------------------------------------------------------------------
krb5服务器通过EXTERNAL连接ldap       不支持                                  支持
通过slapd-smbk5pwd同步密码            不支持                                   支持

3.debian 10的bind9-dyndb-ldap配置格式有新的变化
客/服配置请先参考前篇<Kerberos+LDAP+NFSv4 实现单点登录(续1)--dns+dhcp>,然后按下面:

但请按Kerberos使用自己本地数据库来理解下面的配置,因为使用ldap作为Kerberos后端数据库后来理解krb5主体和ldap条目很混淆

1)bind9-dyndb-ldap配置
/etc/bind/named.conf.ldap
//其它略
...
//不同体系路径如/usr/lib/i386-linux-gnu/bind/ldap.so
dyndb "my_db_name" "/usr/lib/bind/ldap.so" {
server_id "";
directory "/var/cache/bind";
uri "ldap://127.0.0.1";
base "ou=dns,dc=ctp,dc=net";

//认证机制
auth_method "sasl";
sasl_mech "GSSAPI";
//--v-- 添加krb5主体
krb5_principal "[email protected]";
krb5_keytab "FILE:/etc/bind/krb5.keytab";
//--^--
timeout 50;
reconnect_interval 100;
};

2)ldap配置
/etc/ldap/slapd.d/cn=config/olcDatabase={1}mdb.ldif
#其它略
...
olcAccess: {3}to dn.subtree="ou=dns,dc=ctp,dc=net" by dn="uid=dnsadmin,cn=gssapi,cn=auth" write by * read
...

说明:
配置krb5主体dnsadmin写ldap数据库权限,如果只需读权限,应该不需配置;
"cn=gssapi,cn=auth"是固定格式的,用来表示是krb5条目(此处krb5条目不是指使用ldap作为Kerberos后端存放在ldap数据库里所体现的条目,你可按Kerberos使用自己数据库来理解),ldap数据库不需创建存储"uid=dnsadmin,cn=gssapi,cn=auth" krb5条目;
其它的名字"dnsadmin"、"dns"、"ctp"、"net"按你实际名称填写.

3)运行以下命令
kadmin -l add -r --use-defaults dnsadmin
kadmin -l ext -k /etc/bind/krb5.keytab dnsadmin

使用ldap作为Kerberos后端,add命令自动在ldap数据库里添加krb5主体dnsadmin的条目"[email protected],ou=hdkrb5,dc=ctp,dc=net"

chown bind:bind /etc/bind/krb5.keytab
chmod o-r /etc/bind/krb5.keytab
chmod g-r /etc/bind/krb5.keytab

4.其它注意事项
我的 krb5 + ldap + bind9 + bind9-dyndb-ldap 一体机kdc服务器(192.168.1.11)
1)
当/etc/resolv.conf为空
或设nameserver 127.0.0.1
或设nameserver 192.168.1.11
或设nameserver 192.168.1.xx 同kdc服务器网段随便不存在的地址
bind9启动失败,提示超时

假如以上述resolv.conf配置,将/etc/bind/named.conf.ldap的sasl/gssapi认证机制改为匿名
auth_method "none";
bind9启动能成功,虽然匿名无法写入ldap,但dig读取成功;说明可能是sasl/gssapi机制的缘故.

2)
必须往/etc/resolv.conf添加和kdc服务器不同网段不存在的地址
如nameserver 127.0.0.2
或nameserver 192.168.2.22

sasl/gssapi认证机制,bind9启动才成功,缘由不明.

原文地址:https://blog.51cto.com/13752418/2461911

时间: 2024-08-30 10:55:33

Kerberos+LDAP+NFSv4 实现单点登录(续4)--SASL/GSSAPI的相关文章

Kerberos+LDAP+NFSv4 实现单点登录(续2)--一键安装

( 附:LDAP简单认证登录 login4ldap-ver0.0.6.zip 源代码 下载地址 http://u.163.com/NeMVmlIT 提取码: ObEubL7Y ) 上篇Kerberos+LDAP+NFSv4 实现单点登录(续1)链接地址http://lulinlin1.lofter.com/post/1cf3848f_11f58066?act=qbbloglofter_20150506_01 本篇是前两篇的总结,编写成一键安装脚本onekeysso.sh,并需名为dns.ldif

Kerberos+LDAP+NFSv4 实现单点登录

Kerberos : 身份认证LDAP : 目录信息服务NFSv4 : 网络共享 实验环境 : debian 9 三台主机:nfs服务器 : 192.168.1.103nfs客户机 : 192.168.1.102 即SSSD客户端+NFS客户端kdc服务器 : 192.168.1.101 即Kerberos+LDAP 以下 [email protected]:~# 表示以root根用户运行命令 一.安装NTP时间同步要使用Kerberos提供身份认证,各主机需时间同步 在一台主机上安装时间同步服

Kerberos+LDAP+NFSv4 实现单点登录(下)

六.nfs客户机的安装nfs客户机也即SSSD客户机,需安装sssd和nfs-common 1.安装sssd会自动安装libsasl2-modules-gssapi-mit(非依赖)libsasl2-modules-gssapi-mit和libsasl2-modules-gssapi-heimdal两者冲突,安装libsasl2-modules-gssapi-heimdal也可以 [email protected]:~# apt-get install sssd sssd-krb5 sssd-l

Kerberos+LDAP+NFSv4 实现单点登录(上)

Kerberos : 身份认证LDAP : 目录信息服务NFSv4 : 网络共享 实验环境 : debian 9 三台主机:nfs服务器 : 192.168.1.103nfs客户机 : 192.168.1.102 即SSSD客户端+NFS客户端kdc服务器 : 192.168.1.101 即Kerberos+LDAP 以下 [email protected]:~# 表示以root根用户运行命令 一.安装NTP时间同步要使用Kerberos提供身份认证,各主机需时间同步 在一台主机上安装时间同步服

Kerberos+LDAP+NFSv4 实现单点登录(中)

五.nfs服务器的安装1.安装nfs-kernel-server[email protected]:~# apt-get install nfs-kernel-server nfs-common 修改/etc/default/nfs-kernel-server文件将NEED_SVCGSSD=""改为NEED_SVCGSSD="yes" 重启nfs-kernel-server [email protected]:~# /etc/init.d/nfs-kernel-se

LDAP/SASL/GSSAPI/Kerberos编程API(2)--krb5客户端

krb5 API有两个可用的库:MIT和Heimdal,两个库的API不一样,一方客户端的API连接上另一方服务端基本上是没问题的.API中的kadmin两个库则是完全不兼容,可从MIT和Heimdal两个的kadmin应用工具看出,连接对方的kadmin服务端是不成功的.kadmin目的是为远程操控Kerberos服务器,一般我们开发Kerberos应用很少以此为目标,都是直接使用它们各自的kadmin应用工具,所以kadmin不兼容也没多大问题.我们的目标是Kerberos认证功能,所以使用

基于CAS实现单点登录(SSO):CAS+LDAP实现单点登录认证

[一].概述 CAS是N个系统的中心认证入口,而贯穿多个系统的用户信息是共用的,应该被单独维护,而这些信息可能属于不用的系统,不用的组织,不用的国家,从而形成了树形结构,而使用关系型数据库维护树形结构信息是它的弱点,这就是本文CAS和LDAP整合的初衷. 本来主要详细是介绍CAS和LDAP整合实现单点登录的步骤. [二].详细步骤 1.LDAP安装配置 详见: 介绍openLDAP在windows上的安装配置 安装配置,添加部分测试数据如下: 2.CAS的基础安装配置: 见SSO之CAS单点登录

ofbiz SSO 单点登录

 1.ofbiz单点登录介绍 ofbiz点单登录是集成了CAS SSO,LDAP使用的,具体的CAS与LDAP怎么应用,在这里不做介绍. 2.ofbiz点单登录文档 ofbiz 12版本中,有英文的简单的ofbiz单点登录的问题. 路径在:apache-ofbiz-12.04.01\framework\documents\SingleSignOn.xml 3.ofbiz单点登录目录 ofbiz  单点登录集成的目录在:apache-ofbiz-12.04.01\specialpurpose\

[转]使用 LDAP 组或角色限制访问,包含部分单点登录SSO说明

参考:http://www-01.ibm.com/support/knowledgecenter/api/content/SSEP7J_10.2.2/com.ibm.swg.ba.cognos.crn_arch.10.2.2.doc/c_restrict_access_using_ldap_groups_or_roles.html#Restrict_Access_Using_LDAP_Groups_or_Roles?locale=zh 使用 LDAP 组或角色限制访问 LDAP 目录中并非所有用