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 / coding / Perguntas / 78987485
Accepted
Kevin
Kevin
Asked: 2024-09-15 21:27:12 +0800 CST2024-09-15 21:27:12 +0800 CST 2024-09-15 21:27:12 +0800 CST

kinit: Valor inteiro inválido ao obter credenciais iniciais

  • 772

Estou tentando configurar um arquivo keytab para usar com meu principal de serviço para autenticação Kerberos entre meu servidor Linux (RHEL9) e meu Microsoft Windows 2022 Server. O principal de serviço é MSSQLSvc/ [email protected] . Quando eu gero o arquivo keytab no meu host AD (controlador) e então o carrego para meu host RHEL e tento gerar um tíquete.

kinit -V -t /etc/test.keytab MSSQLSvc/[email protected]

Eu sempre recebo:

Using keytab: /etc/test.keytab
kinit: Invalid integer value while getting initial credentials

Também tentei:

kinit MSSQLSvc/[email protected]
kinit: Invalid integer value while getting initial credentials

Aqui está o contexto de como configurei meu ambiente. Primeiro, configurei meu serviço do SQL Server para rodar com meu usuário de domínio [email protected] . Então, gerei um princípio de serviço para meu usuário:

PS C:\Users\Administrator> setSPN EvolvenDBUser
Registered ServicePrincipalNames for CN=EvolvenDBUser,CN=Users,DC=evolven,DC=corp:
        MSSQLSvc/MSSQL-G1CFTVE.evolven.corp
        MSSQLSvc/MSSQL-G1CFTVE.evolven.corp:1433

Em seguida, gerei um arquivo keytab no meu host AD por meio deste comando:

ktpass -princ MSSQLSvc/[email protected] -mapuser [email protected] -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass <password> -out test.keytab -SetPass

Ele retorna isto:

Targeting domain controller: EC2AMAZ-AEHRC46.evolven.corp
Using legacy password setting method
Successfully mapped MSSQLSvc/MSSQL-G1CFTVE.evolven.corp to EvolvenDBUser.
Key created.
Output keytab to evolven.keytab:
Keytab version: 0x502
keysize 99 MSSQLSvc/[email protected] ptype 1 (KRB5_NT_PRINCIPAL) vno 20 etype 0x12 (AES256-SHA1) keylength 32 (0x0a32866cd2364109a006b483cedd8f6eee418f87b2b460d6be75e6763b1b0aef)

Quando examino o arquivo keytab no meu host RHEL:

klist -k /etc/test.keytab 
Keytab name: FILE:/etc/test.keytab
KVNO Principal
---- --------------------------------------------------------------------------
  18 MSSQLSvc/[email protected]

No meu host RHEL, meu krb5.conf não é muito sofisticado, mas posso confirmar que ele suporta as configurações de criptografia que desejo usar.

[logging]
    default = FILE:/var/log/krb5libs.log
    kdc = FILE:/var/log/krb5kdc.log
    admin_server = FILE:/var/log/kadmind.log

[libdefaults]
    default_realm = EVOLVEN.CORP
    dns_lookup_realm = false
    dns_lookup_kdc = false
    ticket_lifetime = 30d
    renew_lifetime = 30d
    forwardable = true
    udp_preference_limit = 1  # Forces TCP if UDP fails
    default_tgs_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96
    default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96
    permitted_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96

[realms]
    EVOLVEN.CORP = {
        kdc = EC2AMAZ-AEHRC46.evolven.corp
        admin_server = EC2AMAZ-AEHRC46.evolven.corp
    }

[domain_realm]
    .evolven.corp = EVOLVEN.CORP
    evolven.corp = EVOLVEN.CORP

Eu tentei muitas coisas:

  1. Habilitei o suporte de usuário AES-128 e AES-256 no AD.
  2. Alterei a senha do usuário do AD e então regenerei o arquivo keytab. Também removi caracteres especiais na senha pensando que isso poderia estar causando um problema. Ainda o mesmo.
  3. Fiz um kdestroy para remover todos os tickets antigos.
  4. Vi uma postagem aqui: kinit: Falha na pré-autenticação ao obter credenciais iniciais .
  5. Não sei por que, mas não vejo nenhum registro, mesmo tendo habilitado o registro.

Eu tentei fazer:ktutil: add_entry -password -p MSSQLSvc/[email protected] -k 18 -e aes256-cts-hmac-sha1-96 -f

e eu volto

add_entry: Invalid integer value while adding new entry

Então, algo está claramente errado aqui com a autenticação do meu princípio de serviço. O que eu faço para resolver para poder gerar tickets?

active-directory
  • 1 1 respostas
  • 22 Views

1 respostas

  • Voted
  1. Best Answer
    grawity_u1686
    2024-09-15T23:48:05+08:002024-09-15T23:48:05+08:00

    Invalid integeré um erro que ocorre durante a análise do krb5.conf. Provavelmente isso ocorre por causa do seu udp_preference_limit, que está definido como 1 # Forces TCP if UDP fails– esse não é um número válido, pois o krb5.conf não suporta comentários de mesma linha.

    Deixando isso de lado: você tem duas entidades (cliente e serviço), mas apenas uma conta do AD entre ambas, e não é assim que você deve usar o Kerberos.

    Como regra geral, os clientes de um serviço nunca devem usar o mesmo principal do serviço – você deve criar uma conta de usuário dedicada (sem um SPN) para cada cliente.

    (Quando você faz isso kinit MSSQLSvc/MSSQL-whatever, você não está recebendo tickets para o servidor MSSQL – você está recebendo tickets como o servidor MSSQL, o que é o oposto do que você provavelmente está tentando fazer.)

    Tenha em mente que um keytab é literalmente a senha da conta em um formato diferente, então se você normalmente não informaria aos clientes a senha da conta de serviço, então você também não deveria dar aos clientes um keytab de serviço. (Assim como você também não daria aos usuários do webapp uma cópia da chave privada HTTPS do servidor...)

    • 1

relate perguntas

Sidebar

Stats

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

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Por que esse código Java simples e pequeno roda 30x mais rápido em todas as JVMs Graal, mas não em nenhuma JVM Oracle?

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Quando devo usar um std::inplace_vector em vez de um std::vector?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Marko Smith

    Estou tentando fazer o jogo pacman usando apenas o módulo Turtle Random e Math

    • 1 respostas
  • Martin Hope
    Aleksandr Dubinsky Por que a correspondência de padrões com o switch no InetAddress falha com 'não cobre todos os valores de entrada possíveis'? 2024-12-23 06:56:21 +0800 CST
  • Martin Hope
    Phillip Borge Por que esse código Java simples e pequeno roda 30x mais rápido em todas as JVMs Graal, mas não em nenhuma JVM Oracle? 2024-12-12 20:46:46 +0800 CST
  • Martin Hope
    Oodini Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores? 2024-12-12 06:27:11 +0800 CST
  • Martin Hope
    sleeptightAnsiC `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso? 2024-11-09 07:18:53 +0800 CST
  • Martin Hope
    The Mad Gamer Quando devo usar um std::inplace_vector em vez de um std::vector? 2024-10-29 23:01:00 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST
  • Martin Hope
    MarkB Por que o GCC gera código que executa condicionalmente uma implementação SIMD? 2024-02-17 06:17:14 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

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