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çoCaracterí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:
| Componente | Função |
|---|---|
| AS | Authentication Server |
| TGS | Ticket 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 → TGTO 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çoO 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 TGTO 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 arquivosFuncionamento 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 → TGT2. 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ço3. 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 liberadoKerberos 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:
| Tecnologia | Função |
|---|---|
| Kerberos | Autenticação por tickets |
| LDAP | Consulta e gerenciamento de diretórios |
| Active Directory | Usa 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:
| Nome | O que é |
|---|---|
| Kerberos | Protocolo de autenticação |
| Active Directory | Serviço de diretório da Microsoft |
| LDAP | Protocolo de consulta ao diretório |
Kerberos usa TCP ou UDP?
O Kerberos pode usar UDP e TCP.
A porta principal é:
88Normalmente:
88/UDP
88/TCPOutras portas relacionadas podem aparecer em ambientes Active Directory.
Resumo:
| Serviço | Porta comum | Protocolo |
|---|---|---|
| Kerberos | 88 | TCP/UDP |
| Kerberos password change | 464 | TCP/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.COMUm usuário Kerberos pode ser representado assim:
usuario@EMPRESA.COMO 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.COMExemplo de serviço:
HTTP/servidor.empresa.com@EMPRESA.COMExemplo de serviço SMB:
cifs/servidor.empresa.com@EMPRESA.COMO 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-userTambém pode ser útil instalar ferramentas adicionais:
sudo apt install krb5-configDurante a instalação, pode ser solicitado o realm padrão.
Exemplo:
EMPRESA.COMComo configurar Kerberos no Linux?
O arquivo principal de configuração é:
/etc/krb5.confPara editar:
sudo nano /etc/krb5.confExemplo 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.COMDepois, teste a autenticação com kinit.
Como obter um ticket Kerberos?
Use o comando:
kinit usuario@EMPRESA.COMExemplo:
kinit joao@EMPRESA.COMO sistema solicitará a senha.
Se estiver correto, um ticket será gerado.
Como listar tickets Kerberos?
Use:
klistEsse comando mostra os tickets ativos do usuário.
Exemplo de saída:
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: joao@EMPRESA.COMComo remover tickets Kerberos?
Use:
kdestroyEsse 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 -REsse comando tenta renovar o ticket atual, se ele ainda for renovável.
Verificar tickets:
klistComo testar autenticação Kerberos?
Solicitar ticket:
kinit usuario@EMPRESA.COMListar tickets:
klistTestar serviço que usa Kerberos, por exemplo SMB:
smbclient -k //servidor/compartilhamentoTestar resolução DNS:
nslookup servidor.empresa.comTestar porta Kerberos:
nc -vz servidor.empresa.com 88Como 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:
timedatectlAtivar sincronização:
sudo timedatectl set-ntp trueVerificar serviço de tempo:
timedatectl statusEm servidores, também é comum usar NTP ou chrony.
Instalar chrony:
sudo apt install chronyVerificar status:
systemctl status chronyDiferença entre Kerberos, LDAP e NTLM
| Tecnologia | Função | Observação |
|---|---|---|
| Kerberos | Autenticação por tickets | Mais seguro e comum em domínio |
| LDAP | Consulta de diretórios | Busca usuários, grupos e atributos |
| NTLM | Autenticação antiga da Microsoft | Menos recomendado que Kerberos |
Em redes Windows modernas, Kerberos é preferido ao NTLM.
Diferença entre Kerberos, LDAP e Active Directory
| Tecnologia | O que faz |
|---|---|
| Kerberos | Autentica usuários e serviços |
| LDAP | Consulta e gerencia diretórios |
| Active Directory | Integra 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 databasePossí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.confTestar com usuário completo:
kinit usuario@EMPRESA.COMKDC reply did not match expectations
Erro:
KDC reply did not match expectationsPossí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.confTestar DNS:
nslookup servidor.empresa.comTestar realm com letras maiúsculas:
kinit usuario@EMPRESA.COMClock skew too great
Erro:
Clock skew too greatPossíveis causas:
Horário do cliente diferente do servidor.
NTP desativado.
Fuso horário incorreto.
Servidor de tempo inacessível.
Verificar horário:
timedatectlAtivar sincronização:
sudo timedatectl set-ntp trueSincronizar com chrony:
sudo systemctl restart chronyCannot contact any KDC for realm
Erro:
Cannot contact any KDC for realmPossíveis causas:
Servidor KDC fora do ar.
DNS incorreto.
Porta 88 bloqueada.
Firewall bloqueando.
Realm configurado errado.
Testar porta:
nc -vz servidor.empresa.com 88Testar DNS:
nslookup servidor.empresa.comVerificar configuração:
cat /etc/krb5.confPreauthentication failed
Erro:
Preauthentication failedPossíveis causas:
Senha incorreta.
Conta bloqueada.
Chave do usuário desatualizada.
Problema de política no domínio.
Testar novamente:
kinit usuario@EMPRESA.COMVerificar se a senha funciona em outro sistema, como login no domínio.
Server not found in Kerberos database
Erro:
Server not found in Kerberos databasePossí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 -fTestar DNS:
nslookup servidor.empresa.comVerificar acesso usando FQDN:
smbclient -k //servidor.empresa.com/compartilhamentoKey table entry not found
Erro:
Key table entry not foundPossí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.keytabVerificar permissões:
ls -l /etc/krb5.keytabPermission denied usando Kerberos
Erro:
Permission deniedPossí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:
klistVerificar 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.confTestar DNS:
nslookup servidor.empresa.comTestar porta Kerberos:
nc -vz servidor.empresa.com 88Obter ticket:
kinit usuario@EMPRESA.COMListar tickets:
klistTestar um serviço Kerberos:
smbclient -k //servidor.empresa.com/compartilhamentoRemover tickets ao final:
kdestroyComandos principais relacionados ao Kerberos
| Comando | Função |
|---|---|
kinit usuario@REALM | Obtém ticket Kerberos |
klist | Lista tickets ativos |
kdestroy | Remove tickets ativos |
kinit -R | Renova ticket Kerberos |
kpasswd | Altera senha Kerberos |
kadmin | Administra Kerberos |
kadmin.local | Administra Kerberos localmente no servidor |
klist -k /etc/krb5.keytab | Lista entradas do keytab |
nc -vz servidor 88 | Testa porta Kerberos |
timedatectl | Verifica horário do sistema |
Exemplo completo de uso
Instalar cliente Kerberos:
sudo apt update
sudo apt install krb5-userEditar configuração:
sudo nano /etc/krb5.confExemplo de configuração:
[libdefaults]
default_realm = EMPRESA.COM
dns_lookup_realm = false
dns_lookup_kdc = trueTestar DNS do servidor:
nslookup servidor.empresa.comTestar porta Kerberos:
nc -vz servidor.empresa.com 88Obter ticket:
kinit usuario@EMPRESA.COMListar tickets:
klistAcessar serviço usando Kerberos, exemplo SMB:
smbclient -k //servidor.empresa.com/compartilhamentoRemover tickets:
kdestroyEsse 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.