KERBEROS Luiz Antonio Dias Moreira Rodrigo dos Santos de Oliveira Luciano Carlos Thomaz Coelho Juliana Oliveira Parmanhani Anderson Pinto Ramalho O QUE É O KERBEROS? É um protocolo de redes desenvolvido pelo MIT (Massachusetts Institute of Technology). Tem por objetivo prover uma autenticação forte através da utilização de criptografia simétrica. O objetivo do Kerberos é justamente solucionar problemas de segurança, sem trazer restrições indevidas. Utiliza uma criptografia forte, que não permite a interceptação de senhas por terceiros, autenticando usuários e serviços, e transmitindo todos os dados criptografados, de forma a assegurar a privacidade e integridade dos dados. PRINCIPAIS REQUISITOS DO KERBEROS A segurança: evita a espionagem ou modificação dos dados. A confiabilidade: que diz respeito a questão da mútua autenticação. A escalabilidade: que refere-se ao fato de que deve ser um sistema capaz de funcionar tanto com redes pequenas quanto com redes muito grandes. A transparência: as operações ocorrem automaticamente, ou seja, sem que o usuário precise tomar parte ou conhecimento em todos os momentos. VANTAGENS O Kerberos foi desenvolvido para solucionar problemas, oferecendo soluções práticas e inteligentes. Seu código é aberto. Trabalha com distribuição de ticket. É mais vantajoso para os servidores - não precisam se conectar a um controlador de domínio para identificar o usuário, bastando, apenas, verificar o ticket apresentado pelo cliente. VANTAGENS Permite a mútua autenticação, ou seja, o cliente se identifica para o servidor, e o servidor também precisa se identificar para o cliente, com o seu próprio ticket de serviço. Todas as operações são feitas de forma transparente, bastando digitar a senha uma única vez. Existe a opção enviar todos os dados criptografados, o que representa mais uma vantagem dentro da área de segurança. MÓDULOS DO KERBEROS Biblioteca de aplicações - Gera a interface para as aplicações com cliente e com servidores. Biblioteca de criptografia - Baseada principalmente no DES (Data Encryption Standard). Pode ser substituída por outras que realizem a criptografia por algum outro algoritmo criptográfico (Triple DES, AES, RC4 e Arcfour). Biblioteca para a base de dados - Por padrão, utiliza-se o ndbm, embora outras bibliotecas também possam ser usadas. MÓDULOS DO KERBEROS Base de dados para os programas do administrador - A base de dados do Kerberos precisa conter um registro para cada Principal. Esses registros devem conter os campos nome, chave privada, data de expiração do Principal, e algumas informações administrativas Servidor do Administrador - provê uma interface na rede de leitura e escrita entre o cliente e a base de dados. MÓDULOS DO KERBEROS Servidor para autenticação - faz a autenticação dos usuários, tendo permissão apenas de leitura da base de dados. Além disso, ele gera as chaves de sessão, que serão entregues a dois clientes que desejam se comunicar. Software para propagação da base de dados - Vai fazer a atualização entre a base de dados do servidor master e os slaves que abrigam os servidores Kerberos , periodicamente. Programas para os usuários - Programas para fazer o login, trocar de senha, entre outros. PRINCIPAL É uma entidade única para a qual o Kerberos pode emitir os tickets. Identifica cada cliente, servidor e serviço dentro do Kerberos. O principal é constituído de três partes, dispostas como primary/instance@REALM. primary é o campo que possui o nome do usuário ou do tipo de serviço. PRINCIPAL instance possui informações adicionais sobre o primary. dois principals podem ter senhas e permissões diferentes. Exemplo: Usuário comum: [email protected] Administrador: joao/[email protected] Para um host, esse campo deve trazer uma qualificação completa da máquina que está oferecendo o serviço Exemplo: ‘host/[email protected]’ realm costuma ser denominado pelo nome do domínio em caixa alta. TICKETS Os tickets são como credenciais para o Kerberos. Eles possuem um grupo de informações eletrônicas que permitem verificar a identidade do cliente, e dão autorização ao cliente para o uso de determinadas áreas as quais ele tem direito a acessar. Esses tickets podem ser guardados em um arquivo, ou ainda existir apenas na memória. ESTRUTURA DE UM TICKET Um ticket é formado por campos específicos: o nome do servidor, o nome do cliente, o endereço do cliente, a estampa de tempo, e uma chave de sessão randômica. PROPRIEDADES DO TICKET Forwardable Ticket Proxiable Ticket Proxy Ticket Postdated Ticket Renewable Ticket Anonymous Ticket OBTENDO UM TICKET INICIAL Para utilizar o Kerberos o cliente precisa se autenticar. cliente envia um pedido ao KDC, também chamado de Ticket Granting Server (TGS) contendo o seu nome e um pedido de serviço com o nome de ticket-granting service . O servidor de autenticação cria uma chave de sessão e um TGT e criptografa tudo isso com a senha do cliente. KDC envia o TGT para quem o requisitou. ESTRUTURA DO TGT BASE DE DADOS A base de dados do Kerberos é composta pelas chaves dos usuários e pelas chaves de cada serviço em cada servidor. Elas serão usadas, pelo TGS para fazer toda a troca de tickets e chaves de sessão. O arquivo onde são guardadas essas chaves é chamado de ‘keytab’. Esse arquivo guarda esses valores associados aos seus principals. Cada domínio administrativo, ou realm, possui sua própria base de dados, contendo as informações sobre os usuários e serviços. SERVIDOR KDBM O KDBM, além de atender a requisições administrativas, o que pode ser, por exemplo, a adição de um novo principal, também deve realizar serviços como a mudança de senha, utilizando respectivamente os programas ‘kadmin’ e ‘kpasswd’. Para realizar operações como essas, o ticket a ser utilizado não deve ser obtido com o TGS, mas com o servidor de autenticação, para obrigar o usuário a redigitar a sua senha. SERVIDOR KDBM Ao receber um pedido, o KDBM observa se o ticket que está recebendo autenticando o principal do usuário equivale ao mesmo principal para o qual está sendo requisitado o serviço. Se eles forem equivalentes, o serviço será autorizado. Caso contrário, o KDBM irá consultar uma lista de controle de acesso, para verificar se aquele usuário tem direito a realizar tal ação. 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ários de um banco de dados UNIX para o Kerberos pode ser entediante, pois não há um mecanismo automatizado para executar esta tarefa. O Kerberos tem apenas compatibilidade parcial com os Módulos de Autenticação Plugáveis (PAM), sistema usado pela maioria dos servidores Red Hat Enterprise Linux. DESVANTAGENS DO KERBEROS 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. No entanto, se alguém além do usuário legítimo tiver acesso à máquina que emite tickets usados para autenticação o sistema de autenticação inteiro do Kerberos estará em risco. 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ãokerberizado estão em risco. DESVANTAGENS DO KERBEROS 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 outros são incompatíveis. Aplicativos de código fechado que não têm suporte ao Kerberos por padrão são geralmente os mais problemáticos. PROBLEMAS ENCONTRADOS Para se utilizar o Kerberos, é necessário tomar algumas decisões sobre algumas questões cruciais, para as quais uma escolha errada pode comprometer a segurança de todo o sistema. Algumas dessas escolhas: tempo de duração de um ticket, a escolha de quais proxies devem ser autorizados, e como garantir a integridade física de algumas máquinas, como os servidores de autenticação.