Neste artigo procuro explicar de forma simples a estrutura do Kerberos, mostrando exemplos de cada etapa da configuração desse extraordinário sistema de segurança.
Kerberos é um sistema de autenticação que permite usuários utilizarem serviços de rede se identificando e autenticando em tempo real, utilizando um sistema seguro e criptografado.
Em um sistema convencional é requerida ao usuário uma identificação e que este usuário autentique esta identificação antes da utilização do sistema. Uma rede que conecta possíveis clientes a serviços por ela providos também precisa identificar e autenticar estes clientes, que podem ser usuários ou softwares.
O problema é que muitos serviços de rede aceitam sem questionar a autenticação provida pela máquina cliente, que está sobre total domínio do usuário. E um serviço seguro de rede não pode confiar na integridade da autenticação provida por uma máquina cliente.
Com o Kerberos, toda vez que um possível cliente for utilizar um serviço da rede, ele vai questionar sua identidade e a respectiva autenticação, permitindo ou não o uso do serviço pelo cliente. Além disso, Kerberos provê um meio criptografado de comunicação, mesmo em uma rede não segura, como a internet.
2.1. Autenticação Kerberos
O sistema de autenticação Kerberos é baseado no protocolo de autenticação de três vias e foi desenvolvido pelos membros do projeto Athena no MIT (Massachusetts Institute of Technology).
O Kerberos prove aos usuários ou serviços "ticket" que são utilizados para a identificação e chaves criptografadas para comunicação pela rede.
O Kerberos é usualmente utilizado na camada de aplicação, provendo a segurança entre o usuário e o host. Mas também pode ser usado para prover segurança entre hosts, trabalhando com os protocolos IP, TCP e UDP.
Em uma rede com Kerberos é definido um host, denominado Servidor de Autenticação, que centraliza as funções administrativas do Kerberos e é onde também está o Centro de Distribuição de Chaves (KDC). Este servidor mantém uma base de dados com todas senhas secretas dos usuários. Sendo que ele é o responsável por gerar os tickets quando dois usuários desejam se comunicar através de um meio seguro, identificando e autenticando estes usuários.
2.2. Distribuição de ticket
Quando um cliente, que pode ser um usuário ou um serviço, faz um requerimento por um "ticket" para o Centro de Distribuição de Chaves (KDC), esse cria um "ticket granting ticket" (TGT) para o cliente e o criptografa utilizando a senha secreta do usuário. Após isso, o KDC envia o TGT criptografado para o cliente. O cliente descriptografa o TGT com sua senha secreta, garantindo a sua identidade.
O ticket expira de tempos em tempos. O Kerberos permite que o cliente obtenha um outro ticket, permitindo-o continuar a utilizar o serviço. Estes requerimentos adicionais de ticket são transparentes para o usuário.
2.3. Principal
Principal é um termo do Kerberos que define uma entidade, ou seja, um usuário ou um serviço por meio de um endereço. Este endereço é comumente dividido em três partes: a primeira parte contém o nome do usuário ou do serviço, a segunda parte contém o nome do host ou nada quando se trata de um usuário e a terceira parte contém o nome do realm.
host/servico.empresab.br@SERVIDOR.EMPRESAB.BR
2.4. Rede Kerberos
Kerberos divide a rede em domínios seguros, denominados "realms". Cada realm tem seu servidor de autenticação e uma política de segurança própria. Isso permite que uma organização defina diferentes níveis de segurança, se assim desejar. A divisão dos realms também pode ser hierárquica, permitindo que cada área da organização possua um realm local vinculado ao realm central.
Essa hierarquia fica transparente para o usuário. Por exemplo, se um usuário autenticado no realm FINANCEIRO.EMPRESAA.COM requerer comunicação com o realm PESSOAL.EMPRESAA.COM, ele não precisa se autenticar novamente. A identidade do usuário é passada entre os realms internos ao realm pai EMPRESAA.
Mas se um usuário autenticado na EMPRESAA.COM for utilizar um serviço ou informação do realm SERVICO.EMPRESAB.BR, o Kerberos requer uma nova autenticação ao usuário da EMPRESAA.COM. Para que essa comunicação ocorra, as duas organizações tem que trocar chaves criptografadas dos servidores de chave. Desta forma é estabelecida uma comunicação segura através da internet, entre as duas organizações.
[2] Comentário enviado por augusto_hp em 04/11/2005 - 11:58h
Caramba meu ... este é um artigo ímpar no VOL !! A deficiência de material sobre o kerberos é enorme, e quando existe é em uma linguagem praticamente inacessível ....excelente artigo kilocan ....
Acho que temos muito o que ganhar com este artigoão aqui !!! ;D
[4] Comentário enviado por removido em 04/11/2005 - 23:04h
como disse augusto_hp, quando se acha algo sobre kerberos a linguagem é compreenssível apenas pelos "iniciados" e este artigo de qualidade contribui muito para o esclarecimento e implementação de rotinas de segurança tão inexistentes em nossas intranets e elevar ainda mais a qualidade do site.
parabéns.
[7] Comentário enviado por cassao em 07/11/2005 - 11:44h
Bem legal, parabéns.
Mas só comentando o post do augusto_hp, tem muito material na net sobre o Kerberos cara... Em inglês tem bastante, em português tem menos, mas tem.
[8] Comentário enviado por forrest1777 em 17/03/2006 - 18:23h
Gostei muito desse artigo :P
bem esclarecedor, linguagem fácil de entender, nota 10!!
só to com um problema... o Kilocan citou o seguinte: "o programa de login pode ser adicionado a inicialização do sistema"
será que alguem poderia me dizer como fazer isso???
[]'s
[9] Comentário enviado por EnzoFerber em 14/12/2006 - 00:38h
Cara, excelente artigo. Parabéns.
Só pra constar: kerberos realmente não é um cachorro de 3 cabeças... e sim Cerberus, o guardiao da entrada do Submundo. :) Pelo menos eles compartilham uma qualidade: ambos zelam pela segurança. :)