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 / 问题 / 1150343
Accepted
Karl M. Davis
Karl M. Davis
Asked: 2023-12-25 05:02:51 +0800 CST2023-12-25 05:02:51 +0800 CST 2023-12-25 05:02:51 +0800 CST

Samba 的 smbd 不再使用 MIT Kerberos 和 OpenLDAP 进行身份验证

  • 772

我在尝试浏览 Samba 共享时收到以下错误:

session setup failed: NT_STATUS_NO_IMPERSONATION_TOKEN

我用于将独立服务器绑定smbd到 MIT Kerberos 和 OpenLDAP 设置的 Samba 配置曾经可以正常工作(在 Ubuntu 20.04 上确实如此,不记得在 Ubuntu 22.04 上是否也如此):

<smb.conf>

[global]
# Change this to the workgroup/NT-domain name your Samba server will part of
   workgroup = EXAMPLE

# The 'auto' setting here configures Samba based on the value of the
# 'security' setting.
   server role = auto

# Configure Samba to call out to Kerberos for all authentication. Because we're
# not also configuring a passdb, Samba will look to the system accounts for all
# authorization info (e.g. UIDs, groups, etc.). This setup was taken from
# https://help.ubuntu.com/lts/serverguide/samba-ldap.html.
   security = ads
   realm = EXAMPLE.COM
   kerberos method = dedicated keytab
   dedicated keytab file = /etc/samba/smbd.keytab

   idmap config * : backend = tdb
   idmap config * : range = 20001-30000
   idmap config {{ domain | upper }} : backend = rfc2307
   idmap config {{ domain | upper }} : range = 10000-20000

然后我可以获取 Kerberos 票证并浏览和/或挂载 Samba 共享,例如:

$ kinit
Password for [email protected]: 

$ /usr/bin/smbclient //neatbox.example.com/share --use-kerberos=required --no-pass --directory somepath --command ls
  .                                   D        0  Fri May  6 07:10:08 2022
  ..                                  D        0  Fri May  6 07:10:08 2022
  stuff                               D        0  Fri May  6 07:10:08 2022
  otherstuff                          D        0  Fri May  6 07:10:13 2022

        957134040 blocks of size 1024. 620537476 blocks available

然而,很久以前,这种方法就不再起作用了(比如一两年前;只是直到现在才有时间坐下来大惊小怪;养育子女,就像很多,你知道吗?)。现在我明白了:

$ /usr/bin/smbclient //neatbox.example.com/share --use-kerberos=required --no-pass --directory somepath --command ls
session setup failed: NT_STATUS_NO_IMPERSONATION_TOKEN

我现在花了几个晚上研究,我认为 Samba 4.14 周围有什么东西坏了或者被删除了?关于 PAC 的一些事情,它显然是 Kerberos 票证的一部分......不知何故?[1,2,3] 我不知道,我不是 Kerberos 专家;像大多数人一样,我只是在键盘上敲打一些东西,直到一切正常为止。

所以这是我的主要问题:Samba 是否像以前一样支持通过 MIT Kerberos 和 OpenLDAP 进行身份验证,或者现在已弃用/不受支持?

杂项

在启动/重新启动后,日志smbd中始终包含以下内容:

$ sudo systemctl status smbd
...
Dec 24 20:53:29 eddings systemd[1]: Starting Samba SMB Daemon...
Dec 24 20:53:29 eddings smbd[782101]: [2023/12/24 20:53:29.593145,  0] ../../source3/smbd/server.c:1734(main)
Dec 24 20:53:29 eddings smbd[782101]:   smbd version 4.15.13-Ubuntu started.
Dec 24 20:53:29 eddings smbd[782101]:   Copyright Andrew Tridgell and the Samba Team 1992-2021
Dec 24 20:53:29 eddings systemd[1]: Started Samba SMB Daemon.
Dec 24 20:53:30 eddings smbd[782101]: [2023/12/24 20:53:30.244701,  0] ../../source3/printing/nt_printing.c:233(nt_printing_init)
Dec 24 20:53:30 eddings smbd[782101]:   nt_printing_init: error checking published printers: WERR_ACCESS_DENIED

有时,不可重复地,它也会导致一堆以下错误:

Dec 24 11:06:27 eddings smbd[766136]: [2023/12/24 11:06:27.972690,  0] ../../source3/auth/auth_winbind.c:120(check_winbind_security)
Dec 24 11:06:27 eddings smbd[766136]:   check_winbind_security: winbindd not running - but required as domain member: NT_STATUS_NO_LOGON_SERVERS

不确定它们是否相关,但smbclient失败似乎并没有触发它们,所以......它们可能不相关。

[1] https://bugzilla.samba.org/show_bug.cgi?id=14901(我尝试了那里的username map script和local nt token from设置,但它不起作用)

[2] https://lists.fedorahosted.org/archives/list/ [电子邮件受保护] /thread/6CTEYZ63WEPHR6GESDSUGNS57XGNTD2U/#6CTEYZ63WEPHR6GESDSUGNS57XGNTD2U

samba
  • 2 2 个回答
  • 40 Views

2 个回答

  • Voted
  1. Best Answer
    u1686_grawity
    2023-12-26T04:20:43+08:002023-12-26T04:20:43+08:00

    PAC(“特权属性证书”)是 KDC 将额外信息附加到 Kerberos 票证的一种方式。虽然票证通常仅指示主体名称而无其他信息,但 PAC 还可以提供 Windows SID、组成员资格、主目录……从而避免服务器从 LDAP 或其他地方获取这些信息。DCE 和 Active Directory 到处都使用 PAC;麻省理工学院/Heimdal Kerberos 传统上不这样做。

    Samba 在最近的版本中重新设计了其 Kerberos 支持,以弥补几个主要的安全漏洞。作为返工的一部分(也许是不必要的部分,但它确实降低了代码复杂性),属于 Active Directory 域的 Samba 服务器需要 PAC,而不是AD成员的 Samba 服务器则执行相反的操作并完全拒绝票证具有 PAC(因为传统上 MIT Kerberos 和 Heimdal 根本不使用它们)。

    所以第一个问题是你正在使用security = ads,但实际上根本没有 ADS。此选项启用 Samba 的“Active Directory”模式,并要求 PAC 在 Kerberos 票证中包含 AD 特定信息,而您无法提供这些信息,这会导致“NO_IMPERSONATION_TOKEN”错误。

    您不需要security = ads只将 Kerberos 与 Samba 结合使用。删除它并使用默认的安全模式。

    第二个问题是,上面的内容有点谎言,最近 MIT Kerberos 确实开始使用 PAC 发行票证(以解决与 S4U 相关的另一个安全问题)...尽管它们是空的 PAC,没有 Samba 中的 AD 属性ads模式需要(没有 SID,没有组成员资格)——这些 PAC 的存在只是为了它们携带的数字签名——所以它们不能满足 Samba 的广告模式要求。

    然而,这些空 PAC 仍然是 PAC,当 Samba 用作独立服务器时,它们现在会被 Samba 拒绝,并出现略有不同的“BAD_TOKEN”错误。要解决此问题,您需要将 Sambacifs/*主体标记为不需要 PAC:

    # kadmin
    kadmin:  modprinc +no_auth_data_required cifs/neatbox.example.com
    

    ...并丢弃您可能拥有的该服务的任何缓存票证:

    $ kinit -R
    
    • 2
  2. abbra
    2023-12-25T20:14:13+08:002023-12-25T20:14:13+08:00

    Samba 是一套协同工作的守护进程。多年来,如果您运行域成员配置,winbindd 也必须运行。确保 smbd 和 winbindd 都在运行。smbd 曾经有一个后备代码来处理现在完全由 winbindd 处理的任务。

    • 1

相关问题

  • AD 组成员身份更改未反映在 winbind 信息中

  • 使用 smbldap 管理用户/组的 Web 前端

  • 修复 FreeBSD 上缺少的库

  • 连接到具有共享模式安全性的 Samba 服务器时出现问题

  • 3台计算机(Windows和Linux)的家庭网络[关闭]

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