目前,我能够使用openldap ldap服务器和Truenas NFS服务器(配置了LDAP访问)来设置SSO NFS设置。ubuntu客户端可以使用pam-挂载来挂载nfs本地共享。其目的是让每个LDAP用户使用pam-ldap和nss-ldap进行身份验证,然后挂载适当的nfs家庭共享。设置正常。
如我所见,有四种可能的方法。
办法- 1:
( a)在nfs-服务器导出中使用no_root_squash和sec=sys (这有严重的安全问题),并在ubuntu客户机中为使用pam_ldap认证的每个用户安装/home。这将使pam_mkdir能够为新用户自动创建主文件夹,并根据权限设置访问其他用户主文件夹。
但这似乎完全不安全,因为客户端可以伪造uid/gid来访问未经授权的共享,包括root。但是没有no_root_squash,在/home中自动创建主文件夹似乎是不可能的。
方法-2
( a)在nfs导出中使用sec=sys、root_squash。Nfs (truenas)服务器配置了ldap访问。不要挂载/home。相反,使用pam_mount或autofs只挂载经过身份验证的用户主文件夹。这就是我目前的工作设置。但是客户端仍然可以伪造uid/gid以获得未经授权的访问。但是在这种情况下,自动创建无法工作,它必须手动完成。
办法-3
( a)在nfs导出中使用sec=ldap、root_squash。在nfs服务器上安装ldap_pam auth。这种方法是否提供任何额外的安全性?据我所知,nfs_client为nfs_server提供了uid/gid (可能也是伪造的),即使nfs_server使用这些信息查询ldap服务器,我也看不到提供某种安全性的任何方式。有谁对这种方法有意见吗?我还没试过,因为我真的不明白这是怎么回事。
方法-4
a)使用kerberos。sec=krb5 in nfs_server.为kerberos设置ldap_backend。使用带有ldap后端的kerberos验证客户端用户。现在,一旦我们开始使用userPassword对用户进行身份验证,传统的LDAP字段就变得毫无用处。因此,使用ldap进行身份验证的其他应用程序(如gitea、gogs等)不能进一步使用ldap,因为ldap服务器中的userPassword字段与kerberos密钥存储字段不同步。采取这种做法的正确方式是什么?这似乎是最好的方法,只要它确实同步了传统ldap方法和kerberos ldap后端的密码。
方法-5
( a)只使用kerberos对客户机和nfs服务器进行身份验证。将传统的ldap身份验证用于所有目的,包括登录/ssh、其他应用程序(如gogs等)。这有可能吗?
我在这些方面的经验有限。请帮助您提出宝贵的建议。理想情况下,我想要一个带有nfs本地股票的SSO,并以openldap作为我的后端。如果可能的话,它应该是无缝的,就像不是nfs共享一样,如果权限允许,每个用户都可以访问其他用户文件夹。
提供合理安全性的更简单的解决方案是足够好的。
-thanks tachionic
发布于 2023-05-16 11:40:44
( a)在nfs导出中使用sec=ldap、root_squash。在nfs服务器上安装ldap_pam auth。这种方法是否提供任何额外的安全性?据我所知,nfs_client为nfs_server提供了uid/gid (可能也是伪造的),即使nfs_server使用这些信息查询ldap服务器,我也看不到提供某种安全性的任何方式。有谁对这种方法有意见吗?我还没试过,因为我真的不明白这是怎么回事。
这并不是因为NFS没有将PAM用于任何事情。
NFS (特别是v4)可能涉及用于用户⇆uid查找的LDAP,因为它在stat()结果中通过线路发送用户名,但是这a)对sec=sys没有影响,b)不是通过⇆完成的。
( a)在nfs导出中使用sec=ldap、root_squash。在nfs服务器上安装ldap_pam auth。这种方法是否提供任何额外的安全性?据我所知,nfs_client为nfs_server提供了uid/gid (可能也是伪造的),即使nfs_server使用这些信息查询ldap服务器,我也看不到提供某种安全性的任何方式。有谁对这种方法有意见吗?我还没试过,因为我真的不明白这是怎么回事。
sec=ldap不存在。(如果它确实存在,它将类似于sec=password而不是sec=ldap,就像SSH没有"ldap“身份验证机制一样,因为在客户端服务器之间没有任何LDAP相关的传输。但是,NFS一开始没有任何基于密码的身份验证机制。)
a)使用kerberos。sec=krb5 in nfs_server.为kerberos设置ldap_backend。使用带有ldap后端的kerberos验证客户端用户。现在,一旦我们开始使用userPassword对用户进行身份验证,传统的LDAP字段就变得毫无用处。因此,使用ldap进行身份验证的其他应用程序(如gitea、gogs等)不能进一步使用ldap,因为ldap服务器中的userPassword字段与kerberos密钥存储字段不同步。
对于OpenLDAP,可以将userPassword字段设置为{SASL}user@REALM,以对运行在服务器上的Cyrus saslauthd守护进程执行“简单绑定”的传递身份验证,该进程能够根据Kerberos (使用-a kerberos5模式)验证密码。
请记住,Kerberos无法根据LDAP服务器对用户进行身份验证;"LDAP后端“纯粹用于KDC的数据存储。
https://serverfault.com/questions/1131152
复制相似问题