AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 398236
Accepted
tstm
tstm
Asked: 2012-06-14 02:49:14 +0800 CST2012-06-14 02:49:14 +0800 CST 2012-06-14 02:49:14 +0800 CST

如何从 LDAP 目录确定 Kerberos 领域?

  • 772

我有两个可以验证的 Kerberos 领域。其中一个我可以控制,另一个在我看来是外部的。我在 LDAP 中也有一个内部用户数据库。假设领域是 INTERNAL.COM 和 EXTERNAL.COM。在 ldap 我有这样的用户条目:

1054 uid=testuser,ou=People,dc=tml,dc=hut,dc=fi
shadowFlag: 0
shadowMin: -1
loginShell: /bin/bash
shadowInactive: -1
displayName: User Test
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uidNumber: 1059
shadowWarning: 14
uid: testuser
shadowMax: 99999
gidNumber: 1024
gecos: User Test
sn: Test
homeDirectory: /home/testuser
mail: [email protected]
givenName: User
shadowLastChange: 15504
shadowExpire: 15522
cn: User.Test
userPassword: {SASL}[email protected]

我想做的,不知何故,是指定每个用户的基础,用户是根据哪个身份验证服务器/领域进行身份验证的。配置 kerberos 以处理多个领域很容易。

但是我如何配置其他实例(如 PAM)来处理一些用户来自 INTERNAL.COM 而另一些来自 EXTERNAL.COM 的事实?需要进行某种 LDAP 查找,从中获取领域和身份验证名称,然后是实际的身份验证本身。

是否有一种标准化的方法可以将此信息添加到 LDAP 或进行查找?对于多领域用户群,是否还有其他解决方法?我也可以使用单一领域解决方案,只要我可以分别为用户指定用户名 - 领域 - 组合。

linux active-directory ldap kerberos
  • 4 4 个回答
  • 17924 Views

4 个回答

  • Voted
  1. Best Answer
    pfo
    2012-06-23T02:19:02+08:002012-06-23T02:19:02+08:00

    我认为最好的方法是使用sssd. 这为您提供了最大的灵活性,因为 sssd 支持它所谓的域。请注意,较新的发行版已经使用 sssd。这是梦想成真,没有理由使用 libpam_krb5.so 和 libpam_ldap.so 或其中任何一个。

    最简单的方法是使用 ldap 过滤器来选择您需要为 tgts 进入哪个领域,如下所示:

    首先创建两个包含外部和内部领域成员的安全组,以便能够访问正确的 kdc。

    设置 sssd 并检查它的文档,这个片段是一个草图,你需要如何设置这两个域。

    [domain/internal.com]
    access_provider = ldap
    id_provider = ldap
    ldap_access_filter = memberOf=cn=allowedusersinternal,ou=Groups,dc=internal,dc=com
    auth_provider = krb5 
    
    [domain/external.com]
    access_provider = ldap
    ldap_access_filter = memberOf=cn=allowedusersexternal,ou=Groups,dc=internal,dc=com
    id_provider = ldap
    auth_provider = krb5
    

    然后根据需要为这两个领域配置您的 kerberos(但您已经做到了)。

    • 3
  2. Flash
    2012-06-16T06:12:19+08:002012-06-16T06:12:19+08:00

    您正在寻找的设置在 /etc/krb5.conf 中,您可以在 [realms] 标签下存储多个领域,每个领域都指向自己的 LDAP 服务器。

    [realms]
           INTERNAL.COM = {
                   kdc = some.server.internal.com:88
                   admin_server = some.server.internal.com:749
                   default_domain = internal.com
           }
           EXTERNAL.COM = {
                   kdc = some.server.external.com:88
                   admin_server = some.server.external.com:749
                   default_domain = external.com
           }  
    
    • 1
  3. 84104
    2012-06-21T15:12:48+08:002012-06-21T15:12:48+08:00

    pam_ldap
    对于 ssh password/challenge-response LDAP example entry 已经足够了。
    修改适当的文件/etc/pam.d以使用该pam_ldap库。在您的 OpenLDAP 服务器上
    设置SASL 直通身份验证。
    RHEL (CentOS): nss_ldap
    Debian: libpam-ldap
    Ubuntu:ldap-auth-client

    krb5.conf
    auth_to_local应该适用于基于 GSSAPI 的身份验证。

    [realms]
    $LOCALREALM = {
    auth_to_local = RULE:[1:$1]
    auth_to_local = DEFAULT
    }
    这可能过于宽松。

    !pam_krb5 不应该像之前页面alt_auth_map中引用的那样工作manOpenSSH will reject usernames that don't match local accounts

    • 1
  4. chutz
    2012-06-16T07:14:11+08:002012-06-16T07:14:11+08:00

    针对不同域进行身份验证的 Windows 方法是除了登录名之外还指定域。那么,您可以做类似的事情并让人们以 [email protected] 或 [email protected] 登录吗?如果您只使用“user3”,您可以登录到默认域。

    根据 pam_krb5(5),这是可能的:

    如果提供给 PAM 的用户名包含“@”,并且 Kerberos 可以将用户名视为主体,将其映射到本地帐户名,pam_authenticate() 会将 PAM 用户更改为该本地帐户名。这允许用户使用他们的 Kerberos 主体登录并让 Kerberos 映射到一个帐户。

    不幸的是,它继续:

    但是请注意,此工具不能与 OpenSSH 一起使用。在重新映射完成之前,OpenSSH 将拒绝与本地帐户不匹配的用户名,并将无效密码传递给 PAM 模块。另请注意,其他几个常见的 PAM 模块(例如 pam_securetty)希望能够使用 getpwnam() 查找用户,如果使用此功能,则不能在 pam_krb5 之前调用。

    • 0

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve