AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 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

O smbd do Samba não funciona mais com MIT Kerberos e OpenLDAP para autenticação

  • 772

Estou recebendo o seguinte erro ao tentar navegar em um compartilhamento do Samba:

session setup failed: NT_STATUS_NO_IMPERSONATION_TOKEN

Minha configuração do Samba para vincular um servidor independente smbdà configuração MIT Kerberos e OpenLDAP costumava funcionar (definitivamente funcionava com o Ubuntu 20.04, não me lembro se alguma vez funcionou com o 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

Eu poderia então pegar um ticket Kerberos e navegar e/ou montar compartilhamentos Samba, por exemplo:

$ 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

Há muito tempo, porém, isso parou de funcionar (há um ou dois anos; só não tive tempo de sentar e mexer nisso até agora; ser pai é, tipo, muito, sabe?). Agora eu entendo isso:

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

Passei algumas noites pesquisando agora e acho que algo quebrou ou foi removido no Samba 4.14. Algo sobre PACs, que aparentemente fazem parte dos tickets do Kerberos... de alguma forma? [1, 2, 3] Não sei, não sou especialista em Kerberos; Eu apenas misturo as coisas no teclado até que funcionem, como a maioria das pessoas.

Então aqui está minha pergunta principal: o Samba suporta autenticação via MIT Kerberos e OpenLDAP como costumava fazer, ou agora está obsoleto/sem suporte?

Miscelânea

O smbdlog sempre contém isto, logo após iniciar/reiniciar:

$ 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

Às vezes, de forma não reproduzível, também acaba com vários destes erros:

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

Não tenho certeza se são relevantes, mas as smbclientfalhas não parecem desencadeá-las, então... provavelmente não estão relacionadas.

[1] https://bugzilla.samba.org/show_bug.cgi?id=14901 (tentei as configurações username map scripte local nt token fromlá e não funcionou)

[2] https://lists.fedorahosted.org/archives/list/ [email protegido] /thread/6CTEYZ63WEPHR6GESDSUGNS57XGNTD2U/#6CTEYZ63WEPHR6GESDSUGNS57XGNTD2U

samba
  • 2 2 respostas
  • 40 Views

2 respostas

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

    PACs, “certificados de atributos de privilégio”, são uma forma de o KDC anexar informações extras aos tickets Kerberos. Embora normalmente um ticket indique apenas o nome principal e nada mais, o PAC também pode fornecer o SID do Windows, as associações de grupo, o diretório inicial... evitando a necessidade do servidor buscar isso no LDAP ou em algum outro lugar. O DCE e o Active Directory usam PACs em todos os lugares; O MIT/Heimdal Kerberos tradicionalmente não o faz.

    O Samba, em versões recentes, reformulou seu suporte Kerberos para fechar várias falhas importantes de segurança. Como parte do retrabalho (talvez uma parte desnecessária, mas que reduziu a complexidade do código), um servidor Samba que faz parte de um domínio do Active Directory requer PACs, enquanto um servidor Samba que não é membro do AD faz o oposto e rejeita completamente os tickets. que possuem PACs (já que tradicionalmente o MIT Kerberos e Heimdal não os usavam).

    Portanto, o primeiro problema é que você está usando security = ads, mas na verdade não tem ADS. Esta opção ativa o modo "Active Directory" do Samba e exige PACs com informações específicas do AD em tickets Kerberos, que você não pode fornecer, o que leva ao erro "NO_IMPERSONATION_TOKEN".

    Você não precisa security = adsapenas usar o Kerberos com o Samba. Remova-o e use o modo de segurança padrão.

    O segundo problema é que o que foi dito acima é um pouco mentiroso e recentemente o MIT Kerberos começou a emitir tickets com PACs (para resolver outro problema de segurança relacionado ao S4U)... embora sejam PACs vazios que não possuem nenhum dos atributos AD que o Samba possui. adsO modo exigiria (sem SID, sem participação em grupos) – esses PACs existem apenas por causa da assinatura digital que carregam – portanto, eles não atenderão aos requisitos do modo de anúncios do Samba.

    No entanto, esses PACs vazios ainda são PACs e agora serão rejeitados pelo Samba quando for usado como um servidor independente, com um erro "BAD_TOKEN" ligeiramente diferente. Para resolver isso, você precisará marcar os cifs/*principais do Samba como não exigindo um PAC:

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

    ...e jogue fora todos os tickets em cache que você possa ter para o serviço:

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

    Samba é um conjunto de daemons trabalhando juntos. Por alguns anos, se você estiver executando uma configuração de membro de domínio, o winbindd também deverá estar em execução. Certifique-se de que o smbd e o winbindd estejam em execução. O smbd costumava ter um código substituto para lidar com tarefas que agora são totalmente tratadas pelo winbindd.

    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

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

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve