ALT Linux

Kerberos

Kerberos

A segurança e a integridade de sistemas dentro de uma rede podem ser difíceis de administrar. Acompanhar os serviços sendo executados em uma rede, assim como a maneira como os mesmos estejam sendo usados pode ocupar o tempo de vários administradores.

Além disso, a autenticação de usuários a serviços de rede pode representar um perigo quando o método usado pelo protocolo é inerentemente inseguro, conforme evidenciado pela transferência de senhas não criptografadas através de uma rede usando os protocolos FTP ou Telnet.

O Kerberos é uma maneira de eliminar a necessidade de usar protocolos que permitam métodos de autenticação inseguros, melhorando assim a segurança geral da rede. 


O que é o Kerberos?

O Kerberos é um protocolo de autenticação de rede criado pelo MIT, que utiliza criptografia de chave simétrica para autenticar usuários a serviços de rede, o que significa que as senhas em si nunca são enviadas através da rede.

Conseqüentemente, quando usuários se autenticam em serviços de rede usando o Kerberos, os usuários não autorizados, que estão tentando obter senhas através da monitoração do tráfego de rede, são impedidos de forma efetiva.

Vantagens do Kerberos

A maioria dos serviços de rede convencionais usa esquemas de autenticação de senhas. Estes esquemas requerem que o usuário se autentique em uma rede fornecendo seu nome de usuário e senha. Infelizmente, o envio de informações de autenticação para diversos serviços, é realizado sem criptografia. Para que um esquema destes seja seguro, a rede deve estar inacessível para pessoas de fora, assim como todos os computadores e usuários da rede devem ser confiáveis.

Mesmo se este for o caso, uma vez que a rede está conectada à Internet, não pode mais ser considerada segura. Qualquer atacante que obtiver acesso à rede pode usar um simples analisador de pacotes (também conhecido como 'packet sniffer') para interceptar nomes de usuários e senhas enviados desta maneira, assim comprometendo as contas de usuários e a integridade de toda a infraestrutura de segurança.

O objetivo principal do design do Kerberos é a eliminação da transmissão de senhas não criptografadas através da rede. Se for usado adequadamente, o Kerberos elimina efetivamente a ameaça que programas tipo packet sniffers representariam à rede caso o Kerberos não fosse usado.


Desvantagens do Kerberos

Apesar do Kerberos eliminar uma ameaça severa e comum, pode ser de difícil implementação devido à uma gama de motivos:

  • Migrar senhas de usuário de um banco de dados UNIX padrão, como o /etc/passwd ou o /etc/shadow, para um banco de dados de senhas Kerberos pode ser entediante, pois não há um mecanismo automatizado para executar esta tarefa. Para mais informações, consulte a Questão 2.23 no FAQ online do Kerberos:

    http://www.nrl.navy.mil/CCS/people/kenh/kerberos-faq.html

  • O Kerberos presume que cada usuário é confiável e está usando uma máquina não confiável em uma rede não confiável. Seu objetivo principal é evitar que senhas não criptografadas sejam enviadas pela rede. No entanto, se alguém além do usuário legítimo tiver acesso à máquina que emite tickets usados para autenticação — chamada de centro de distribuição de chave (KDC) — o sistema de autenticação inteiro do Kerberos estará em risco.

  • Para que um aplicativo use o Kerberos, sua fonte deve ser alterada para fazer as chamadas apropriadas às bibliotecas do Kerberos. Os aplicativos modificados desta maneira são considerados kerberizados. Para alguns aplicativos, isto pode ser bastante problemático devido ao tamanho ou design do aplicativo. Para outros aplicativos incompatíveis, as alterações devem ser feitas na maneira como o lado servidor e cliente se comunicam. Vale frisar que isto pode requerer uma programação extensiva. Aplicativos de código fechado que não têm suporte ao Kerberos por padrão são geralmente os mais problemáticos.

  • O Kerberos é uma solução 'tudo ou nada'. Se ele for utilizado na rede, quaisquer senhas não criptografadas transferidas a um serviço não-kerberizado estão em risco. Portanto, a rede não se beneficia do uso do Kerberos. Para proteger uma rede com o Kerberos, deve-se utilizar versões kerberizadas de todos os aplicativos cliente/servidor que enviam senhas não criptografadas ou não usar nenhum aplicativo do tipo cliente/servidor.


Terminologia do Kerberos

O Kerberos tem sua própria terminologia para definir os diversos aspectos do serviço. Antes de aprender como o Kerberos funciona, é importante aprender os seguintes termos.

servidor de autenticações - (AS)

Um servidor que emite os tickets para um serviço desejado, que por sua vez são dados para usuários acessarem o serviço. O AS responde aos pedidos de clientes que não têm ou não enviam as credenciais com um pedido. É usado geralmente para obter acesso ao serviço Servidor de Concessão de Ticket (Ticket-Granting Server), ou simplesmente TGS, emitindo um Ticket de Concessão de Tickets (Ticket-Granting Ticket), ou TGT. O AS geralmente roda no mesmo host que o Centro de Distribuição de Chaves (Key Distribution Center), ou KDC.

texto criptografado (ciphertext)

Dados criptografados.

cliente

Uma entidade na rede (um usuário, uma máquina ou um aplicativo) que pode receber um ticket do Kerberos.

credenciais

Um conjunto temporário de credenciais eletrônicas que verificam a identidade de um cliente para um determinado serviço. Também chamadas de tickets.

cache das credenciais ou arquivo de tickets

Um arquivo que contém as chaves para criptografar as comunicações entre um usuário e vários serviços de rede. O Kerberos 5 suporta uma estrutura de trabalho para usar outros tipos de cache, como memória compartilhada, mas os arquivos são melhor suportados.

crypt hash

Um hash de mão única usado para autenticar usuários. Estes são mais seguros do que usar dados não criptografados, mas para um cracker experiente eles ainda são relativamente fáceis de decifrar. (AS) -

GSS-API

'The Generic Security Service Application Program Interface' (definida na RFC-2743 publicada pela The Internet Engineering Task Force) é um conjunto de funções, que oferece serviços de segurança usados por clientes para se autenticarem nos serviços. Esta API também é usada pelos clientes e serviços para autenticação mútua sem a necessidade de que os mesmos tenham conhecimento específico sobre o mecanismo subjacente de cada um. Se um serviço de rede (como o cyrus-IMAP) usa a GSS-API, o mesmo pode autenticar usando o Kerberos.

hash

Também chamado de valor de hash. Um valor gerado passando uma faixa por uma função de hash. Estes valores são tipicamente usados para garantir que os dados transmitidos não tenham sido adulterados.

função de hash

Uma forma de gerar uma "impressão digital" a partir de dados de entrada. Estas funções reorganizam, transpõem, ou de alguma outra forma alteram dados para produzir um valor de hash.

chave

Informação usada ao criptografar ou descriptografar outros dados. Dados criptografados não podem ser descriptografados sem a chave apropriada ou através de muita sorte por parte do cracker.

centro de distribuição de chave (KDC)

Um serviço que emite tickets do Kerberos e geralmente roda no mesmo host que o servidor de concessão de ticket (TGS).

keytab (ou keytable)

Um arquivo que contém uma lista não criptografada de principais e suas chaves. Servidores obtém as chaves necessárias dos arquivos keytab ao invés de usar o kinit. O arquivo keytab padrão é o /etc/krb5.keytab. O servidor de administração do KDC, /usr/kerberos/sbin/kadmind, é o único serviço que usa qualquer outro arquivo (usa o /var/kerberos/krb5kdc/kadm5.keytab).

kinit

O comando kinit permite que um principal que já tenha se conectado obtenha o ticket de concessão de ticket (TGT) inicial e armazene-o no cache. Para mais informações sobre o uso do comando kinit, consulte sua página man.

principal (ou nome do principal)

O principal é o nome único de um usuário ou serviço com permissão para autenticar usando o Kerberos. Um principal segue o formato root[/instance]@REALM. Para um usuário típico, a raiz (root) é a mesmo que seu ID de autenticação. A instance (instância) é opcional. Se o principal tiver uma instância, a mesma será separada da raiz por uma barra ("/"). Uma faixa vazia ("") é considerada uma instância válida (a qual difere da instância padrão NULL), mas usá-la pode ser confuso. Todos os principais em um território (realm) têm suas próprias chaves que, para os usuários, são derivadas de uma senha, ou são definidas randomicamente para os serviços.

território (realm)

Uma rede que usa o Kerberos, composta de um ou mais servidores - chamados KDCs - e um número potencialmente grande de clientes.

serviço

Um programa acessado através da rede.

ticket

Um conjunto temporário de credenciais eletrônicas que verificam a identidade de um cliente para um determinado serviço. Também chamado de credenciais.

servidor de concessão de ticket (TGS)

Um servidor que emite tickets para um serviço desejado, que por sua vez são dados aos usuários para acessarem um serviço. O TGS geralmente roda na mesma máquina que o KDC.

ticket de concessão de ticket (TGT)

Um ticket especial que permite ao cliente obter tickets adicionais sem requisitá-los pelo KDC.

senha não criptografada

Uma senha em formato de texto simples, legível.

Como o Kerberos Funciona

O Kerberos difere dos métodos de autenticação nome do usuário/senha porque, ao invés de autenticar cada usuário para cada serviço de rede, o Kerberos utiliza criptografia simétrica e um terceiro elemento confiável (um KDC) para autenticar usuários a um conjunto de serviços de rede. Quando um usuário autenticar no KDC, este envia um ticket específico para esta sessão de volta para a máquina do usuário, e quaisquer serviços kerberizados procuram o ticket na máquina do usuário ao invés de pedir que o usuário se autentique usando uma senha.

Quando um usuário de uma rede kerberizada se autentica em sua estação de trabalho, seu principal é enviado ao KDC como parte de um pedido de TGT ao Servidor de Autenticação (AS). Este pedido pode ser enviado pelo programa de login, sendo assim transparente para o usuário, ou pode ser enviado pelo programa kinit após o usuário se logar.

O KDC então verifica o principal em seu banco de dados. Se o principal é encontrado, o KDC cria um TGT, que é criptografado usando a chave do usuário, e retornado para o usuário.

O programa de autenticação ou kinit no cliente,descriptografa então o TGT usando a chave do usuário, computada a partir da senha do usuário. A chave do usuário é usada somente na máquina cliente e não é enviada através da rede.

O TGT é configurado para expirar após um período de tempo determinado (geralmente dez horas) e armazenado no cache de credenciais da máquina cliente. A expiração é definida para que um TGT comprometido seja útil para um atacante por somente um curto período de tempo. Após o TGT ter sido emitido, o usuário não precisa fornecer a sua senha até que o TGT expire ou até efetuar o logoff e então efetuar o login novamente.

Sempre que um usuário precisar de acesso a um serviço de rede, o software cliente usa o TGT para pedir um novo ticket para este serviço específico ao TGS. O ticket do serviço é então usado para autenticar o usuário de forma transparente a este serviço.



Kerberos e PAM

Atualmente, os serviços kerberizados não utilizam Módulos de Autenticação Plugáveis (PAM) — os serviços kerberizados ignoram completamente o PAM. Entretanto, os aplicativos que usam PAM podem usar o Kerberos para autenticação se o módulo pam_krb5 (oferecido no pacote pam_krb5) está instalado. O pacote pam_krb5 contém arquivos de amostra de configuração que permitem a serviços como o login e o gdm autenticarem usuários e obterem as credenciais iniciais usando suas senhas. Se o acesso a serviços de rede é sempre executado usando serviços kerberizados ou serviços que usam GSS-API, como o IMAP, a rede pode ser considerada razoavelmente segura.






Article Details

Last Updated
8th of July, 2009

Obrigado pela classificação esta resposta.

Artigos Relacionados

Não foram encontrados artigos relacionados.

Anexos

Não foram encontrados anexos.

Visitante Comentários

Nenhum visitante comentários publicados. Postar um comentário

Postar um comentário

To post a comment for this article, simply complete the form below. Fields marked with an asterisk are required.
   Nome:
   Email:
* Comentário:
* Enter the code below:
 

Continuar

Você gostaria de ...

Imprimir esta página Imprimir esta página

E-mail this page Enviar por e-mail

Postar um comentário Postar um comentário

Adicionar aos favoritos Adicionar aos favoritos

Exportar para PDF

Usuário Opiniões (0 votos)

Não utilizadores tenham votado.

Como você classificaria esta resposta?