implantação de um ambiente de autenticação centralizado para
Transcrição
implantação de um ambiente de autenticação centralizado para
FLÁVIO LOPES DE MORAIS IMPLANTAÇÃO DE UM AMBIENTE DE AUTENTICAÇÃO CENTRALIZADO PARA APLICAÇÕES WEB LAVRAS-MG 2013 FLÁVIO LOPES DE MORAIS IMPLANTAÇÃO DE UM AMBIENTE DE AUTENTICAÇÃO CENTRALIZADO PARA APLICAÇÕES WEB Monografia de graduação apresentada ao Colegiado do Curso de Sistemas de Informação da Universidade Federal de Lavras, para a obtenção do título de Bacharel em Sistemas de Informação. Orientador Dr. Joaquim Quinteiro Uchôa LAVRAS-MG 2013 Dedico esta, bem como todas as minhas demais conquistas, aos meus pais José Osmar e Maria Helena, minhas irmãs Valéria e Mirene, meu sobrinho e afilhado Davi e em especial a minha querida esposa Claudiane. AGRADECIMENTOS A Deus pelo dom da vida e por me guiar durante esta caminhada. À minha esposa Claudiane, pessoa com quem amo partilhar a vida, obrigado pelo carinho, a paciência e por sua capacidade de me trazer paz na correria de cada semestre. E não deixando de agradecer de forma grandiosa meus pais, José Osmar e Maria Helena, e minhas irmãs, Valéria e Mirene, que com muito carinho e apoio, não mediram esforços para que eu chegasse até esta etapa de minha vida. À Universidade Federal de Lavras (UFLA) e ao Departamento de Ciência da Computação (DCC) pela oportunidade da formação superior. À Diretoria de Gestão de Tecnologia da Informação (DGTI) e seus colaboradores por possibilitar a realização deste trabalho. A produção compartilhada com amigos nesses espaços foi a melhor experiência da minha formação acadêmica e aperfeiçoamento profissional. Ao professor Dr. Joaquim Quinteiro Uchôa, pela orientação, paciência e conselhos que foram de grande valia para a realização deste trabalho. Aos membros da banca examinadora Hermes Pimenta de Moraes Júnior e Eder Teixeira de Andrade, por aceitarem o convite para composição da mesma. Enfim, a todos que, de algum modo, participaram de mais um capítulo de minha história, os meus sinceros agradecimentos. "Nós somos aquilo que fazemos repetidamente. Excelência, então, não é um modo de agir, mas um hábito." (Aristóteles) RESUMO Após analisar os sistemas web em operação no âmbito da Universidade Federal de Lavras (UFLA) e sob gerência da Diretoria de Gestão de Tecnologia da Informação (DGTI) desta universidade, identificou-se a necessidade de minimizar fatores que comprometiam a segurança do processo de autenticação de usuários dessas aplicações. Foi levantado que a DGTI possui como prática a utilização de credenciais únicas para autenticar usuários em seus diversos sistemas web, sendo estas credenciais informadas diretamente nas aplicações. Como foi abordado durante o desenvolvimento do presente trabalho, por razões de segurança, a manipulação de credenciais únicas feita diretamente nas aplicações deve ser evitada. No intuito de resolver o problema levantado, foi proposta a implantação de uma ferramenta de autenticação centralizada no ambiente em que estes sistemas estão inseridos. Após a avaliação de três soluções de autenticação web Single Sign-On (SSO), a que melhor atendeu aos requisitos exigidos pelo ambiente foi o Central Authentication Service (CAS). Após a implantação do CAS e integração de diversos sistemas sob responsabilidade da DGTI, foi obtido como resultado uma melhora no que se refere a utilização segura de credenciais únicas em um ambiente web. Palavras-Chave: Autenticação Centralizada. Central Authentication Service. DGTI. Single Sign-On. UFLA. LISTA DE FIGURAS 2.1 Modelo de autenticação tradicional . . . . . . . . . . . . . . . . . . . 5 2.2 Modelo descentralizado de autenticação com credencial única . . . . 6 2.3 Modelo centralizado de autenticação . . . . . . . . . . . . . . . . . . 8 2.4 Troca de pacotes entre o cliente, o KDC e o servidor de aplicação . . 12 2.5 Autenticação descentralizada . . . . . . . . . . . . . . . . . . . . . . 13 2.6 Autenticação com identidade federada . . . . . . . . . . . . . . . . . 14 2.7 Utilização de bibliotecas cliente para autenticação via CAS . . . . . . 19 2.8 Sequência de passos para autenticação via CAS . . . . . . . . . . . . 21 2.9 Autenticação federada com o Shibboleth . . . . . . . . . . . . . . . . 24 2.10 IdP utilizando o CAS para autenticação . . . . . . . . . . . . . . . . 25 3.1 Autenticação única através de fontes distintas. . . . . . . . . . . . . . 27 3.2 Replicação para o LDAP de alterações na base de dados controlada pelo SIG. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.3 Proporção de sistemas utilizando SSL . . . . . . . . . . . . . . . . . 28 3.4 Utilização de credencial única por sistemas não gerenciados pela DGTI 29 4.1 Configuração do módulo LDAP no CAS . . . . . . . . . . . . . . . . 37 4.2 Parâmetros de conexão do CAS ao LDAP . . . . . . . . . . . . . . . 37 4.3 Adicionando o LDAP como fonte de autenticação no CAS . . . . . . 38 4.4 Aplicação PHP utilizando a biblioteca phpCAS . . . . . . . . . . . . 39 5.1 Percentual de sistemas integrados ao CAS após implantação . . . . . 42 5.2 Solução alcançada com o projeto . . . . . . . . . . . . . . . . . . . . 43 SUMÁRIO 1 INTRODUÇÃO 1 1.1 Contextualização e Motivação . . . . . . . . . . . . . . . . . . . . . 1 1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 Estrutura do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2 REFERENCIAL TEÓRICO 2.1 4 Modelos de autenticação . . . . . . . . . . . . . . . . . . . . . . . . 4 2.1.1 Modelo descentralizado de autenticação (modelo tradicional) . . . . 4 2.1.2 Modelo descentralizado de autenticação com credencial única . . . 6 2.1.3 Modelo centralizado de autenticação com entrada única . . . . . . . 7 2.2 Kerberos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.3 Federação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.4 Escopos de soluções Single Sign-On (SSO) . . . . . . . . . . . . . . 14 2.4.1 SSO de rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.4.2 Web SSO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.4.3 Web SSO federado . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.5 Single Logout (SLO) . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.6 Ferramentas web SSO . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.6.1 Java Open Single Sign-On Community Edition . . . . . . . . . . . 17 2.6.2 Central Authentication Service (CAS) . . . . . . . . . . . . . . . . 18 2.6.3 3 Shibboleth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 DESCRIÇÃO DO AMBIENTE E APRESENTAÇÃO DO PROBLEMA 26 3.1 Descrição do ambiente . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.2 Apresentação do problema . . . . . . . . . . . . . . . . . . . . . . . 27 3.3 Possibilidades de solução . . . . . . . . . . . . . . . . . . . . . . . . 29 3.3.1 Utilização de SSL em todos os sistemas . . . . . . . . . . . . . . . 29 3.3.2 Autenticação centralizada . . . . . . . . . . . . . . . . . . . . . . 30 3.4 Solução ideal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.5 Solução adotada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.6 Ferramenta web SSO escolhida . . . . . . . . . . . . . . . . . . . . . 33 4 METODOLOGIA E DESENVOLVIMENTO 4.1 35 Instalação e configuração do CAS . . . . . . . . . . . . . . . . . . . 36 4.1.1 Instalação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.1.2 Configuração do modo de autenticação . . . . . . . . . . . . . . . 36 Integração dos sistemas ao CAS . . . . . . . . . . . . . . . . . . . . 38 4.2.1 Sistemas desenvolvidos pela DGTI . . . . . . . . . . . . . . . . . . 38 4.2.2 Sistemas de terceiros . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.2 5 RESULTADOS E DISCUSSÃO 42 6 CONCLUSÃO 45 7 GLOSSÁRIO 50 1 1 INTRODUÇÃO Neste capítulo, é feita uma contextualização do tema tratado, são descritos os objetivos deste trabalho e a sua estruturação. 1.1 Contextualização e Motivação Manter a segurança em ambientes com modelo tradicional de autenticação, em que cada sistema possui o controle sobre a própria forma de autenticação de usuários, costuma ser uma atividade mais trabalhosa devido ao esforço em manter as bases de dados atualizadas e/ou sincronizadas. Este modelo tradicional, de certa forma, contribui para o aumento na quantidade de incidentes de segurança por diversos fatores tais como: o armazenamento de senhas para consulta posterior, o desencorajamento da troca contínua dessas senhas e outros fatores citados mais adiante neste trabalho. A substituição deste modelo tradicional por outro que viabilize uma autenticação centralizada e segura, englobando os mais diversos sistemas existentes em um ambiente é uma alternativa que deve ser considerada. Esta estrutura de autenticação centralizada pode ser alcançada com a utilização de soluções de autenticação Single Sign-On (SSO). Um sistema SSO possibilita ao usuário o acesso a vários serviços, autenticando-se apenas uma vez através de uma central de autenticação. A Diretoria de Gestão de Tecnologia da Informação (DGTI)1 , órgão suplementar vinculado à Superintendência de Planejamento da Pró-Reitoria de Planejamento e Gestão da Universidade Federal de Lavras (UFLA)2 é responsável por desenvolver as atividades de gestão da tecnologia da informação no âmbito da uni1 http://www.dgti.ufla.br/ 2 http://www.ufla.br/ 2 versidade. Esta diretoria possui como prática a utilização de credenciais3 únicas para a maioria dos sistemas web por ela desenvolvidos e/ou controlados, sendo essas credenciais informadas diretamente nas aplicações. De acordo com AUBRY, MATHIEU e MARCHAL (2004), a prática de permitir o informe de credenciais únicas diretamente nas aplicações deve ser evitado, pois o comprometimento de qualquer sistema pode colocar todo o ambiente em risco. Foi proposto no presente trabalho, efetuar um levantamento do modelo de autenticação utilizado pelas aplicações web mantidas pela DGTI, avaliar possíveis soluções e ferramentas de autenticação web SSO e fazer a implantação daquela que melhor atendesse aos requisitos do ambiente. E desta forma, contribuir para o aumento da segurança na autenticação dos sistemas computacionais existentes no âmbito da Universidade Federal de Lavras. 1.2 Objetivos O presente trabalho teve por objetivo geral aumentar a segurança na autenticação de usuários dos sistemas web mantidos pela DGTI, através da implantação de uma ferramenta de autenticação web SSO nesse ambiente. Os objetivos específicos foram: 1) Realização de uma revisão bibliográfica sobre ferramentas web SSO, modelos e escopos de autenticação; 2) Levantamento da estrutura e segurança na autenticação de aplicações web mantidas pela DGTI; 3O termo credencial pode ser definido como algo que possibilita ao usuário o acesso a algum recurso. Neste trabalho refere-se ao conjunto usuário/senha informados para autenticação nos sistemas. 3 3) Avaliação de soluções web SSO afim de encontrar aquela que melhor atendesse às necessidades do ambiente analisado; 4) Implantação da ferramenta web SSO selecionada; 5) Efetuação das alterações necessárias para integração do grupo de sistemas da DGTI à ferramenta web SSO implantada. 1.3 Estrutura do Trabalho Este trabalho está organizado da seguinte forma: Capítulo 2 (Referencial teórico): são abordados os principais conceitos teóricos relacionados aos assuntos contemplados nesta pesquisa. Capítulo 3 (Descrição do ambiente e apresentação do problema): levantamento da estrutura existente de autenticação de usuários em sistemas web operantes no âmbito da UFLA e discussões sobre o problema e soluções. Capítulo 4 (Metodologia e Desenvolvimento): é apresentada a metodologia de pesquisa adotada no trabalho e o seu desenvolvimento. Capítulo 5 (Resultados e discussão): apresentação dos resultados alcançados com a execução deste trabalho. Capítulo 6 (Conclusão): apresentação das conclusões, considerações e sugestão de trabalhos futuros. 4 2 REFERENCIAL TEÓRICO Esta seção apresenta uma revisão bibliográfica para dar respaldo científico no desenvolvimento deste trabalho. 2.1 Modelos de autenticação Com o aumento na quantidade de sistemas informatizados nas organizações, tornase também necessário o aumento de investimentos em soluções de segurança. Para se proteger contra ataques externos à rede, uma boa implementação de alguma solução de firewall é geralmente suficiente, mas para a rede interna a questão torna-se mais complexa. Ao contrário do que se possa imaginar, a grande maioria dos incidentes de segurança são de origem interna, provocados por indivíduos que fazem parte da própria instituição (MIT, 2012). Um fator que pode contribuir para o aumento no quadro de insegurança interno em uma organização, é o modelo de autenticação adotado por seus sistemas. Neste trabalho, modelo de autenticação é tratado como a forma em que um conjunto de sistemas pertencentes ao mesmo ambiente manipulam as credenciais dos usuários. A seguir, são listados os principais modelos de autenticação relevantes para o desenvolvimento desta pesquisa. 2.1.1 Modelo descentralizado de autenticação (modelo tradicional) Modelo descentralizado de autenticação (ou modelo tradicional de autenticação), pode ser definido como aquele geralmente criado pelo aumento não planejado de sistemas informatizados em qualquer organização. Neste modelo cada sistema gerencia a sua própria base de usuários, gerando uma estrutura descentralizada de autenticação e gerência de credenciais. 5 Ilustrado pela Figura 2.1, este modelo permite que uma mesma pessoa possua credenciais diferentes para cada um dos sistemas que tenha acesso. Este modelo incentiva o armazenamento (sobre a mesa, em mídias digitais, e-mail etc.) de credenciais para consulta posterior, contribuindo para o aumento nos riscos com incidentes de segurança (HURSTI, 1997). Pode-se destacar também, que o modelo tradicional pode desencorajar a troca contínua das senhas por parte do usuário nas diversas aplicações em que possua permissão de acesso. Figura 2.1: Modelo de autenticação tradicional Fonte: Adaptado de (SWITCHAAI, 2013) Dependendo da quantidade de sistemas, do nível de dificuldade para definição das senhas e da periodicidade de exigência na renovação dessas, o esquecimento de senhas pode gerar uma demanda diária para os setores de suporte da organização (VOLCHKOV, 2001). Neste sentido, fica claro que tal situação contribui para a elevação de custos, diminuição da produtividade e aumento da insatisfação dos envolvidos. Este modelo, segundo HURSTI (1997), torna complicada a administração de usuários principalmente quando algum usuário é desligado da instituição. Geralmente não se tem controle sobre quais sistemas a pessoa possui acesso, sendo geralmente necessário verificar em todos. Neste caso a segurança pode ser compro- 6 metida caso a pessoa permaneça com permissão indevida de acesso em qualquer dos sistemas. 2.1.2 Modelo descentralizado de autenticação com credencial única Frente aos problemas decorrentes do modelo de autenticação tradicional, muitas organizações procuram evoluir para um modelo que possibilite a uma pessoa utilizar a mesma credencial para acesso a todas as aplicações (SWITCHAAI, 2013), modelo ilustrado pela Figura 2.2. Neste modelo é mantida uma base centralizada de usuários e todas as aplicações se autenticam na mesma fonte. Desta forma o problema com múltiplas senhas é eliminado, facilitando a gerência de usuários. Esta base centralizada pode ser um banco de dados convencional, um diretório Lightweight Directory Access Protocol (LDAP), dentre outros. Figura 2.2: Modelo descentralizado de autenticação com credencial única Fonte: Adaptado de (SWITCHAAI, 2013) Neste modelo, cada aplicação manipula diretamente as credenciais dos usuários, mantendo a sua própria página de login. Se não muito bem controlado, este 7 modelo torna-se bastante vulnerável a ocorrência de incidentes de segurança. Isso se deve a dois fatores principais: 1. Se ao menos uma aplicação for comprometida, o invasor poderá ter acesso às credenciais de qualquer usuário que se autenticar neste sistema. Com as credenciais em mãos, devido a unicidade, poderá se autenticar em qualquer outra aplicação em que aquele usuário tenha acesso. Uma forma simples de comprometer o sistema é através da alteração da sua página de autenticação. Como cada sistema recebe a senha do usuário em texto plano, a mesma pode ser manipulada e enviada com facilidade para qualquer lugar. 2. Dependendo do nível de controle sobre o desenvolvimento e implantação de novos sistemas e servidores no ambiente, a garantia da segurança na manipulação de credenciais em cada aplicação pode ser insuficiente. É necessário garantir que cada sistema faça a manipulação segura das credencias recebidas. Esta tarefa pode não ser trivial a partir do momento em que utiliza-se sistemas desenvolvidos sob coordenação externa à empresa. É necessário garantir também que cada aplicação funcione sobre conexão segura, caso contrário, as credenciais poderão ser facilmente captadas, já que trafegam em texto plano pela rede. Desta forma, segundo AUBRY, MATHIEU e MARCHAL (2004), é desejável que as credenciais dos usuários não sejam informadas diretamente nas aplicações. 2.1.3 Modelo centralizado de autenticação com entrada única Como alternativa aos modelos descentralizados de autenticação, uma solução Single Sign-On (SSO) pode ser adotada. Segundo HURSTI (1997) um ambiente com autenticação SSO torna possível, de forma segura, que os usuários utilizem apenas uma credencial para acesso a todos os serviços em que possuam permissão. Ainda 8 de acordo com HURSTI (1997), esse tipo de ambiente possibilita que o usuário se autentique apenas no primeiro acesso, eliminando a necessidade de autenticação adicional para acesso aos demais serviços disponibilizados no ambiente. A Figura 2.3 ilustra o funcionamento deste modelo, o módulo de autenticação não fica mais nas aplicações, e sim na central de autenticação. Figura 2.3: Modelo centralizado de autenticação Fonte: Adaptado de (SWITCHAAI, 2013) Neste modelo existe a figura de um servidor de autenticação, responsável por fornecer a página de login para todos os sistemas. As credenciais não são mais informadas diretamente nas aplicações, mas sim na central de autenticação através de um túnel criptografado (AUBRY; MATHIEU; MARCHAL, 2004). Para garantir a segurança, toda a comunicação entre as aplicações e o servidor de autenticação ocorre também através de um túnel criptografado. Além do aumento da segurança ao reduzir a exposição da senha dos usuários a vários sistemas, um ambiente com autenticação SSO proporciona os seguintes benefícios: Maior facilidade de administração: o controle de usuários torna-se centralizado. Quando uma pessoa deixa a organização é necessário fazer o bloqueio em apenas um local. 9 Maior comodidade aos usuários: sendo necessário autenticar-se apenas no primeiro acesso, além da redução na quantidade de senhas a serem lembradas. Aumento da produtividade no desenvolvimento: pois não é mais preciso desenvolver uma tela de entrada e um controle de autenticação para cada sistema. Mas é preciso tomar certos cuidados em um ambiente com estrutura de autenticação SSO. Como desvantagens, pode-se listar: Único ponto de falha: devido ao modelo centralizado de autenticação, se o servidor SSO ficar inoperante ninguém conseguirá autenticar-se em nenhum dos sistemas que o utilizam para autenticação. Único ponto de ataque: segundo SARS (1998) uma central de autenticação pode facilmente tornar-se um atrativo para ataques. Se o servidor SSO puder ser comprometido, será possível comprometer todos os sistemas que o utilizam para autenticação de seus usuários. Ambos os pontos de desvantagem podem ser contornados com uma política de segurança bem definida. É necessário investir em um ou mais servidores extra de autenticação, para que tenham a capacidade de assumir o controle em caso de falhas do servidor de autenticação principal. Torna-se importante também a atualização constante do sistema SSO adotado. Novas versões, além de incorporar novas funcionalidades, geralmente trazem diversas correções de falhas de segurança. 10 2.2 Kerberos O Kerberos é um protocolo open source para autenticação SSO em rede, criado na década de 80 pelo Massachusetts Institute of Technology (MIT)1 como parte do projeto Athena (MIT, 2013). Em 1993 o Kerberos tornou-se um padrão Internet Engineering Task Force (IETF)2 passando a ser largamente utilizado, sendo atualmente um protocolo referência quando o assunto é autenticação SSO (MIT, 2013). O Kerberos está presente na maioria dos sistemas operacionais de diversas companhias, como a Microsoft3 , Apple4 , RedHat5 e Oracle6 . De acordo com MIT (2013), o Kerberos utiliza o conceito de tickets na implementação da funcionalidade de SSO. Um ticket é algo que o cliente apresenta ao servidor de aplicação para provar a autenticidade da sua identidade sem a necessidade de nova autenticação. O processo de autenticação e autorização do Kerberos, embora seja concentrado em um único servidor físico, segundo MIT (2013) pode ser logicamente dividido em três partes, que conjuntamente são chamadas de Key Distribution Center (KDC): 1. Database (banco de dados): armazena informações sobre associações de usuários aos serviços, tickets e suas definições de validade, senhas e suas definições de validade, dentre outras informações importantes; 2. Authentication Server (AS): O AS é o serviço de autenticação inicial onde o usuário ainda não autenticado informa suas credenciais para autenticação. Após o usuário autenticar-se o AS fornece ao mesmo um Ticket Granting 1 http://web.mit.edu/ 2 http://www.ietf.org/ 3 http://www.microsoft.com/ 4 http://www.apple.com/ 5 http://www.redhat.com/ 6 http://www.oracle.com/us/sun 11 Ticket (TGT). O TGT é o ticket utilizado pelo usuário para conseguir acesso aos serviços sem necessidade de nova autenticação; 3. Ticket Granting Server (TGS): É o componente que faz a distribuição de service ticket (ST) para clientes com TGTs válidos. Os STs são tickets apresentados pelo cliente ao servidor de aplicação para conseguir acesso ao serviço desejado. Ainda segundo MIT (2013), a troca de pacotes entre o cliente e o KDC e entre o cliente e o servidor de aplicação pode ser resumida da seguinte forma, melhor visualizado pela Figura 2.4: • AS_REQ: Requisição inicial de autenticação feita pelo usuário ao AS; • AS_REP: Resposta enviada pelo AS à requisição anterior. O pacote recebido inclui o TGT (criptografado com uma chave secreta do TGS) e a chave de sessão (criptografada com a chave secreta do usuário); • TGS_REQ: Requisição do usuário ao TGS solicitando um ST. O pacote enviado inclui o TGT obtido no passo anterior e um autenticador gerado pelo cliente e criptografado com a chave de sessão obtida; • TGS_REP: Resposta enviada pelo TGS à requisição anterior. O pacote recebido inclui o ST (criptografado com a chave secreta do serviço) requisitado e também uma chave de sessão do serviço, criptografada utilizando a chave de sessão gerada pelo AS; • AP_REQ: Requisição enviada pelo cliente ao servidor de aplicação solicitando acesso ao serviço. O pacote inclui o ST obtido na resposta anterior e um autenticador gerado pelo cliente e criptografado com a utilização da chave de sessão de serviço gerada pelo TGS no passo anterior; 12 • AP_REP: Resposta enviada pelo servidor de aplicação ao cliente para provar que o servidor é realmente aquele esperado pelo cliente. Esta etapa não é obrigatória, isto somente ocorre quando existe a necessidade de autenticação mútua entre cliente e servidor de aplicação. Figura 2.4: Troca de pacotes entre o cliente, o KDC e o servidor de aplicação Fonte: Adaptado de (MIT, 2013) 2.3 Federação No âmbito de autenticação SSO, uma federação é um tipo de rede de confiança que possibilita às instituições participantes, denominadas unidades federadas, a utilização de métodos distintos de autenticação local, mantendo a interoperabilidade entre elas (SWITCHAAI, 2013). As informações sobre as pessoas vinculadas às instituições continuam sendo mantidas localmente, e cada instituição participante estabelece seu próprio modelo de gestão de identidade. Ou seja, cada instituição mantém o controle sobre como são mantidas informações de usuários e qual mé- 13 todo de autenticação local será utilizado, essa propriedade é chamada de identidade federada. As Figuras 2.5 e 2.6 ilustram um ambiente onde uma mesma pessoa possui vínculos com mais de uma instituição. No modelo tradicional, ilustrado pela Figura 2.5, o usuário precisa de uma credencial para cada um dos sistemas espalhados pelas instituições. Já no modelo com identidade federada, ilustrado pela Figura 2.6, o usuário somente precisa das credenciais cedidas em sua instituição de origem. Figura 2.5: Autenticação descentralizada Fonte: Adaptado de (SWITCHAAI, 2013) 14 Figura 2.6: Autenticação com identidade federada Fonte: Adaptado de (SWITCHAAI, 2013) 2.4 Escopos de soluções Single Sign-On (SSO) O escopo de uma solução de autenticação SSO está relacionado ao seu ambiente de atuação. Neste trabalho são conceituados três diferentes escopos apresentados a seguir. 2.4.1 SSO de rede Exemplificado neste trabalho pelo Kerberos, é a forma de autenticação e autorização mais amplamente utilizada atualmente (MIT, 2013). O Kerberos atua nos controles de autenticação e autorização SSO do usuário aos recursos de rede. O seu funcionamento é desenvolvido para possibilitar que determinado usuário efetue logon em seu terminal, e, de forma transparente, consiga acesso a todos os recursos de rede que possua permissão (BUTLER et al., 2006). 15 2.4.2 Web SSO Com o aumento na quantidade de sistemas web houve a necessidade de criar soluções SSO para este ambiente, surgindo o conceito de web SSO. Um web SSO consiste em uma solução que possibilita o controle centralizado da autenticação de sistemas web, através de um servidor de autenticação (HITACHI, 2013). Quando um usuário tenta acesso a determinado recurso, o mesmo é redirecionado para autenticar-se no servidor de autenticação. Caso o usuário já tenha se autenticado anteriormente para acessar outro sistema, o acesso às demais aplicações é feito diretamente, sem necessidade de nova autenticação por parte do usuário. Após a primeira autenticação, todo o processo é feito de forma transparente pelo agente que controla o ambiente web SSO (HITACHI, 2013). 2.4.3 Web SSO federado O conceito de federação surge da necessidade de interoperabilidade, em nível de autenticação, de diferentes organizações chamadas unidades federadas. Tal conceito possibilita que um usuário pertencente a uma instituição consiga autenticar-se em outra, com as credenciais da sua instituição de origem (SWITCHAAI, 2013). Este modelo de tecnologia pode ser considerado uma generalização do conceito de web SSO, já que possibilita criar um ambiente SSO global (no âmbito da federação) a partir de soluções SSO utilizadas localmente em cada unidade federada. Como exemplo da aplicação deste conceito no Brasil, existe a Comunidade Acadêmica Federada (CAFe)7 . A CAFe é uma federação que envolve diversas instituições de ensino e pesquisa brasileiras. Entre as instituições participantes é formada uma rede de confiança que possibilita aos usuários o acesso a recursos de outras instituições, utilizando credenciais cedidas em sua instituição de origem. A 7 http://www.rnp.br/servicos/cafe.html 16 federação CAFe utiliza a plataforma Shibboleth8 para implementar o conceito de identidade federada entre as instituições participantes. 2.5 Single Logout (SLO) Enquanto um SSO permite ao usuário autenticar-se uma única vez para acessar diversos sistemas, o Single Logout (SLO), conhecido também por Single Sign-Out, significa que ao efetuar logout de uma das aplicações o usuário perderá acesso a todas as outras em que esteja conectado (LAB; FEDERATIONS, 2013). Nem todos os sistemas web SSO oferecem suporte a esta funcionalidade. Embora pareça simples, a funcionalidade de SLO pode ser de difícil alcance, pois envolve a exclusão da seção do usuário diretamente no servidor de aplicação de cada um dos sistemas em que o usuário esteja conectado. Como mencionado por Lab e Federations (2013) uma das grandes questões envolvendo a utilização de SLO, é que o mesmo pode trazer falsa sensação de segurança ao passar a impressão errada ao usuário de que o mesmo foi desconectado de todas as aplicações ao efetuar o logout em uma delas. Dependendo da situação, mesmo com o SLO configurado, alguma aplicação pode não ser desconectada por falha no recebimento da requisição de logout enviada pelo servidor web SSO. Os sistemas web SSO que oferecem suporte a SLO implementam geralmente esta função em forma de uma funcionalidade configurável, tornando possível configurar todo o ambiente, somente parte dele ou mesmo desabilitar a funcionalidade. 8 http://shibboleth.net/ 17 2.6 Ferramentas web SSO Nesta seção é feito um levantamento de algumas soluções web SSO disponibilizadas gratuitamente na Internet. São destacadas as características principais de cada uma delas. Nas ferramentas consideradas mais relevantes para contribuição neste trabalho foram apresentados também alguns detalhes sobre o seu funcionamento. 2.6.1 Java Open Single Sign-On Community Edition Java Open Single Sign-On Community Edition (JOSSO CE) consiste em uma solução SSO segura para aplicações ou serviços web. JOSSO CE é desenvolvido em Java EE9 com a utilização do Spring Framework10 e distribuído sobre licença GPL11 , sendo um software livre e de código aberto (JOSSO, 2013). Possui como características principais: • Suporte a Security Assertion Markup Language (SAML) 12 ; • Suporte a LDAP e base de dados para armazenamento de informações e credenciais; • Suporte a integração com o Spring Framework, aplicações desenvolvidas em PHP13 , ASP14 , Perl15 , Python16 dentre outras; 9 http://www.oracle.com/technetwork/java/javaee/ 10 http://projects.spring.io/spring-framework/ 11 http://www.gnu.org/copyleft/gpl.html 12 https://www.oasis-open.org/committees/security/ 13 http://php.net/ 14 http://www.asp.net/ 15 http://www.perl.org/ 16 http://www.python.org/ 18 • Pode ser instalado em diferentes servidores de aplicação, tais como: Apache Tomcat17 , JBoss18 , Microsoft Windows IIS19 , dentre outros. 2.6.2 Central Authentication Service (CAS) O CAS20 é um sistema de autenticação web SSO concebido em 2001 pela universidade de Yale21 , se tornando um projeto mantido pelo consórcio Jasig22 a partir de 2005 (JASIG, 2013). O CAS é desenvolvido com linguagem de programação Java23 , e disponibiliza várias bibliotecas cliente para integração com outras linguagens (PHP, Java, .NET, Python, Perl, dentre outras). O CAS Possui como características principais: • Código aberto e gratuito; • Suporte a SAML; • Suporte a LDAP e base de dados para armazenamento de informações e credenciais; • Suporte a múltiplas fontes simultâneas de autenticação; • Suporte a integração com Spring Framework e aplicações desenvolvidas em PHP, ASP, Perl, Python, Java dentre outras; • Instalação e configuração simplificadas. O funcionamento da autenticação única com o CAS baseia-se na existência de um servidor, chamado CAS server, e dos sistemas que o utilizam, através de 17 http://tomcat.apache.org/ 18 http://www.jboss.org/ 19 http://www.iis.net/ 20 http://www.jasig.org/cas/ 21 http://www.yale.edu/ 22 http://www.jasig.org/ 23 http://www.java.com 19 bibliotecas cliente, para autenticação de seus usuários. Como mostra a Figura 2.7, o funcionamento simplificado desta relação entre uma aplicação e biblioteca cliente segue os seguintes passos: • A aplicação faz uso de uma biblioteca cliente para redirecionar a autenticação para o CAS server; • O usuário informa suas credenciais ao CAS server; • O CAS server então autentica o usuário através de um diretório LDAP ou qualquer outro modo configurado. Figura 2.7: Utilização de bibliotecas cliente para autenticação via CAS Fonte: Adaptado de (JASIG, 2013) 20 O CAS é utilizado como fonte única de autenticação para todas as aplicações participantes do SSO. Qualquer autenticação é feita diretamente na página de login do próprio CAS. De acordo com JASIG (2013) a sequência de passos durante uma autenticação com o CAS pode ser resumida da seguinte forma, ilustrado pela Figura 2.8: 1. O usuário tenta acesso ao recurso desejado; 2. Caso o usuário já não esteja autenticado, a aplicação em que tentou acesso o redireciona para o CAS server; 3. O usuário fornece as suas credenciais; 4. O CAS autentica o usuário no diretório LDAP; 5. Após autenticação, o usuário é redirecionado ao recurso inicialmente solicitado; 6. A aplicação pode autorizar, ou não, o acesso do usuário. O CAS utiliza conceitos semelhantes àqueles utilizados pelo Kerberos. Quando o usuário autentica-se pela primeira vez na central de autenticação, é concedidolhe um Ticket-granting ticket (TGT). Com a apresentação do TGT ao CAS Server é liberado o acesso ao serviço pretendido (JASIG, 2013). É importante salientar que o CAS é utilizado somente para autenticação dos usuários, cabendo ao serviço cliente autorizar ou não o acesso do usuário autenticado. Embora não venha configurado em sua instalação padrão, o CAS é munido de uma funcionalidade que permite o controle sobre quais sistemas podem utilizálo para autenticação (JASIG, 2013). Com esta funcionalidade habilitada, é feito o cadastro da URL de cada um dos sistemas que utilizam o CAS. Caso algum sistema não cadastrado tente utilizá-lo como fonte de autenticação, o redirecionamento não 21 Figura 2.8: Sequência de passos para autenticação via CAS Fonte: Adaptado de (JASIG, 2013) é feito e uma mensagem informando que aquela aplicação não possui autorização para utilizar o CAS é exibida. Segundo JASIG (2013), uma outra funcionalidade que pode ser configurada no CAS é o renew, que possibilita aos clientes optarem por ficarem fora do SSO, utilizando o CAS somente como central de autenticação. Essa funcionalidade possibilita ao cliente informar ao CAS server para sempre solicitar que o usuário autentique-se, mesmo com a existência de uma sessão SSO. O suporte a SLO é outra funcionalidade que possibilita configuração e traz flexibilidade. Quando o usuário efetua logout de uma aplicação, ou a sua sessão expira no CAS server, é disparada a requisição de logout para todos os serviços em que aquele usuário esteja conectado. O cliente em cada aplicação processa a requisição de SLO e efetua o logout do usuário, eliminando a sua seção no servidor 22 de aplicação. Segundo JASIG (2013) nem todo cliente suporta a utilização de SLO, nestes casos pode-se optar em desabilitar essa funcionalidade no ambiente como um todo. 2.6.3 Shibboleth O Shibboleth é um projeto open source desenvolvido pela Internet2 Middleware Initiative24 que possibilita a aplicação do conceito de web SSO federado. O Shibboleth proporciona o gerenciamento de identidade federada para acesso seguro a recursos de múltiplos domínios, denominados unidades federadas. Ao conjunto desses domínios colaborativos dá-se o nome federação (MORGAN et al., 2004). É importante avaliarmos a possibilidade de utilização do Shibboleth como solução web SSO a ser implantada, pois, embora a UFLA não faça parte da federação CAFe atualmente, é possível que o faça no futuro. No Shibboleth, cada unidade federada é constituída por um provedor de identidade (Identity Provider) e um provedor de serviço (Service Provider). O Identity Provider (IdP) é o serviço responsável pela autenticação e fornecimento dos atributos do usuário, enquanto que o Service Provider (SP) é o responsável pela autorização aos recursos requeridos. Além dos recursos IdP e SP presentes em cada unidade federada, a arquitetura Shibboleth contém um serviço chamado Where Are You From (WAYF), responsável por identificar a instituição do usuário. Quando alguém não autenticado tenta acesso a um recurso disponibilizado na federação, será redirecionado pelo SP para a página do WAYF. O WAYF apresenta a lista de unidades federadas para que o usuário escolha a qual pertence. Após a escolha da unidade, o WAYF redireciona o usuário para o IdP, que requisitará as credenciais do usuário para autenticação. De 24 http://www.internet2.edu/ 23 acordo com SWITCHAAI (2013), o funcionamento da autenticação e autorização no Shibboleth seguem os seguintes passos, ilustrados pela Figura 2.9: 1. O usuário solicita acesso ao recurso desejado; 2. Caso o usuário já não esteja autenticado, o SP redireciona-o para o WAYF; 3. O WAYF apresentara a lista de organizações que fazem parte da federação; 4. Após o usuário selecionar a unidade a qual pertence o WAYF redirecionadoo ao provedor de identidade (IdP) da instituição selecionada. Após o redirecionamento o IdP apresenta o método de autenticação local da instituição; 5. O usuário autentica-se; 6. O SP recebe a garantia de que o usuário foi autenticado pelo IdP; 7. Se necessário, o SP requisita ao IdP atributos adicionais do usuário; 8. O usuário é redirecionado ao recurso solicitado. Com base nos atributos do usuário o SP pode autorizar, ou não, o acesso ao recurso solicitado. O Shibboleth é constituído de um conjunto de módulos que, integrados, fornecem um sistema de autenticação SSO federado. A solução completa proposta pelo Shibboleth está fora do escopo necessário para o presente trabalho, desta forma, somente seu módulo IdP será verificado. O IdP é o módulo responsável pela autenticação e fornecimento dos atributos do usuário ao SP. Como mencionado em INTERNET2 (2013) o IdP possui um serviço próprio de autenticação web SSO que pode ser utilizado como meio de autenticação local, ou o IdP pode ser configurado para utilizar um serviço de autenticação local já operante na própria organização. De acordo com INTERNET2 (2013), o processo normal feito pelo IdP é: • Recebe uma solicitação de autenticação no formato SAML a partir do SP; 24 Figura 2.9: Autenticação federada com o Shibboleth Fonte: Adaptado de (SWITCHAAI, 2013) • Faz a autenticação do usuário a partir do serviço de autenticação local da instituição; • Coleta informações sobre o usuário autenticado na base de dados da organização; • Aplica políticas de controle sobre quais dados serão disponibilizados ao SP; • Transmite, de forma segura, as informações coletadas até o SP. Como mencionado em INTERNET2 (2013), dentre as formas de manipulação de autenticação que podem ser utilizadas pelo IdP está a forma de autenticação 25 definida por External Authn. No mecanismo External Authn o IdP delega a responsabilidade de autenticação do usuário a outro sistema, por exemplo algum sistema web SSO já operante na organização. Na documentação oficial do Shibboleth são exibidos exemplos de integração do IdP com o CAS. A Figura 2.10 ilustra uma configuração do IdP onde é utilizada uma solução externa de autenticação web SSO, no caso, o CAS. O IdP pode utilizar tanto um banco de dados quanto um serviço de diretórios para obtenção de atributos extras referente ao usuário autenticado. Figura 2.10: IdP utilizando o CAS para autenticação Fonte: Adaptado de (SWITCHAAI, 2013) 26 3 DESCRIÇÃO DO AMBIENTE E APRESENTAÇÃO DO PROBLEMA Nesta seção é feito um levantamento de como encontrava-se a estrutura de autenticação de usuários em sistemas web operantes no âmbito da UFLA. Após o levantamento é feita a apresentação do problema central deste trabalho e discussão sobre alternativas de solução. Por ultimo são apresentadas a solução adotada e a ferramenta web SSO escolhida para implantação. 3.1 Descrição do ambiente A DGTI é um órgão suplementar vinculado à Superintendência de Planejamento da Pró-Reitoria de Planejamento e Gestão da Universidade Federal de Lavras (UFLA) e tem por objetivo desenvolver as atividades de gestão da tecnologia da informação no âmbito da universidade. A DGTI possui como prática, sempre que possível, a utilização de credencial única para os sistemas por ela desenvolvidos e/ou mantidos. O identificador único utilizado no ambiente é o mesmo do e-mail institucional da UFLA. Embora a credencial seja única, a fonte de autenticação pode variar entre as aplicações, algumas utilizam o diretório LDAP1 outras fazem a autenticação diretamente no banco de dados. Para exemplificar, a Figura 3.1 ilustra uma situação onde algumas aplicações utilizam o banco de dados para autenticação de seus usuários, e outras utilizam um diretório LDAP. É mantido um esquema de replicação entre a base de dados de usuários e a base LDAP, esquema ilustrado pela Figura 3.2. As atualizações efetuadas pelo Sistema Integrado de Gestão (SIG)2 são refletidas para a base LDAP. 1 http://www.openldap.org/ 2 https://www.sig.ufla.br 27 Figura 3.1: Autenticação única através de fontes distintas. Figura 3.2: Replicação para o LDAP de alterações na base de dados controlada pelo SIG. 3.2 Apresentação do problema Após levantamento, foram identificados 193 sistemas web desenvolvidos e/ou sob responsabilidade da DGTI, utilizando credencial única para autenticação. Foi verificado que deste total de sistemas apenas 6 (aproximadamente 32%) funcionavam sobre conexão segura com a utilização de Secure Sockets Layer (SSL), fato ilustrado pela Figura 3.3. 3 Por razões de segurança, a DGTI não permitiu a divulgação de nomes ou endereços dos sistemas por ela desenvolvidos. 28 Figura 3.3: Proporção de sistemas utilizando SSL Como pode ser observado a situação encontrava-se preocupante, visto que mesmo os sistemas que utilizavam conexão segura estavam em risco. Como já ressaltado neste trabalho, ambientes onde são utilizadas credenciais únicas para autenticação devem ser rigorosamente controlados. Em um ambiente com modelo descentralizado de autenticação e que utilize credencial única, se apenas um dos sistemas não utilizar conexão segura em sua página de autenticação todo o ambiente estará comprometido. Outra questão que deve ser evidenciada é relativa ao desenvolvimento de sistemas por setores não subordinados à DGTI. Essas aplicações não possuem nenhum tipo de controle por parte desta diretoria e em muitos casos, precisam também utilizar as credenciais de e-mail dos usuários para autenticação. Não se sabe ao certo quantos desses sistemas se utilizam da credencial única dos usuários para autenticação. Não se sabe também quais tipos de cuidados são feitos na manipulação dessas credenciais, e se funcionam sobre conexão segura ou não. A Figura 3.4 exemplifica esta situação: os sistemas S1, S2 e S3 estão sob gerência da DGTI, já os sistemas S5 e S6 são controlados por setores externos. 29 Figura 3.4: Utilização de credencial única por sistemas não gerenciados pela DGTI 3.3 Possibilidades de solução Nesta seção é feita uma análise de possíveis alternativas para solução do problema apresentado. 3.3.1 Utilização de SSL em todos os sistemas Uma alternativa clara que amenizaria o problema seria a configuração de todos os servidores de aplicação para utilização de conexão segura para todos os sistemas. Neste caso é necessário avaliar a viabilidade em assegurar a utilização de determinadas regras em servidores não gerenciados pela DGTI. A utilização de conexão segura com SSL garante que a comunicação entre cliente e servidor será criptografada, mas não garante a segurança do sistema como um todo. A utilização de SSL pode trazer falsa sensação de segurança. Ataques do tipo SQL-Injection, por 30 exemplo, continuam possíveis da mesma forma. O dados transportados entre cliente e servidor são manipulados diretamente pela aplicação, inclusive a senha dos usuários. Se o invasor comprometer o sistema no servidor de aplicação, de nada adianta utilizar SSL na conexão com os clientes, pois o mesmo terá livre acesso às credencias recebidas pela aplicação no momento em que o usuário autenticar-se. Outra questão a ser analisada é sobre a necessidade de colocar toda a aplicação ou somente determinadas partes, como a autenticação por exemplo, sobre SSL. Segundo Lee, Jang e Kim (2011) o protocolo SSL utiliza muito mais processamento e consequentemente consome mais energia. Esta utilização elevada de processamento se deve a fatores como: criptografar e descriptografar, utilizando uma chave pública, qualquer comunicação entre cliente e servidor. Ainda de acordo com Lee, Jang e Kim (2011) a utilização elevada de recursos computacionais indica que o protocolo SSL não é adequado para utilização por dispositivos móveis com pouca capacidade de processamento e memória. Ou seja, é preciso avaliar quais tipos de dispositivos acessarão os sistemas, e verificar a viabilidade e real necessidade em colocar toda a aplicação, ou somente parte dela, sobre o protocolo SSL. 3.3.2 Autenticação centralizada O ambiente em estudo é caracterizado por uma grande quantidade de sistemas que fazem uso de credencial única e módulo próprio de autenticação, caracterizando como o modelo descentralizado de autenticação com credencial única, já apresentado neste trabalho. Quando não muito bem controlado este modelo pode contribuir para o comprometimento da segurança do ambiente. Como mencionado por Bhosale (2008) uma solução que facilite o controle sobre a segurança de autenticação em um ambiente com múltiplas aplicações, pode ser alcançado com a utilização de mecanismos de autenticação SSO. 31 O ambiente de sistemas da DGTI é bastante heterogêneo tanto na diversidade de padrões de desenvolvimento quanto na variedade de fontes desenvolvedoras. A utilização de soluções web SSO neste ambiente seria de grande auxílio na prevenção de pontos de falha de segurança. A grande vantagem percebida com a implantação de uma solução web SSO neste ambiente é devido a remoção da manipulação direta das credenciais pelas aplicações, além de promover a padronização do processo de autenticação para todo o conjunto de sistemas. Outra questão a ser verificada é sobre a compatibilidade e viabilidade de adaptação dos sistemas à solução web SSO a ser implantada. É necessário verificar tanto a facilidade para novos desenvolvimentos quanto ao suporte oferecido por soluções de terceiros utilizadas no ambiente. 3.4 Solução ideal Foi verificado que a solução ideal para o ambiente em estudo seria aquela que mitigasse ao máximo as situações em que a segurança do ambiente pudesse ser comprometida por alguma aplicação isolada. Esta preocupação é devido à diversidade nos padrões de desenvolvimento interno e fontes externas desenvolvedoras não controladas pela DGTI. A solução que melhor atenderia o ambiente seria aquela com autenticação centralizada onde as aplicações não tivessem contato direto com as credenciais dos usuários. Desta forma, foi observado que a solução ideal seria aquela onde todas as aplicações pudessem ser adaptadas e configuradas para utilizem um sistema web SSO para autenticação de seus usuários. Durante as pesquisas, foi observado que esta solução idealizada é de difícil implementação pois, apesar da existência de diversos sistemas web SSO disponíveis no mercado, a grande dificuldade está nas adaptações dos sistemas do ambiente e não na instalação e configuração da aplicação web SSO propriamente dita. 32 Diante disso, alguns dos aspectos que devem ser verificados na escolha da solução web SSO são a variedade de aplicações, linguagens de programação e frameworks de desenvolvimento que ofereçam suporte à mesma. 3.5 Solução adotada Devido a configuração heterogênea do ambiente de sistemas da DGTI, optou-se pela utilização de uma ferramenta de autenticação web SSO. Além do quesito segurança, os seguintes pontos foram avaliados na escolha da solução de software de autenticação web SSO: Gratuita: A ferramenta deve ser de uso livre, sem restrições de qualquer tipo quanto à sua utilização. Código aberto: Deve ser de código aberto, possibilitando alterações em sua codificação, caso necessário. Boa documentação oficial: Necessário possuir uma documentação oficial bem detalhada. Exemplos de utilização: Como trata-se de uma solução que faz necessária a sua integração com outras ferramentas e soluções de terceiros, quanto mais exemplos de utilização e integração, melhor. Suporte a PHP e Java: Essas são as duas linguagens de programação mais utilizadas pela equipe da DGTI, então é necessário suporte completo às mesmas. Suporte aos sistemas já utilizados no ambiente: Suporte aos sistemas MediaWiki4 , Zimbra Open Source Edition5 , Moodle6 , Jasper Reports Server Community7 4 http://www.mediawiki.org/ 5 http://www.zimbra.com/community/ 6 http://www.moodle.org.br/ 7 http://community.jaspersoft.com/project/jasperreports-server 33 (JasperServer) e Redmine8 . Os sistemas Redmine e Moodle não utilizam credencial única para autenticação e por isso não serão integrados neste momento, no entanto, faz-se necessário suporte a ambos para possível futura integração. 3.6 Ferramenta web SSO escolhida Nesta seção é feita uma análise das soluções web SSO apresentadas no referencial teórico deste trabalho. A escolha da solução teve como base os requisitos do próprio ambiente, apresentados na seção anterior. O JOSSO mostrou-se uma boa opção de ferramenta web SSO, sendo uma solução já consolidada e munida de boa documentação, exemplos de uso e fóruns ativos de discussão. Porém não foram encontrados casos de sucesso ou exemplos de configuração para integração do mesmo com os sistemas Jasperserver, Moodle e MediaWiki. Desta forma, apesar de apresentar diversos pontos favoráveis, a falta de evidências de suporte aos sistemas mencionados inviabiliza a sua escolha como solução web SSO a ser implantada. Já a solução web SSO oferecida pelo módulo IdP do Shibboleth embora ofereça boa documentação explicativa de uso da tecnologia, carece de bons exemplos de uso, configuração e integração do mesmo com outras linguagens de programação e sistemas. Não foram encontrados casos de sucesso na integração do Shibboleth com os sistemas Zimbra, JasperServer e Redmine, dificultando a escolha do mesmo como solução web SSO para implantação. Vale salientar que não foi avaliado o Shibboleth como um todo, pois está fora do escopo de solução necessitada para estre projeto. Foi analisada somente a solução web SSO oferecida pelo módulo IdP. 8 http://www.redmine.org/ 34 Dentre as soluções avaliadas, e com base nos requisitos do ambiente, o CAS mostrou ser a melhor alternativa de ferramenta web SSO a ser utilizada neste trabalho. O CAS é uma solução bastante difundida e com vasta utilização, possuindo diversos fóruns ativos de discussão. O CAS também oferece uma boa documentação repleta de exemplos textuais e em códigos, disponíveis para Download. Além de oferecer bibliotecas-cliente que facilitam a sua integração com várias linguagens de programação, foram encontrados casos de sucesso da integração do CAS com todas as ferramentas de terceiros listadas como requisito do ambiente. Outra questão importante que favoreceu na escolha do CAS é devido a sua compatibilidade com o módulo IdP do Shibboleth. 35 4 METODOLOGIA E DESENVOLVIMENTO Nesta seção é descrita a metodologia utilizada no trabalho a qual possibilitou que os objetivos da pesquisa fossem alcançados. A natureza da pesquisa realizada é aplicada através do estudo teórico acerca das ferramentas de autenticação web SSO, modelos e escopos de autenticação disponíveis, tendo por finalidade a construção de um ambiente de autenticação centralizado no âmbito da Universidade Federal de Lavras. Para atender os objetivos propostos neste trabalho foi realizado um levantamento bibliográfico a respeito das ferramentas, modelos e escopos de autenticação. Em seguida foi realizada uma análise do ambiente, descrevendo o cenário da organização no quesito da utilização de credenciais únicas na autenticação dos sistemas, buscando identificar os pontos em que a segurança estava vulnerável. A partir do embasamento teórico e da análise das necessidades do ambiente em estudo, foi realizada uma avaliação de soluções web SSO afim de encontrar aquela que melhor atendesse às necessidades do ambiente. Em seguida foi realizada a implantação da solução web SSO Central Authentication Service (CAS) e posterior integração dos sistemas ao mesmo. Nesta etapa foram realizadas alterações necessárias para que o grupo de sistemas mantidos pela DGTI integrassem ao ambiente de autenticação centralizado. O recurso computacional utilizado para a construção deste ambiente, foi um servidor de autenticação em que foi instalado e configurado para atuar como central única de autenticação de diversos sistemas operantes no ambiente. A instalação deste serviço foi sobre a seguinte configuração: Recurso físico: Servidor virtual com 4 GB de memória RAM e 100GB de disco rígido. Sistema Operacional: Linux Fedora Core 16. 36 Modo de autenticação: Diretório LDAP externo ao servidor. 4.1 Instalação e configuração do CAS Nesta seção é apresentado o processo de instalação e configuração do sistema web SSO Central Authentication Service (CAS) na DGTI. 4.1.1 Instalação Para instalar o CAS foram seguidas as instruções do arquivo INSTALL.txt presente no pacote de instalação obtido a partir do endereço oficial do projeto1 . O processo de instalação do CAS é bastante simplificado, após instalar o servidor de aplicação tomcat2 basta copiar o arquivo modules/cas-server-webapp-VERSION.war3 para o diretório webapps do tomcat, e reiniciá-lo. Após reiniciar o tomcat, a página de login do CAS já pode ser acessada. Embora o CAS exiba a sua página de login quando acessado sem conexão segura configurada, um aviso é mostrado informando que a funcionalidade de SSO não está disponível, sendo necessário fazer a devida configuração do SSL no servidor de aplicação. Após configurar o SSL no tomcat a mensagem de aviso não é mais exibida. O CAS vem configurado com um módulo de autenticação padrão para testes, autenticando qualquer entrada onde o usuário e senha sejam idênticos. 4.1.2 Configuração do modo de autenticação Como mencionado no referencial teórico, o CAS suporta múltiplas fontes simultâneas de autenticação, mas para este trabalho foi utilizado unicamente o diretório 1 http://www.jasig.org/cas 2 http://tomcat.apache.org/ 3 Onde VERSION indica a versão atual do CAS 37 LDAP oficial da DGTI. Após desabilitar este plugin de autenticação padrão, o módulo LDAP foi configurado para autenticar-se no diretório LDAP mencionado. Desta forma, o CAS passou a autenticar qualquer pessoa que possua vínculo ativo com a UFLA. Para habilitar a funcionalidade de autenticação via LDAP foram seguidas as instruções da própria documentação4 do CAS. O primeiro passo consiste na adição da dependência do módulo LDAP no arquivo pom.xml, ilustrado pela Figura 4.1. Após adicionar a dependência, é necessário alterar o arquivo de configuração deployerConfigContext.xml, onde são especificados os dados para conexão ao servidor LDAP, visualizado pela Figura 4.2, e adicionada a nova fonte de autenticação, visualizado pela Figura 4.3. Feito isso, basta reiniciar o CAS para que as novas configurações tenham efeito. Figura 4.1: Configuração do módulo LDAP no CAS Figura 4.2: Parâmetros de conexão do CAS ao LDAP 4 https://wiki.jasig.org/display/CASUM/LDAP 38 Figura 4.3: Adicionando o LDAP como fonte de autenticação no CAS 4.2 Integração dos sistemas ao CAS Nesta seção é descrito o processo de integração entre um grupo de sistemas operantes na UFLA e o CAS. Esse processo de integração pode ser divido em dois grupos, sendo um aquele onde os sistemas desenvolvidos pela DGTI foram modificados para se adequarem ao novo modo de autenticação, e outro onde foi necessário alterar sistemas de terceiros. Dos 19 sistemas levantados que utilizavam credencial única para autenticação, 16 são de desenvolvimento próprio da DGTI e 3 são sistemas de terceiros. Todas as aplicações de desenvolvimento próprio e uma (MediaWiki) desenvolvida por terceiros foram construídas utilizando linguagem de programação PHP, as outras duas aplicações de terceiros, ZIMBRA e JasperServer, foram desenvolvidas em JAVA. 4.2.1 Sistemas desenvolvidos pela DGTI Ao todo, 11 sistemas foram alterados para se integrarem ao CAS. Basicamente, somente o módulo de autenticação do usuário é alterado, o processo de autorização permanece o mesmo. Para configurar as aplicações em PHP para autenticarem via 39 CAS, foi utilizada a biblioteca cliente phpCAS5 . A Figura 4.4 exibe um trecho de código onde é feita a configuração de um sistema em PHP para utilizar o CAS como fonte de autenticação, é possível notar que em nenhum momento a aplicação possui contato direto com a senha do usuário. Figura 4.4: Aplicação PHP utilizando a biblioteca phpCAS Ainda na Figura 4.4, a linha 25 indica a conexão ao servidor CAS e na linha 27 mostra a configuração do certificado de segurança requerido para o phpCAS (cliente) se comunicar com o CAS (servidor) utilizando conexão segura SSL, sem o certificado a conexão não é estabelecida. Na linha 30 é habilitado o recurso de SLO, sendo necessário indicar quais servidores podem enviar um pedido de logout para este sistema, no caso foram especificados o endereço IP e o nome do servidor CAS. Na linha 32 é chamada uma função que verifica se o usuário já se encontra autenticado, se sim permanece na aplicação, caso contrário, a função redireciona o usuário para a página de login do servidor CAS. Nas linhas 34 a 36 é feita a manipulação de requisições de saída do sistema, é chamada uma função que faz o 5 https://wiki.jasig.org/display/CASC/phpCAS 40 redirecionamento do usuário a outro endereço após ser feito o seu logout no CAS. Na linha 38 o sistema consegue recuperar o nome do usuário autenticado, com esta informação o sistema aplica suas próprias regras de autorização, permitindo o acesso, ou não, do usuário. Em outros 5 sistemas optou-se por não alterar para autenticação via CAS. Em 1 deles por ser de uso crítico e possuir módulos onde grande quantidade de usuários temporários são criados a cada processo seletivo. Como esses usuários não são criados no servidor LDAP seria necessário alterar o sistema para tratar a autenticação de modo diferente para cada grupo, ou configurar o CAS para autenticar-se também nessa base temporária. Assim, optou-se por avaliar esta questão futuramente. Em outro sistema a dificuldade é parecida, o processo de autenticação é diferente dependendo do usuário, sendo que alguns deles podem ser anônimos. Dessa forma seria necessário fazer mais alterações que a substituição do módulo de autenticação existente, ficando como tarefa para trabalhos futuros. Os outros 3 sistemas não foram integrados por terem sido considerados de uso crítico e não puderam sofrer alterações no momento, ficando também como tarefa para trabalhos futuros. Destes 5 sistemas, 2 já encontravam-se operantes sobre conexão segura, os outros 3 foram posteriormente configurados para tal. 4.2.2 Sistemas de terceiros Os sistemas avaliados para utilização do CAS como servidor de autenticação foram: JasperReports Server Community6 , MediaWiki7 e ZIMBRA8 . Dos 3 sistemas, somente o ultimo não foi integrado, o fato do mesmo utilizar uma forma de autenticação muito particular é um dificultador para este tipo de integração, ficando também como pendência para trabalhos futuros. O ZIMBRA utiliza um esquema 6 http://community.jaspersoft.com/project/jasperreports-server 7 http://www.mediawiki.org/wiki/MediaWiki 8 http://www.zimbra.com/ 41 com apelidos em que uma mesma pessoa pode autenticar-se tanto com o seu usuário real do LDAP quanto com nomes de usuários associados ao usuário verdadeiro dentro da própria aplicação. O ZIMBRA já operava sobre conexão segura. O JasperServer traz suporte nativo ao CAS, para integração foram seguidas as instruções contidas no site9 do próprio sistema. No arquivo de instalação do JasperServer é disponibilizado um modelo (/samples/externalAuth-sampleconfig/sample-applicationContext-externalAuth-CAS.xml) que facilita a integração. Para integrar o sistema MediaWiki foi adquirida uma extensão disponibilizada no site do desenvolvedor10 , após instalar a extensão e ajustar algumas configurações o sistema foi integrado sem maiores complicações. 9 http://community.jaspersoft.com/documentation/jasperreports-server-authentication- cookbook/configuring-jasperreports-server-cas 10 http://www.mediawiki.org/wiki/Extension_talk:CASAuthentication 42 5 RESULTADOS E DISCUSSÃO Ao final do processo de implantação, 13 dos 19 sistemas (aproximadamente 68%), fato ilustrado pela Figura 5.1, foram integrados ao CAS. Dos outros 6 sistemas, os que não funcionavam com conexão segura, foram configurados para tal. Como mencionado na seção 3.4, a solução considerada ideal é de difícil alcance devido à diversidade nos padrões de desenvolvimento interno e fontes externas desenvolvedoras não controladas pela DGTI. Embora não tenha conseguido a configuração Figura 5.1: Percentual de sistemas integrados ao CAS após implantação ideal, uma boa solução intermediária foi alcançada visto que a maioria das aplicações foram integradas ao ambiente de autenticação centralizado. Na solução alcançada, ilustrada pela Figura 5.2, a maior parte dos sistemas passaram a utilizar um único ponto de autenticação externo a todas as aplicações. A outra parcela continua utilizando módulo próprio para autenticar, permanecendo assim fora do ambiente de autenticação SSO. Faz-se necessário verificar a possibilidade de inclusão de novos sistemas ao ambiente SSO, pois como existe uma falta de padrão 43 Figura 5.2: Solução alcançada com o projeto no desenvolvimento destes sistemas, é difícil garantir a manipulação segura das credenciais. Vale salientar que o universo de sistemas considerado não constitui a totalidade de aplicações existentes no ambiente em estudo, visto que não foi possível identificar sistemas externos à DGTI que fazem uso da credencial única para autenticação. Com relação aos sistemas externos, chegou-se à conclusão que devido à dificuldade em garantir a manipulação segura das credenciais, a melhor solução é a utilização do CAS como fonte de autenticação para todos esses casos. Devido à disponibilização de bibliotecas-cliente para integração com o CAS, e pela grande quantidade de exemplos facilmente encontrados, a tarefa de integração de sistemas com o CAS é facilitada, tornando-se mais simples do que a construção de um módulo de autenticação e uma tela de login para cada aplicação. Porém é necessário manter a base de dados local (ou base de testes) de usuários atualizada durante as fases de desenvolvimento e testes dos sistemas. Essa atualização é necessária pois o CAS foi configurado para autenticar-se diretamente no diretório LDAP oficial. Do ponto de vista da segurança na autenticação, esse esforço extra 44 em manter as bases de dados atualizadas é compensado, pois este modelo garante a utilização de conexão segura em todos os casos, mesmo para os testes locais dos sistemas. E por último pode-se perceber que em algumas situações o funcionamento do Single Logout (SLO) é indesejado. O SLO faz com que ao efetuar logout de uma aplicação em uma aba do navegador de internet o usuário seja desconectado também de outros sistemas, podendo gerar transtornos caso alguma operação crítica esteja em andamento. Dependendo da situação, o SLO pode ser desabilitado no ambiente como um todo ou somente em determinadas aplicações, nestes casos, quando desabilitado, ao efetuar o logout em uma aplicação as outras permanecerão conectadas normalmente. 45 6 CONCLUSÃO Durante as pesquisas, foi observado o quão delicada é a utilização de credencial única sem os devidos cuidados e controles. Embora seja importante tanto na melhora da experiência para usuários finais quanto na simplicidade de administração, a utilização de credencial única pode trazer enorme risco pois o comprometimento de qualquer aplicação pode afetar diversos outros sistemas. Diante disso, foi observado que a utilização de credencial única é essencial em qualquer ambiente onde variados sistemas requerem autenticação, mas é necessário conscientizar-se dos riscos advindos com esta abordagem. O presente trabalho teve por objetivo implantar uma solução para melhoria de aspectos de segurança na utilização de credenciais únicas por sistemas web operantes no âmbito da UFLA. Para tal, foi realizado um estudo sobre ferramentas de autenticação que possibilitassem garantir a segurança na manipulação dessas credenciais, mesmo em um ambiente com diferentes padrões no desenvolvimento de sistemas. Tendo como base requisitos do próprio ambiente de implantação, algumas soluções de autenticação SSO foram avaliadas. Escolhida a ferramenta, prosseguiu-se com sua instalação, configuração e posterior integração dos sistemas do ambiente à ferramenta de autenticação web SSO selecionada. Mesmo não tendo êxito na completa integração dos sistemas ao ambiente SSO, foi possível chegar a uma solução aceitável onde a maioria dos sistemas foram integrados. Para garantir a melhora da segurança, foi necessário também efetuar a configuração de conexão segura para os sistemas que ainda não trabalhavam desta forma e não foram integrados ao web SSO. É esperado que com o tempo novos sistemas sejam integrados ao servidor de autenticação, evitando assim que a manipulação de credenciais seja feita diretamente nessas aplicações. Concluiu-se também que a utilização da central de autenticação apresenta ser a solução ideal para sistemas 46 externos não controlados pela DGTI, e que desejem também utilizar credencial única para autenticação de seus usuários. Como sugestão de trabalhos futuros, podem ser realizadas atividades para integração ao CAS dos 6 sistemas não integrados durante o desenvolvimento deste trabalho. Sugere-se também a realização de atividades para inclusão da UFLA à federação CAFe. Uma instituição pode ser integrada à essa federação em duas formas, como provedora de identidade e/ou provedora de serviços. Tais atividades incluem a implantação dos módulos Service Provider (SP) e Identity Provider (IdP) do Shibboleth, este último envolve também a sua integração com o CAS, solução web SSO implantada neste trabalho. 47 REFERÊNCIAS BIBLIOGRÁFICAS AUBRY, P.; MATHIEU, V.; MARCHAL, J. Esup-portail: open source single signon with cas (central authentication service). In: 10th International Conference of European University Information Systems - EUNIS 2004. [s.n.], 2004. Disponível em: <http://perso.univ-rennes1.fr/pascal.aubry/node/32>. BHOSALE, S. Architecture of a single sign on (sso) for internet banking. In: Wireless, Mobile and Multimedia Networks, 2008. IET International Conference on. [S.l.: s.n.], 2008. p. 103–105. ISSN 0537-9989. BUTLER, F.; CERVESATO, I.; JAGGARD, A. D.; SCEDROV, A.; WALSTAD, C. Formal analysis of kerberos 5. Theor. Comput. Sci., Elsevier Science Publishers Ltd., Essex, UK, v. 367, n. 1, p. 57–87, nov. 2006. ISSN 0304-3975. Disponível em: <http://dx.doi.org/10.1016/j.tcs.2006.08.040>. Debora Jean Byrne, Chetan Ram Murthy, Shaw-Ben Shi e Chin-Long Shu. Lightweight directory access protocol (LDAP) directory server cache mechanism and method. fev. 2002. US patent 6347312. HITACHI, H. I. S. websso. mai. 2013. Disponível em: <http://hitachi-id.com/concepts/websso.html>. HURSTI, J. Single Sign-On. nov. 1997. Disponível em: <http://www.tml.tkk.fi/Opinnot/Tik-110.501/1997/single sign-on.html>. INTERNET2. SHIBBOLETH - A project of the Internet2 Middleware Initiative. Oct. 2013. Disponível em: <http://shibboleth.net/>. JASIG, C. CAS - Central Authentication Service. ago. 2013. Disponível em: <http://www.jasig.org/cas>. 48 JOSSO. JOSSO - Java Open Single Sign-On. Oct. 2013. Disponível em: <http://www.josso.org/>. KANT, K.; IYER, R.; MOHAPATRA, P. Architectural impact of secure socket layer on internet servers. In: Computer Design, 2000. Proceedings. 2000 International Conference on. [S.l.: s.n.], 2000. p. 7–14. ISSN 1063-6404. LAB, T. r. F.; FEDERATIONS tools for exploration of I. Single Logout. Oct. 2013. Disponível em: <https://fed-lab.org/best-practises/single-logout/>. LEE, D.; JANG, H. S.; KIM, K. C. A lightweight protocol based on the ssl protocol for handheld devices. In: Information Science and Applications (ICISA), 2011 International Conference on. [S.l.: s.n.], 2011. p. 1–4. MIT. Kerberos: The network authentication protocol. nov. 2012. Disponível em: <http://web.mit.edu/kerberos/www/>. MIT. MIT KERBEROS CONSORTIUM. oct. 2013. Disponível em: <http://www.kerberos.org>. MORGAN, R. L.; CANTOR, S.; CARMODY, S.; HOEHN, W.; KLINGENSTEIN, K. Federated security: The shibboleth approach. Educause Quarterly, v. 27, n. 4, p. 12–17, 2004. ISSN 1528-5324. Disponível em: <http://www.editlib.org/p/103716>. NIE, F.; XU, F.; QI, R. Saml-based single sign-on for legacy system. In: Automation and Logistics (ICAL), 2012 IEEE International Conference on. [S.l.: s.n.], 2012. p. 470–473. ISSN 2161-8151. OASIS. OASIS - advancing open standards for the information society. Oct. 2013. Disponível em: <https://www.oasis-open.org>. PERKINS, S. Internet cookies: Security implications. In: Online]. Available: citeseer.ist.psu.edu/perkins00internet.html. [S.l.: s.n.], 2000. 49 RANUM, M. J.; AVOLIO, F. M. A toolkit and methods for internet firewalls. In: In Proc. Summer 1994 USENIX Conference. [S.l.: s.n.], 1994. p. 37–44. SARS, C. Unified Single Sign-On. nov. 1998. Disponível em: <http://www.tml.tkk.fi/Opinnot/Tik-110.501/1998/papers/3singlesignon/singlesign-on.htm>. SWITCHAAI. Authentication and Authorization Infrastructure. mai. 2013. Disponível em: <http://www.switch.ch/aai>. VOLCHKOV, A. Revisiting single sign-on: a pragmatic approach in a new context. IT Professional, v. 3, n. 1, p. 39–45, 2001. ISSN 1520-9202. WEI, K.; MUTHUPRASANNA, M.; KOTHARI, S. Preventing sql injection attacks in stored procedures. In: Software Engineering Conference, 2006. Australian. [S.l.: s.n.], 2006. p. 8 pp.–. ISSN 1530-0803. 50 7 GLOSSÁRIO Cookie: De acordo com (PERKINS, 2000), um cookie pode ser definido como sendo uma informação armazenada, pelo navegador, em formato texto no disco rígido do usuário. Desta forma é possível que sites da web armazenem informações no computador do usuário para consultas futuras. Firewall: Um firewall é um sistema, ou conjunto deles, que tem o objetivo de prover um ponto de defesa, auditado e controlado, para acesso a serviços. Sendo que essas requisições de acesso podem partir tanto de uma rede privativa interna quanto de redes externas (RANUM; AVOLIO, 1994). LDAP: Lightweight directory access protocol (LDAP) é um protocolo baseado no modelo de arquitetura cliente-servidor. O cliente se conecta e envia requisições ao servidor LDAP, que por sua vez, processa tais consultas e responde ao cliente (BYRNE et al., 2002). SQL-Injection: É um tipo de ataque que, devido a falta de validação adequada aos parâmetros de entrada do sistema, o invasor consegue acesso direto à base de dados (WEI; MUTHUPRASANNA; KOTHARI, 2006). SAML: Security Assertion Markup Language (SAML)é um framework baseado em XML1 utilizado para troca de informações sobre autenticação, autorização e atributos de usuários (OASIS, 2013). A primeira versão do SAML foi lançada pelo comitê técnico de serviços de segurança do OASIS2 em novembro de 2002, atualmente o framework encontra-se na versão 2.0. De acordo OASIS (2013), SAML possibilita que entidades (organizações) confirmem informações de 1 http://www.w3schools.com/xml/ 2 https://www.oasis-open.org 51 identidade, atributos e direitos de um usuário a outras entidades (aplicações locais ou externas). Segundo Nie, Xu e Qi (2012), SAML é utilizado para troca de informações de autenticação e atributos entre diferentes domínios de segurança. SSL: Secure Sockets Layer (SSL) é um protocolo amplamente utilizado que permite a troca de informações, de forma segura, por aplicações cliente/servidor (KANT; IYER; MOHAPATRA, 2000).