Debian上不支持使用Kerberos的加密类型NFSv4

Debian上不支持使用Kerberos的加密类型NFSv4,debian,kerberos,nfs,Debian,Kerberos,Nfs,我正在疯狂地使用Kerberos为NFSv4设置一个测试安装 计算机从LDAP获取用户信息,从Kerberos获取凭据。我可以使用kerberized帐户登录到计算机,也就是说,包含PAM的基本Kerberos设置正在运行。我可以使用基于主机的访问设置NFSv4,而且它运行得很好 因此,作为下一步,我将我的子网掩码更改为“krb5” mount -t nfs4 -o sec=krb5 nfs4.mgr:/test mnt mount.nfs4: access denied by server w

我正在疯狂地使用Kerberos为NFSv4设置一个测试安装

计算机从LDAP获取用户信息,从Kerberos获取凭据。我可以使用kerberized帐户登录到计算机,也就是说,包含PAM的基本Kerberos设置正在运行。我可以使用基于主机的访问设置NFSv4,而且它运行得很好

因此,作为下一步,我将我的子网掩码更改为“krb5”

mount -t nfs4 -o sec=krb5 nfs4.mgr:/test mnt
mount.nfs4: access denied by server while mounting nfs4.mgr:/test
给gssd几个-v开关,我在日志中看到以下内容:

Jan 15 22:00:11 nfs4 rpc.gssd[8116]: handling gssd upcall (/var/lib/nfs/rpc_pipefs/nfs/clntc)
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: handle_gssd_upcall: 'mech=krb5 uid=0 '
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: handling krb5 upcall (/var/lib/nfs/rpc_pipefs/nfs/clntc)
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: process_krb5_upcall: service is '<null>'
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: Full hostname for 'nfs4.mgr' is 'nfs4.mgr'
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: Full hostname for 'nfs4.mgr' is 'nfs4.mgr'
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: Key table entry not found while getting keytab entry for 'root/nfs4.mgr@MGR'
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: Success getting keytab entry for 'nfs/nfs4.mgr@MGR'
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: INFO: Credentials in CC 'FILE:/tmp/krb5cc_machine_MGR' are good until 1358369976
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: INFO: Credentials in CC 'FILE:/tmp/krb5cc_machine_MGR' are good until 1358369976
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: using FILE:/tmp/krb5cc_machine_MGR as credentials cache for machine creds
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: using environment variable to select krb5 ccache FILE:/tmp/krb5cc_machine_MGR
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: creating context using fsuid 0 (save_uid 0)
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: creating tcp client for server nfs4.mgr
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: DEBUG: port already set to 2049
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: creating context with server nfs@nfs4.mgr
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: in authgss_create_default()
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: in authgss_create()
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: authgss_create: name is 0x1bbee10
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: authgss_create: gd->name is 0x1bb46e0
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: in authgss_refresh()
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: struct rpc_gss_sec:
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:      mechanism_OID: { 1 2 134 72 134 247 18 1 2 2 }
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:      qop: 0
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:      service: 1
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:      cred: 0x1bb9ae0
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:      req_flags: 00000002
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: rpcsec_gss: gss_init_sec_context: (major) Unspecified GSS failure.  Minor code may provide more information - (minor) No supported encryption types (config file error?)
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: in authgss_destroy()
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: in authgss_destroy_context()
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: authgss_destroy: freeing name 0x1bb46e0
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: authgss_create_default: freeing name 0x1bbee10
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: WARNING: Failed to create krb5 context for user with uid 0 for server nfs4.mgr
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: WARNING: Failed to create machine krb5 context with credentials cache FILE:/tmp/krb5cc_machine_MGR for server nfs4.mgr
Jan 15 22:00:11 nfs4 rpc.gssd[8116]: WARNING: Machine cache is prematurely expired or corrupted trying to recreate cache for server nfs4.mgr
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:处理gssd的upcall(/var/lib/nfs/rpc_pipefs/nfs/clntc)
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:handle_gssd_upcall:'mech=krb5 uid=0'
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:处理krb5 upcall(/var/lib/nfs/rpc_pipefs/nfs/clntc)
1月15日22:00:11 nfs4 rpc.gssd[8116]:进程\u krb5\u调用:服务为“”
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:“nfs4.mgr”的完整主机名为“nfs4.mgr”
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:“nfs4.mgr”的完整主机名为“nfs4.mgr”
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:获取“root/nfs4”的键表项时未找到键表项。mgr@MGR'
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:成功获取“nfs/nfs4”的键表项。mgr@MGR'
1月15日22:00:11 nfs4 rpc.gssd[8116]:信息:CC'文件:/tmp/krb5cc_machine_MGR'中的凭据在1358369976之前一直有效
1月15日22:00:11 nfs4 rpc.gssd[8116]:信息:CC'文件:/tmp/krb5cc_machine_MGR'中的凭据在1358369976之前一直有效
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:使用文件:/tmp/krb5cc_machine_MGR作为机器凭据的凭据缓存
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:使用环境变量选择krb5 ccache文件:/tmp/krb5cc\u machine\u MGR
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:使用fsuid 0创建上下文(保存uid 0)
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:为服务器nfs4.mgr创建tcp客户端
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:调试:端口已设置为2049
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:使用服务器创建上下文nfs@nfs4.mgr
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:在authgss_create_default()中
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:在authgss_create()中
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:authgss_create:名称为0x1bbee10
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:authgss_create:gd->名称为0x1bb46e0
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:在authgss_refresh()中
一月15日22:00:11 nfs4 rpc.gssd[8116]:结构rpc\u gss\u秒:
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:机制_OID:{1 2 134 72 134 247 18 1 2}
1月15日22:00:11 nfs4 rpc.gssd[8116]:qop:0
1月15日22:00:11 nfs4 rpc.gssd[8116]:服务:1
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:cred:0x1bb9ae0
一月15日22:00:11 nfs4 rpc.gssd[8116]:请求标志:00000002
1月15日22:00:11 nfs4 rpc.gssd[8116]:rpcsec_gss:gss_init_sec_context:(主要)未指定的gss故障。次要代码可能提供更多信息-(次要)不支持加密类型(配置文件错误?)
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:在authgss_destroy()中
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:在authgss_destroy_context()中
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:authgss_destroy:释放名称0x1bb46e0
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:authgss_create_默认值:释放名称0x1bbee10
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:警告:无法为服务器nfs4.mgr的uid为0的用户创建krb5上下文
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:警告:无法创建具有凭据缓存文件的机器krb5上下文:/tmp/krb5cc\u machine\u MGR,用于服务器nfs4.MGR
Jan 15 22:00:11 nfs4 rpc.gssd[8116]:警告:尝试为服务器nfs4.mgr重新创建缓存时,计算机缓存已提前过期或损坏
每次装载调用都会发生两次。你知道这意味着什么吗?它可能引用哪个配置文件


感谢您的帮助。

我相信Debian Squence中的NFSv4实现仍然只是DES。(在相当长一段时间内,NFSv4实现一直存在这个问题。)然而,所有现代Kerberos实现在默认情况下都不再允许DES,因为它对于良好的安全实践来说太弱了

至少,您可能需要添加:

allow_weak_crypto     = true

到客户端上
/etc/krb5.conf
[libdefaults]
部分。您的KDC还需要支持DES服务票证请求。您需要确保NFSv4服务器使用的Kerberos主体只有DES加密类型;如果它有任何其他enctype,客户端将更喜欢它们(因为它们更强大),但是服务器将无法理解身份验证。

Argl,看起来是一个相当麻烦的冒险。是否有一种简单的方法来验证您的信念?请参阅。看起来变化好像刚好错过了。有鉴于此,我怀疑内核和来自后台端口的nfs UTIL可能会按照您预期的方式工作。