ktpass

Aplica-se a: Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2 e Windows Server 2012

Configura o nome da entidade do servidor para o host ou serviço nos AD DS (Serviços de Domínio do Active Directory) e gera um arquivo .keytab que contém a chave secreta compartilhada do serviço. O arquivo .keytab baseia-se na implementação do protocolo de autenticação Kerberos pelo MIT (Massachusetts Institute of Technology). A ferramenta de linha de comando ktpass permite que serviços não Windows que dão suporte à autenticação Kerberos usem os recursos de interoperabilidade fornecidos pelo serviço do KDC (Centro de Distribuição de Chaves) Kerberos.

Sintaxe

ktpass
[/out <filename>]
[/princ <principalname>]
[/mapuser <useraccount>]
[/mapop {add|set}] [{-|+}desonly] [/in <filename>]
[/pass {password|*|{-|+}rndpass}]
[/minpass]
[/maxpass]
[/crypto {DES-CBC-CRC|DES-CBC-MD5|RC4-HMAC-NT|AES256-SHA1|AES128-SHA1|All}]
[/itercount]
[/ptype {KRB5_NT_PRINCIPAL|KRB5_NT_SRV_INST|KRB5_NT_SRV_HST}]
[/kvno <keyversionnum>]
[/answer {-|+}]
[/target]
[/rawsalt] [{-|+}dumpsalt] [{-|+}setupn] [{-|+}setpass <password>]  [/?|/h|/help]

Parâmetros

Parâmetro Descrição
/out <filename> Especifica o nome do arquivo .keytab da versão 5 do Kerberos a ser gerado. Observação: esse é o arquivo .keytab que você transfere para um computador que não está executando o sistema operacional Windows e, em seguida, substitui ou mescla com o arquivo .keytab existente, /Etc/Krb5.keytab.
/princ <principalname> Especifica o nome da entidade de segurança no formato host/computer.contoso.com@CONTOSO.COM. Aviso: este parâmetro diferencia maiúsculas e minúsculas.
/mapuser <useraccount> Mapeia o nome da entidade de segurança Kerberos, que é especificada pelo parâmetro princ, para a conta de domínio especificada.
/mapop {add|set} Especifica como o atributo de mapeamento é definido.
  • Add – adiciona o valor do nome de usuário local especificado. Esse é o padrão.
  • Set – define o valor de criptografia somente DES (Data Encryption Standard) para o nome de usuário local especificado.
{-|+}desonly A criptografia somente DES é definida por padrão.
  • + Define uma conta para criptografia somente DES.
  • - Libera a restrição em uma conta para criptografia somente DES. Importante: o Windows não dá suporte a DES por padrão.
/in <filename> Especifica o arquivo .keytab a ser lido de um computador host que não está executando o sistema operacional Windows.
/pass {password|*|{-|+}rndpass} Especifica uma senha para o nome da entidade do usuário especificado pelo parâmetro princ. Use * para solicitar uma senha.
/minpass Define o comprimento mínimo da senha aleatória como 15 caracteres.
/maxpass Define o comprimento máximo da senha aleatória como 256 caracteres.
/crypto {DES-CBC-CRC|DES-CBC-MD5|RC4-HMAC-NT|AES256-SHA1|AES128-SHA1|All} Especifica as chaves geradas no arquivo keytab:
  • DES-CBC-CRC – usado para compatibilidade.
  • DES-CBC-MD5 – adere mais de perto à implementação do MIT e é usado para compatibilidade.
  • RC4-HMAC-NT – emprega criptografia de 128 bits.
  • AES256-SHA1 – emprega criptografia AES256-CTS-HMAC-SHA1-96.
  • AES128-SHA1 – emprega criptografia AES128-CTS-HMAC-SHA1-96.
  • All – afirma que todos os tipos criptográficos com suporte podem ser usados.

Observação: como as configurações padrão são baseadas em versões mais antigas do MIT, você sempre deve usar o parâmetro /crypto.

/itercount Especifica a contagem de iteração usada para a criptografia AES. O padrão ignora itercount para a criptografia não AES e define a criptografia AES como 4.096.
/ptype {KRB5_NT_PRINCIPAL|KRB5_NT_SRV_INST|KRB5_NT_SRV_HST} Especifica o tipo de entidade.
  • KRB5_NT_PRINCIPAL – o tipo de entidade de segurança geral (recomendado).
  • KRB5_NT_SRV_INST – a instância de serviço do usuário
  • KRB5_NT_SRV_HST – a instância do serviço host
/kvno <keyversionnum> Especifica o número da versão da chave. O valor padrão é 1.
/answer {-|+} Define o modo de resposta em segundo plano:
  • -As respostas redefinem prompts de senha automaticamente com NÃO.
  • +As respostas redefinem prompts de senha automaticamente com SIM.
/target Define qual controlador de domínio usar. O padrão é que o controlador de domínio seja detectado com base no nome da entidade de segurança. Se o nome do controlador de domínio não for resolvido, uma caixa de diálogo solicitará um controlador de domínio válido.
/rawsalt força ktpass a usar o algoritmo rawsalt ao gerar a chave. Esse parâmetro é opcional.
{-|+}dumpsalt A saída desse parâmetro mostra o algoritmo de sal MIT que está sendo usado para gerar a chave.
{-|+}setupn Define o nome UPN (nome da entidade de usuário) além do SPN (nome da entidade de serviço). O padrão é definir ambos no arquivo .keytab.
{-|+}setpass <password> Define a senha do usuário, quando fornecida. Se rndpass for usado, uma senha aleatória será gerada.
/? Exibe a Ajuda para esse comando.

Comentários

  • Os serviços em execução em sistemas que não estão executando o sistema operacional Windows podem ser configurados com contas de instância de serviço no AD DS. Isso permite que qualquer cliente Kerberos se autentique em serviços que não estão executando o sistema operacional Windows usando KDCs do Windows.

  • O parâmetro /princ não é avaliado pelo ktpass e é usado conforme fornecido. Não há nenhuma verificação para ver se o parâmetro corresponde ao caso exato do valor do atributo userPrincipalName ao gerar o arquivo Keytab. Distribuições Kerberos que diferenciam maiúsculas de minúsculas usando esse arquivo Keytab poderão ter problemas se não houver correspondência de caso exata e podem até falhar durante a pré-autenticação. Para verificar e recuperar o valor correto do atributo userPrincipalName de um arquivo de exportação LDifDE. Por exemplo:

    ldifde /f keytab_user.ldf /d CN=Keytab User,OU=UserAccounts,DC=contoso,DC=corp,DC=microsoft,DC=com /p base /l samaccountname,userprincipalname
    

Exemplos

Para criar um arquivo .keytab Kerberos para um computador host que não esteja executando o sistema operacional Windows, mapeie a entidade de segurança para a conta e defina a senha da entidade de segurança do host.

  1. Use o suplemento Usuário e computadores do Active Directory para criar uma conta de usuário para um serviço em um computador que não esteja executando o sistema operacional Windows. Por exemplo, crie uma conta com o nome User1.

  2. Use o comando ktpass para configurar um mapeamento de identidade para a conta de usuário digitando:

    ktpass /princ host/User1.contoso.com@CONTOSO.COM /mapuser User1 /pass MyPas$w0rd /out machine.keytab /crypto all /ptype KRB5_NT_PRINCIPAL /mapop set
    

    Observação

    Não é possível mapear várias instâncias de serviço para a mesma conta de usuário.

  3. Mescle o arquivo .keytab com o arquivo /Etc/Krb5.keytab em um computador host que não esteja executando o sistema operacional Windows.