Kerberos

O que é Kerberos?

Kerberos é um protocolo de autenticação de rede.

Ele usa criptografia para garantir a segurança na comunicação entre sistemas em uma rede, como em ambientes corporativos.

O principal objetivo do Kerberos é autenticar usuários e serviços de forma segura, evitando problemas como:

Interceptação de senhas.
Falsificação de identidade.
Acesso não autorizado.
Envio de senha em texto claro pela rede.


Para que o Kerberos é usado?

O Kerberos é usado para autenticar usuários e serviços em uma rede.

Exemplos comuns:

Login em redes corporativas.
Autenticação em domínios Windows.
Acesso a servidores de arquivos.
Autenticação em bancos de dados.
Integração com Active Directory.
Acesso seguro a serviços internos.
Single Sign-On, também chamado de SSO.


Como o Kerberos funciona?

O Kerberos funciona usando tickets de autenticação.

Em vez de enviar a senha do usuário para cada serviço, o Kerberos usa tickets temporários criptografados.

Fluxo básico:

O usuário tenta fazer login.
O servidor Kerberos autentica o usuário.
O usuário recebe um ticket inicial.
Com esse ticket, o usuário solicita acesso a serviços.
O Kerberos emite tickets específicos para cada serviço.
O serviço valida o ticket.
Se o ticket for válido, o acesso é permitido.

Exemplo:

Usuário → Kerberos → Ticket → Serviço

Características principais do Kerberos

O Kerberos possui algumas características importantes:

Usa criptografia.
Autentica usuários e serviços.
Evita envio direto de senha pela rede.
Usa tickets temporários.
Permite Single Sign-On.
Depende de um servidor central chamado KDC.
É muito usado em redes corporativas.
É usado pelo Active Directory.
Depende de horário sincronizado entre cliente e servidor.
Pode ser integrado com LDAP, Samba e outros serviços.


O que é KDC no Kerberos?

KDC significa Key Distribution Center.

Ele é o centro de distribuição de chaves do Kerberos.

O KDC é o servidor central responsável por autenticar usuários e emitir tickets.

Ele possui dois componentes principais:

ComponenteFunção
ASAuthentication Server
TGSTicket Granting Server

O KDC é essencial para o funcionamento do Kerberos.


O que é AS no Kerberos?

AS significa Authentication Server.

Ele é responsável pela autenticação inicial do usuário.

Quando o usuário tenta acessar a rede, o cliente envia uma solicitação ao AS.

Se o usuário existir e estiver correto, o AS emite um ticket chamado TGT.

Exemplo:

Usuário → AS → TGT

O que é TGS no Kerberos?

TGS significa Ticket Granting Server.

Ele é responsável por emitir tickets para serviços específicos.

Depois que o usuário recebe o TGT, ele pode solicitar ao TGS um ticket para acessar um serviço, como:

Servidor de arquivos.
Banco de dados.
Servidor web interno.
Sistema corporativo.
Compartilhamento SMB.

Exemplo:

TGT → TGS → Ticket de serviço

O que é TGT no Kerberos?

TGT significa Ticket-Granting Ticket.

Ele é um ticket inicial emitido após a autenticação do usuário.

Esse ticket permite que o usuário solicite tickets para outros serviços sem precisar digitar a senha novamente.

Exemplo:

Usuário autenticado → recebe TGT

O TGT é temporário e possui prazo de validade.


O que é ticket de serviço no Kerberos?

O ticket de serviço é um ticket usado para acessar um serviço específico da rede.

Exemplo:

Um usuário quer acessar um servidor de arquivos.
Ele apresenta o TGT ao TGS.
O TGS emite um ticket de serviço.
O usuário apresenta esse ticket ao servidor de arquivos.
O servidor valida o ticket e permite o acesso.

Exemplo:

Usuário → Ticket de serviço → Servidor de arquivos

Funcionamento passo a passo do Kerberos

1. Autenticação inicial

Quando o usuário tenta fazer login, ele envia uma solicitação de autenticação ao AS.

O AS verifica se o usuário está registrado.

Se estiver correto, o AS gera um Ticket-Granting Ticket, chamado TGT.

Esse TGT é temporário e criptografado.

Exemplo:

Usuário → AS → TGT

2. Obtenção de tickets para serviços

Quando o usuário deseja acessar um serviço da rede, ele apresenta o TGT ao TGS.

O TGS verifica o TGT.

Se ele for válido, o TGS emite um ticket de serviço.

Exemplo:

TGT → TGS → Ticket para serviço

3. Acesso ao serviço

O usuário apresenta o ticket de serviço ao recurso desejado.

O serviço valida o ticket.

Se o ticket for válido e o usuário tiver permissão, o acesso é permitido.

Exemplo:

Ticket de serviço → Servidor → Acesso liberado

Kerberos envia senha pela rede?

Normalmente, não.

Uma das principais vantagens do Kerberos é evitar o envio direto da senha pela rede.

A senha é usada para gerar chaves criptográficas no processo de autenticação, mas não é enviada repetidamente para cada serviço.

Isso reduz o risco de interceptação de senhas.


Kerberos é a mesma coisa que LDAP?

Não.

Kerberos e LDAP são tecnologias diferentes, mas podem trabalhar juntas.

O Kerberos é usado para autenticação segura.

O LDAP é usado para consultar e gerenciar diretórios de usuários, grupos e permissões.

Resumo:

TecnologiaFunção
KerberosAutenticação por tickets
LDAPConsulta e gerenciamento de diretórios
Active DirectoryUsa Kerberos, LDAP, DNS e outros serviços

Kerberos é a mesma coisa que Active Directory?

Não.

Kerberos é um protocolo de autenticação.

Active Directory é um serviço de diretório da Microsoft.

O Active Directory usa Kerberos como um dos principais métodos de autenticação.

Resumo:

NomeO que é
KerberosProtocolo de autenticação
Active DirectoryServiço de diretório da Microsoft
LDAPProtocolo de consulta ao diretório

Kerberos usa TCP ou UDP?

O Kerberos pode usar UDP e TCP.

A porta principal é:

88

Normalmente:

88/UDP
88/TCP

Outras portas relacionadas podem aparecer em ambientes Active Directory.

Resumo:

ServiçoPorta comumProtocolo
Kerberos88TCP/UDP
Kerberos password change464TCP/UDP

Kerberos usa TLS ou SSL?

O Kerberos não depende de TLS ou SSL para funcionar.

Ele usa seu próprio modelo de autenticação baseado em criptografia e tickets.

Mesmo assim, em ambientes corporativos, ele pode trabalhar junto com outros protocolos seguros.

Exemplos:

Kerberos para autenticação.
LDAP ou LDAPS para consulta ao diretório.
SMB com autenticação Kerberos.
Active Directory usando Kerberos e LDAP.


O que é Realm no Kerberos?

Realm é o domínio administrativo do Kerberos.

Normalmente, o realm é escrito em letras maiúsculas.

Exemplo:

EMPRESA.COM

Um usuário Kerberos pode ser representado assim:

usuario@EMPRESA.COM

O realm identifica a qual domínio Kerberos aquele usuário pertence.


O que é Principal no Kerberos?

Principal é a identidade de um usuário ou serviço no Kerberos.

Exemplo de usuário:

joao@EMPRESA.COM

Exemplo de serviço:

HTTP/servidor.empresa.com@EMPRESA.COM

Exemplo de serviço SMB:

cifs/servidor.empresa.com@EMPRESA.COM

O principal é usado para identificar quem está solicitando ou oferecendo um serviço.


O que é Keytab no Kerberos?

Keytab é um arquivo que armazena chaves de autenticação para serviços.

Ele permite que serviços autentiquem no Kerberos sem precisar digitar senha manualmente.

Exemplo de arquivo:

/etc/krb5.keytab

 

O keytab deve ser protegido, pois contém chaves sensíveis.


O que é Single Sign-On no Kerberos?

Single Sign-On, ou SSO, significa autenticação única.

Com Kerberos, o usuário faz login uma vez e pode acessar vários serviços sem digitar a senha novamente.

Exemplo:

O usuário entra no computador.
Recebe um TGT.
Acessa servidor de arquivos.
Acessa sistema interno.
Acessa banco de dados.

Tudo isso pode acontecer sem pedir a senha várias vezes.


Como instalar cliente Kerberos no Linux?

No Debian, Ubuntu e derivados:

sudo apt update
sudo apt install krb5-user

Também pode ser útil instalar ferramentas adicionais:

sudo apt install krb5-config

Durante a instalação, pode ser solicitado o realm padrão.

Exemplo:

EMPRESA.COM

Como configurar Kerberos no Linux?

O arquivo principal de configuração é:

/etc/krb5.conf

Para editar:

sudo nano /etc/krb5.conf

Exemplo básico:

[libdefaults]
    default_realm = EMPRESA.COM
    dns_lookup_realm = false
    dns_lookup_kdc = true

[realms]
    EMPRESA.COM = {
        kdc = servidor.empresa.com
        admin_server = servidor.empresa.com
    }

[domain_realm]
    .empresa.com = EMPRESA.COM
    empresa.com = EMPRESA.COM

Depois, teste a autenticação com kinit.


Como obter um ticket Kerberos?

Use o comando:

kinit usuario@EMPRESA.COM

Exemplo:

kinit joao@EMPRESA.COM

O sistema solicitará a senha.

Se estiver correto, um ticket será gerado.


Como listar tickets Kerberos?

Use:

klist

Esse comando mostra os tickets ativos do usuário.

Exemplo de saída:

Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: joao@EMPRESA.COM

Como remover tickets Kerberos?

Use:

kdestroy

Esse comando remove os tickets Kerberos ativos da sessão.

Depois disso, será necessário executar kinit novamente para obter novos tickets.


Como renovar um ticket Kerberos?

Use:

kinit -R

Esse comando tenta renovar o ticket atual, se ele ainda for renovável.

Verificar tickets:

klist

Como testar autenticação Kerberos?

Solicitar ticket:

kinit usuario@EMPRESA.COM

Listar tickets:

klist

Testar serviço que usa Kerberos, por exemplo SMB:

smbclient -k //servidor/compartilhamento

Testar resolução DNS:

nslookup servidor.empresa.com

Testar porta Kerberos:

nc -vz servidor.empresa.com 88

Como configurar horário para Kerberos?

Kerberos depende de horário sincronizado.

Se cliente e servidor estiverem com horários muito diferentes, a autenticação pode falhar.

Verificar horário:

timedatectl

Ativar sincronização:

sudo timedatectl set-ntp true

Verificar serviço de tempo:

timedatectl status

Em servidores, também é comum usar NTP ou chrony.

Instalar chrony:

sudo apt install chrony

Verificar status:

systemctl status chrony

Diferença entre Kerberos, LDAP e NTLM

TecnologiaFunçãoObservação
KerberosAutenticação por ticketsMais seguro e comum em domínio
LDAPConsulta de diretóriosBusca usuários, grupos e atributos
NTLMAutenticação antiga da MicrosoftMenos recomendado que Kerberos

Em redes Windows modernas, Kerberos é preferido ao NTLM.


Diferença entre Kerberos, LDAP e Active Directory

TecnologiaO que faz
KerberosAutentica usuários e serviços
LDAPConsulta e gerencia diretórios
Active DirectoryIntegra Kerberos, LDAP, DNS e políticas

O Active Directory usa Kerberos para autenticação e LDAP para consultas ao diretório.


Erros comuns no Kerberos

Client not found in Kerberos database

Erro:

Client not found in Kerberos database

Possíveis causas:

Usuário não existe no realm.
Realm incorreto.
Principal digitado errado.
Configuração /etc/krb5.conf incorreta.

Verificar realm:

cat /etc/krb5.conf

Testar com usuário completo:

kinit usuario@EMPRESA.COM

KDC reply did not match expectations

Erro:

KDC reply did not match expectations

Possíveis causas:

Realm escrito incorretamente.
Domínio configurado errado.
DNS retornando servidor incorreto.
Cliente usando realm diferente do esperado.

Verificar configuração:

cat /etc/krb5.conf

Testar DNS:

nslookup servidor.empresa.com

Testar realm com letras maiúsculas:

kinit usuario@EMPRESA.COM

Clock skew too great

Erro:

Clock skew too great

Possíveis causas:

Horário do cliente diferente do servidor.
NTP desativado.
Fuso horário incorreto.
Servidor de tempo inacessível.

Verificar horário:

timedatectl

Ativar sincronização:

sudo timedatectl set-ntp true

Sincronizar com chrony:

sudo systemctl restart chrony

Cannot contact any KDC for realm

Erro:

Cannot contact any KDC for realm

Possíveis causas:

Servidor KDC fora do ar.
DNS incorreto.
Porta 88 bloqueada.
Firewall bloqueando.
Realm configurado errado.

Testar porta:

nc -vz servidor.empresa.com 88

Testar DNS:

nslookup servidor.empresa.com

Verificar configuração:

cat /etc/krb5.conf

Preauthentication failed

Erro:

Preauthentication failed

Possíveis causas:

Senha incorreta.
Conta bloqueada.
Chave do usuário desatualizada.
Problema de política no domínio.

Testar novamente:

kinit usuario@EMPRESA.COM

Verificar se a senha funciona em outro sistema, como login no domínio.


Server not found in Kerberos database

Erro:

Server not found in Kerberos database

Possíveis causas:

Principal do serviço não existe.
SPN não configurado.
Nome do servidor usado está diferente do registrado.
DNS ou hostname incorreto.

Verificar nome do servidor:

hostname -f

Testar DNS:

nslookup servidor.empresa.com

Verificar acesso usando FQDN:

smbclient -k //servidor.empresa.com/compartilhamento

Key table entry not found

Erro:

Key table entry not found

Possíveis causas:

Keytab ausente.
Principal do serviço não está no keytab.
Arquivo /etc/krb5.keytab incorreto.
Permissões incorretas no keytab.

Listar keytab:

sudo klist -k /etc/krb5.keytab

Verificar permissões:

ls -l /etc/krb5.keytab

Permission denied usando Kerberos

Erro:

Permission denied

Possíveis causas:

Usuário autenticou, mas não tem autorização.
Ticket válido, mas sem permissão no serviço.
Grupo incorreto.
ACL bloqueando acesso.
Serviço não aceita autenticação Kerberos corretamente.

Verificar tickets:

klist

Verificar grupos no domínio ou diretório.
Testar acesso com usuário autorizado.


Como testar se o Kerberos está funcionando?

Verificar configuração:

cat /etc/krb5.conf

Testar DNS:

nslookup servidor.empresa.com

Testar porta Kerberos:

nc -vz servidor.empresa.com 88

Obter ticket:

kinit usuario@EMPRESA.COM

Listar tickets:

klist

Testar um serviço Kerberos:

smbclient -k //servidor.empresa.com/compartilhamento

Remover tickets ao final:

kdestroy

Comandos principais relacionados ao Kerberos

ComandoFunção
kinit usuario@REALMObtém ticket Kerberos
klistLista tickets ativos
kdestroyRemove tickets ativos
kinit -RRenova ticket Kerberos
kpasswdAltera senha Kerberos
kadminAdministra Kerberos
kadmin.localAdministra Kerberos localmente no servidor
klist -k /etc/krb5.keytabLista entradas do keytab
nc -vz servidor 88Testa porta Kerberos
timedatectlVerifica horário do sistema

Exemplo completo de uso

Instalar cliente Kerberos:

sudo apt update
sudo apt install krb5-user

Editar configuração:

sudo nano /etc/krb5.conf

Exemplo de configuração:

[libdefaults]
    default_realm = EMPRESA.COM
    dns_lookup_realm = false
    dns_lookup_kdc = true

Testar DNS do servidor:

nslookup servidor.empresa.com

Testar porta Kerberos:

nc -vz servidor.empresa.com 88

Obter ticket:

kinit usuario@EMPRESA.COM

Listar tickets:

klist

Acessar serviço usando Kerberos, exemplo SMB:

smbclient -k //servidor.empresa.com/compartilhamento

Remover tickets:

kdestroy

Esse exemplo configura o cliente Kerberos, obtém um ticket, testa a autenticação e acessa um serviço usando Kerberos.


Boas práticas de segurança

Manter horário sincronizado entre cliente e servidor.
Usar senhas fortes.
Proteger o servidor KDC.
Restringir acesso administrativo ao KDC.
Proteger arquivos keytab.
Evitar usar contas administrativas em serviços comuns.
Usar tickets com tempo de validade adequado.
Monitorar tentativas de autenticação falhas.
Usar Kerberos em vez de métodos antigos como NTLM, quando possível.
Integrar corretamente com LDAP ou Active Directory.
Manter sistemas e serviços atualizados.
Não expor serviços Kerberos desnecessariamente para redes públicas.