O protocolo Kerberos foi desenvolvido como parte do Projeto Athena do MIT (Massachussets Institute of Technology). Atualmente o projeto encontra-se na versão 5. O desenvolvimento conduzido por Clifford Neuman e John Kohl com muitas contribuições da comunidade. Ele é baseado no algoritmo de encriptação DES (Data Encryption Standard).
Uma curiosidade sobre seu nome que vem da mitologia. Cerberus é um cão com três cabeças que tem por missão proteger a entrada do inferno de Hades. Assim como o cão da mitologia seu funcionamento está ligado a três partes:
- AS (Authenticator Server)
- TGS (Ticket Granting Ticket )
- SS (Server of Service)
O Kerberos fornece um meio de verificar as credenciais de usuários em um modelo de aplicações cliente-servidor. Aplicado principalmente por controladores de domínio como o AD Microsoft e Samba como PDC. Ele opera como terceira parte neste processo, oferecendo autenticação ao usuário de forma segura. Ele executa a autenticação usando criptografia convencional de chave simétrica. Neste processo a mesma chave usada para criptografar e usada para descriptografar.
Funcionamento
O Kerberos prove serviço de autenticação de usuários a serviço ou aplicações. O usuário informa um ticket, que contém suas credenciais (usuário e senha), fornecida pelo Kerberos Authenticator Server (AS). O AS podemos comparar ao emissor da carteira de habilitação o DETRAN. O serviço então examina o ticket para verificar a identidade do usuário. Se suas credenciais forem validas o usuário e aceito.
O Kerberos opera com três partes servidoras:
- AS – Authenticator Server:
- Mantém uma base de dados de chaves de sessão. Estas chaves são obtidas quando o usuário envia suas credenciais ao AS. Ao receber a mensagem, ele faz duas cópias de uma nova chave de sessão. Estas chaves serão usadas nas trocas diretas entre serviço e usuário.
- TGS – Ticket Granting Server:
- O TGS deve estar presente na mesma máquina servidora que o AS. Ele é logicamente distinto do AS assim tem como função fazer com que antes de acessar qualquer serviço. O usuário requisita um ticket para contatar o TGS, como se ele fosse um serviço qualquer. Este ticket é chamado de TGT (Ticket Granting Ticket). Após receber o TGT, a qualquer momento que o usuário desejar requisitar um serviço, ele irá requerer um ticket não mais do AS, mas sim ao TGS. Assim a resposta não será criptografada com a chave secreta do usuário, mas sim com a chave de sessão mantida pelo AS para ser usada entre o usuário e TGS. Ele carrega as informações tanto do cliente como a própria rede que estavam contidos no servidor AS. Dentro deste ticket existirá um timestamp.
- Timestamp: O timestamp realiza uma marcação de tempo atual do servidor. Para isso acontecer é necessário a configuração de um servidor NTP (Network Time Protocol) para manter este sincronismo. Através deste procedimento é cortada a comunicação se ela ficar inativa por muito tempo, por exemplo cinco minutos.
- O TGS deve estar presente na mesma máquina servidora que o AS. Ele é logicamente distinto do AS assim tem como função fazer com que antes de acessar qualquer serviço. O usuário requisita um ticket para contatar o TGS, como se ele fosse um serviço qualquer. Este ticket é chamado de TGT (Ticket Granting Ticket). Após receber o TGT, a qualquer momento que o usuário desejar requisitar um serviço, ele irá requerer um ticket não mais do AS, mas sim ao TGS. Assim a resposta não será criptografada com a chave secreta do usuário, mas sim com a chave de sessão mantida pelo AS para ser usada entre o usuário e TGS. Ele carrega as informações tanto do cliente como a própria rede que estavam contidos no servidor AS. Dentro deste ticket existirá um timestamp.
- SS – Server of Service:
- É o serviço que será usado para prover a autenticação, por exemplo o Samba como PDC.
Benefícios
O Kerberos tem como principais benefícios da autenticação os seguintes itens:
- Confiança comunicação bidirecional entre os domínios envolvidos.
- Autenticação mútua de clientes e servidor durante uma sessão de autenticação.
- Autenticação delegada para interações multi-cliente/servidor.
Limitações
Como todo serviço existem várias limitações que devem ser consideradas em sua avaliação antes da implementação, assim viabilizar sua utilização.
- Os relógios devem estar sincronizados devido ao timestamp.
- Requer por parte dos clientes implementação de segura, pois a troca de chaves e realizada no diretório /tmp.
- É vulnerável contra senhas fracas.
- O Kerberos é adequado para aplicações cliente/servidor é não ponto-a-ponto.
Conclusão
Por fim fazer uma implementação de um servidores Kerberos adiciona um nível a mais na segurança da informação. Autenticidade é sua característica fundamental. Nesta estrutura mesmo que um Cracker de alguma forma capture um pacote. Ele não terá tempo para descobrir a informação contida no pacote capturado através de forca bruta com dicionario de palavras. A cada oito horas o ticket perderá seu valor é deverá ser renovado.
Fazer uso deste servidor é importante. Algumas particularidades deve se levar em conta, pois existem situações que o Kerberos não irá garantir proteção. Por exemplo em ataques DoS, DDoS, Engenharia Social ou simplesmente perda de senha.
Referências
https://www.profissionaisti.com.br/2011/11/conhecendo-o-protocolo-de-rede-kerberos/
https://www.ietf.org/rfc/rfc4120.txt
http://www.gta.ufrj.br/grad/99_2/marcos/kerberos.htm