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 / 1163684
Accepted
Webtux
Webtux
Asked: 2024-08-09 15:17:00 +0800 CST2024-08-09 15:17:00 +0800 CST 2024-08-09 15:17:00 +0800 CST

Kerberos: KDC retornou sequência de erro: NO PREAUTH

  • 772

Olá especialistas em Kerberos :)

Instalei um servidor Kerberos no Debian Bookworm:

krb5-kdc/stable-security,now 1.20.1-2+deb12u2
krb5-kdc-ldap/stable-security,now 1.20.1-2+deb12u2
krb5-pkinit/stable-security,now 1.20.1-2+deb12u2
krb5-user/stable-security,now 1.20.1-2+deb12u2

A autenticação SSH para qualquer host da minha rede está funcionando perfeitamente usando GSSAPI e Kerberos. Sem problemas até agora. No entanto, ao tentar fazer login via SSH no próprio servidor Kerberos, não consigo fazer isso funcionar e não tenho certeza de qual é o problema aqui.

Isto é o que ssh -vvv ns01diz na tentativa de login no próprio servidor Kerberos de outro host (neste caso 192.168.10.7):

debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
KDC returned error string: NO PREAUTH

E krb5kdc Debug log no servidor ao tentar fazer login:

Aug 09 09:08:51 ns01.example.com krb5kdc[4557](info): TGS_REQ (8 etypes {aes256-cts-hmac-sha1-96(18), aes128-cts-hmac-sha1-96(17), aes256-cts-hmac-sha384-192(20), aes128-cts-hmac-sha256-128(19), DEPRECATED:des3-cbc-sha1(16), DEPRECATED:arcfour-hmac(23), camellia128-cts-cmac(25), camellia256-cts-cmac(26)}) 192.168.10.7: NO PREAUTH: authtime 0, etypes {rep=UNSUPPORTED:(0)} [email protected] for host/[email protected], Generic error (see e-text)

Ao fazer um login remoto em outro servidor na rede, é isso que o krb5kdc registra neste caso (com sucesso):

Aug 09 09:10:39 ns01.example.com krb5kdc[4557](info): TGS_REQ (1 etypes {aes256-cts-hmac-sha1-96(18)}) 192.168.10.7: ISSUE: authtime 1723186107, etypes {rep=aes256-cts-hmac-sha1-96(18), tkt=aes256-cts-hmac-sha1-96(18), ses=aes256-cts-hmac-sha1-96(18)}, [email protected] for krbtgt/[email protected]

O keytab no próprio servidor é como qualquer outro host SSH remoto:

Keytab name: FILE:/etc/krb5.keytab
KVNO Timestamp           Principal
---- ------------------- ------------------------------------------------------
   4 09.08.2024 08:16:50 host/[email protected] (aes256-cts-hmac-sha1-96) 
   4 09.08.2024 08:16:50 host/[email protected] (aes128-cts-hmac-sha1-96) 

Alguma idéia de como depurar isso ainda mais?

Obrigado

kerberos
  • 1 1 respostas
  • 21 Views

1 respostas

  • Voted
  1. Best Answer
    u1686_grawity
    2024-08-09T16:33:20+08:002024-08-09T16:33:20+08:00

    Provavelmente o principal do seu cliente está faltando o requires_pre_authsinalizador.

    Tradicionalmente, o Kerberos emitia TGTs sem qualquer autenticação, contando apenas com o fato de serem criptografados com a senha do cliente. Mas isso os torna vulneráveis ​​a ataques de força bruta de senha offline (o pessoal sofisticado do AD chama isso de "ASREP-roasting" ), então a pré-autenticação foi adicionada no Kerberos 5 para exigir que o cliente prove que conhece a senha antes de poder obtê-la. um TGT.

    A pré-autenticação é, no entanto, opcional e o KDC do MIT a exige apenas para principais que tenham o sinalizador mencionado acima definido. (Por exemplo, princípios baseados em keytab geralmente não precisam de pré-autenticação porque possuem chaves aleatórias que são inviáveis ​​de serem quebradas de qualquer maneira.)

    Kerberos trata isso um pouco como um recurso de política - quando você kinit, seu TGT recebe o Psinalizador para indicar que a pré-autenticação ocorreu, e o KDC ou serviços podem usá-lo para tomar decisões de acesso (assim como os sistemas SSO modernos podem diferenciar "registrado em usar um certificado" de "logado usando uma senha").

    Na verdade, quando um principal de serviçorequires_pre_auth for definido – o que normalmente seria não operacional, já que os serviços não adquirem TGTs – o KDC do MIT irá tratá-lo como um requisito para que o cliente desse serviço seja fortalecido usando pré-autorização. Se o seu usuário principal não tiver o sinalizador de pré-autenticação e você fizer o kinit sem pré-autenticação, não será permitido obter tickets para nenhum serviço que tenha o sinalizador de pré-autenticação.

    Portanto, você deve modprincgarantir que todos os principais de contas de usuário tenham a pré-autenticação ativada (tanto para esse problema quanto para segurança em geral) e talvez deva adicioná-la default_principal_flagsem seu arquivo kdc.conf. (Observe que o MIT Krb5 é altamente inconsistente na grafia dos nomes dos sinalizadores; kadmin e kdc.conf esperam entradas diferentes.) Depois disso, você deve kinitnovamente; em seguida, verifique quais sinalizadores são mostrados por klist -f.

    (Quanto aos principais de host e serviço - eles não precisam estritamente do sinalizador de pré-auth, quer atuem como clientes ou não, mas também não fará mal nenhum mantê-lo ativado; na verdade, pode ajudá-lo a capturar futuros situações em que um usuário de alguma forma desativou a pré-autorização novamente.)

    • 0

relate perguntas

  • A delegação baseada em recursos do Windows Admin Center parou de funcionar com o erro KRB_AP_ERR_MODIFIED

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