NewsGeneration: um serviço oferecido pela RNP desde 1997


ISSN 1518-5974
Boletim bimestral sobre tecnologia de redes
produzido e publicado pela  RNP – Rede Nacional de Ensino e Pesquisa
24 de novembro de 2000 | volume 4, número 6

volta à página inicial de NewsGeneration

Nesta edição:

NewsGeneration:



A Integração de LDAP e Certificados Digitais em uma Política de Segurança

Euricélia Viana Wanderley <>
Maria Teresa Moura <>

Serviço de Suporte a Informações (SSI)
Rede Nacional de Ensino e Pesquisa (RNP)

Resumo
1. Introdução
2. Certificados Digitais
3. LDAP
4. Política de Segurança
4.1 Ambiente de Segurança do ColdFusion
4.2 Autenticação
4.3 Autorização
4.4 Visão Geral
4.5 Independência de Produto
5. Contribuições e Trabalhos Futuros
6. Conclusões
Agradecimentos
Referências bibliográficas

Resumo

Este artigo apresenta uma política de segurança que integra o uso de certificados digitais e LDAP, no contexto de segurança de Web, para prover autenticação e autorização para aplicações Internet. Certificados digitais são relativamente novos na Internet, mas eles representam uma forte tendência para prover identificação individual e para proteger a privacidade e a integridade das informações. Em particular, o uso de certificados digitais e criptografia não é mais uma opção, mas uma necessidade para corporações que tencionam fazer uso de troca eletrônica de informações sem se expor a problemas de privacidade e acessos não autorizados. Na política, LDAP é integrado com certificados digitais para armazenar as chaves públicas dos certificados assim como outras informações dos usuários. LDAP foi escolhido pela tendência da Internet em adotá-lo como um padrão.

Um framework de segurança foi definido, usando o ambiente de segurança avançado da aplicação Web do ColdFusion, para simplificar o trabalho da equipe de desenvolvimento, mantendo o código fonte da aplicação tão independente quanto possível das mudanças nas regras do controle de acesso.

Algumas características foram priorizadas: o crescimento da segurança sem perda de transparência para o usuário e o acesso individualizado.

^

1. Introdução

A RNP - Rede Nacional de Pesquisa é um programa prioritário do MCT - Ministério da Ciência e Tecnologia , cuja execução encontra-se a cargo do CNPq - Conselho Nacional de Desenvolvimento Científico e Tecnológico . O principal papel da RNP é manter um backbone de serviços Internet para a comunidade de ensino e pesquisa do Brasil. Atualmente, a RNP está presente em 26 Estados do Brasil, interconectando centenas de milhares de computadores em mais de 900 instituições.

A RNP possui uma Coordenação Nacional subdividida em quatro Coordenações: geral, operações, informações e administrativa. Os diversos serviços e atividades mantidos pela Coordenação Nacional são executados pelos núcleos da RNP de forma distribuída e adequada às características de um projeto de backbone nacional.

Este artigo tem como foco a apresentação de uma política de segurança para a Intranet da RNP. O principal propósito desta Intranet é organizar as informações produzidas pelos membros do projeto, a fim de facilitar o gerenciamento do trabalho, melhorar a integração e a comunicação e ajudar no trabalho do dia-a-dia de cada funcionário da RNP. Nas primeiras versões da Intranet, os principais problemas sobre segurança diziam respeito ao compartilhamento da identificação através de grupos de usuários e mecanismos de autenticação baseados em login e senha. Para contornar estes problemas, foi desenvolvida a política de segurança apresentada neste documento, que tem como principal propósito integrar o uso de certificados digitais e serviços de diretórios para aumentar a segurança, mantendo transparência, e prover acesso individualizado à Intranet.

^

2. Certificados Digitais

Dentre as alternativas existentes para substituir a autenticação por meio de login e senha, a utilização de certificado digital é um mecanismo que permite aumentar o nível de segurança em transações pela Internet. Um certificado digital é o equivalente eletrônico a documentos físicos de identidade, tais como RG, CPF ou passaporte. Assim como seu equivalente físico, um certificado digital identifica unicamente um usuário e pode ser armazenado em um disco rígido, disquete ou até mesmo em um smartcard, quando é desejado um alto nível de segurança.

Certificados digitais são a base de uma infra-estrutura de chave pública (PKI - Public Key Infrastructure). Uma PKI provê um sistema de identificação em que cada usuário recebe um certificado digital. Com estes certificados, são gerados pares de chaves formados por uma chave pública e uma chave privada de forma que uma informação criptografada com a chave pública de um usuário só pode ser aberta com a sua chave privada correspondente e vice-versa. A chave pública é disponibilizada, enquanto que a privada é mantida em segredo pelo usuário.

Os certificados são emitidos e mantidos por uma autoridade certificadora que funciona como uma espécie de cartório digital. Esta autoridade certificadora pode ser representada por uma entidade externa de confiança ou pela própria organização quando a aplicação em questão for restrita à corporação, como no caso da Intranet da RNP.

Um certificado digital pode ser utilizado, dentre tantas outras aplicações, para autenticar clientes Web. Neste caso, o certificado emitido para o usuário é associado ao seu navegador Web e a transação para envio do certificado fica transparente para o mesmo, sendo realizada entre o navegador do usuário e o servidor Web. No caso particular da Intranet, a proposta é a utilização de certificados para a identificação dos usuários de forma que, a partir do certificado digital instalado no seu navegador, cada um poderá efetuar sua autenticação junto à Intranet da RNP.

A utilização de certificados digitais é hoje uma tendência muito forte e tem sido apontada como uma das soluções mais eficientes para identificação pessoal e para a proteção da privacidade e integridade das informações. Em artigo publicado na revista Developers em agosto de 2000 [1], os autores consideram que a utilização de certificados digitais e de criptografia deixa de ser uma opção e passa a ser uma necessidade em corporações que desejam fazer uso da praticidade da troca eletrônica de informações sem a exposição da organização aos problemas de autenticação e privacidade.

^

3. LDAP

O LDAP (Lightweight Directory Access Protocol) é um subconjunto do X.500 DAP que não possui a sobrecarga (overhead) da pilha de protocolos OSI. O protocolo provê um mecanismo para passar queries baseadas em texto de um cliente para um servidor LDAP através de uma rede com protocolo TCP/IP.

Um serviço de diretório é uma aplicação de base de dados distribuída, projetada para gerenciar as entradas e atributos em um diretório e disponibilizá-las para usuários e outras aplicações. LDAP é um protocolo definindo um serviço de diretório e acesso a este serviço, de forma que um servidor LDAP provê o serviço de diretório, e os clientes LDAP usam-no para acessar entradas e atributos. Ele está se tornando o serviço de diretório padrão da Internet e é capaz de tanto prover acesso aberto aos serviços de diretórios da Intranet/Internet, bem como de integrar diretórios heterogêneos.

Um diretório consiste de entradas contendo informaçções descritivas armazenadas em seus atributos. Por exemplo, um diretório pode conter entradas descrevendo pessoas ou recursos de redes. Ele pode ser usado em uma larga faixa de aplicações. Algumas aplicações são as seguintes:

O diretório da RNP foi definido baseado na hierarquia das divisões e nas funções desempenhadas pelos empregados na instituição. Os níveis superiores refletem as divisões, começando com as divisões de coordenação (geral, operações, informações e administrativa), como mostrado no exemplo abaixo.

        dn: cn=Employees_RNP, ou=intranet, o=rnp.br
        cn: Employees_RNP
        objectclass: top
        objectclass: groupofuniquenames
        ou: intranet
        uniquemember: cn=general, ou=intranet, o=rnp.br
        uniquemember: cn=operations, ou=intranet, o=rnp.br
        uniquemember: cn=information, ou=intranet, o=rnp.br
        uniquemember: cn=administrative, ou=intranet, o=rnp.br

Os níveis inferiores refletem os departamentos de cada divisão de coordenação e as funções do empregado nesta divisão. No exemplo abaixo, têm-se nomes distintos que contêm a entrada para o departamento SSI (Serviço de Suporte à Informação), o Departamento de Manutenção de Web, o de Design e o Coordenador de Informações:

        dn: cn=information, ou=intranet, o=rnp.br
        cn: general     objectclass: top
        objectclass: groupofuniquenames
        ou: intranet
        uniquemember: cn=ssi, ou=intranet, o=rnp.br
        uniquemember: cn=webmaintainance, ou=intranet, o=rnp.br
        uniquemember: cn=design, ou=intranet, o=rnp.br
        uniquemember: cn=information_coordinator, ou=intranet, o=rnp.br

O nível abaixo descreve os departamentos. No exemplo, mostra-se o primeiro departamento (SSI) da divisão de coordenação de informações. Ele contém as funções dos empregados (técnico, asistente e coordenador) no departamento:

        dn: cn=ssi, ou=intranet, o=rnp.br
        cn: ca
        objectclass: top
        objectclass: groupofuniquenames
        ou: intranet
        uniquemember: cn=ssi_technical,ou=intranet,o=rnp.br
        uniquemember: cn=ssi_assistant,ou=intranet,o=rnp.br
        uniquemember: cn=ssi_coordinator,ou=intranet,o=rnp.br

O próximo nível contém os usuários que fazem parte de cada departamento. Por exemplo, o corpo técnico do SSI (ssi_technical):

        dn: cn=ssi_technical, ou=intranet, o=rnp.br
        cn: ac
        objectclass: top
        objectclass: groupofuniquenames
        ou: intranet
        uniquemember: uid=euri@rnp.br,ou=intranet,o=rnp.br
        uniquemember: uid=teresa@rnp.br,ou=intranet,o=rnp.br

O nível folha contém nomes, endereços, e-mails, chaves públicas de certificados digitais, entre outros dados que dizem respeito aos empregados da RNP. Aqui tem-se um exemplo com a usuária Euricelia Viana:

        dn: uid=euri@rnp.br, ou=intranet, o=rnp.br
        cn: Euricelia Viana
        sn: Euricelia
        givenname: euri
        objectclass: top
        objectclass: person
        objectclass: organizationalPerson
        objectclass: inetOrgPerson
        ou: intranet
        uid: euri@rnp.br
        usercertificate;binary:XXXXXXXYYYYYYYYYYYZZZZZZZZZZZZ

^

4. Política de Segurança

A política de segurança proposta é baseada em dois estágios, a saber, autenticação e autorização. O primeiro estágio, a autenticação, diz respeito ao processo de identificar um usuário, ou seja, uma autenticação assegura que o usuário é realmente quem ele indica ser.

Processos de autenticação, geralmente, são baseados em login e senha; nesta política, no entanto, é proposta a utilização de autenticação através de certificado digital. As principais razões para a sua escolha são a obtenção de um alto nível de segurança e o ganho em transparência, através da eliminação da necessidade do fornecimento de identificações sucessivas em todos os servidores Web onde as aplicações da Intranet encontram-se distribuídas.

O segundo estágio, a autorização, é o processo de permitir ou proibir acesso a um recurso, baseado na identificação do usuário. Esta política está sendo implementada através da utilização dos mecanismos de segurança providos pelo servidor de aplicações utilizado, o ColdFusion. Tais mecanismos permitem a criação de contextos de segurança onde são definidas regras, políticas e grupos de usuários que são usados para controlar a autorização, ou seja, o acesso aos recursos da aplicação.

^

4.1 Ambiente de Segurança do ColdFusion

O ambiente de segurança avançada provido pelo ColdFusion, que é o servidor de aplicações utilizado na Intranet, é composto por três elementos: regras, diretórios de usuários e políticas. Estes elementos são agrupados no que o ambiente do ColdFusion define como um contexto de segurança. Além destes elementos temos a codificação, a ser inserida nas aplicações, e que garante a utilização das políticas de segurança criadas.

Uma regra define o recurso a ser protegido e a ação que se deseja garantir acesso. Por exemplo, pode-se criar um regra para limitar a consulta a determinado módulo da Intranet ou até mesmo para limitar o acesso de escrita em determinado arquivo. Neste exemplo, os recursos são o módulo da Intranet e o arquivo, respectivamente, enquanto que as ações são a consulta ao módulo da Intranet e a escrita no arquivo respectivamente.

Um diretório de usuários define o grupo de usuários que terão permissão para acesso aos recursos. No ambiente de segurança avançada do ColdFusion o diretório de usuários pode estar associado a um servidor de diretórios LDAP, um domínio do Windows NT ou um banco de dados. No caso da Intranet, optamos pela utilização do diretório de usuários baseado em um servidor LDAP.

Finalmente, uma política associa regras a usuários de forma que, através desta, seja possível garantir o acesso a um recurso individualmente ou em grupo. Um exemplo de uma política para a Intranet é a consulta a dispêndios da RNP. Esta política define que o acesso à aplicação de consulta às informações de dispêndios da RNP está disponível apenas para os coordenadores gerais, coordenador adjunto de administração e usuários que não fazem parte destes grupos mas possuem direito de acesso diferenciado, atendendo uma solicitação dos coordenadores.

No que diz respeito à codificação, o ColdFusion provê suporte na linguagem de desenvolvimento (CFML – ColdFusion Markup Language) para autenticação e autorização através de procedimentos e funções que permitem autenticar um usuário e verificar se o mesmo tem autorização para acesso a determinado recurso, através da utilização das políticas previamente definidas. Um ponto importante a ressaltar com respeito a este ambiente de segurança diz respeito à independência de definição dos requisitos de segurança com relação à codificação da aplicação. Ou seja, as informações de configuração do ambiente de segurança são mantidas através da interface de administração do servidor e ficam armazenadas à parte. A aplicação utiliza estas informações de configuração através de procedimentos e funções de modo que qualquer alteração na configuração não afeta os programas já codificados.

^

4.2 Autenticação

A autenticação dos usuários é processada através da utilização de certificado digital de cliente onde cada usuário deve obter previamente seu certificado digital junto a uma autoridade certificadora. Em particular, a RNP tem usado os certificados gratuitos emitidos pela Thawte ( www.thawte.com ), que pertence à Verisign e é uma empresa provedora de produtos de certificação digital e soluções para segurança, privacidade e autenticação. Num futuro próximo, planeja-se implantar, na RNP, uma autoridade certificadora para seu uso exclusivo.

Assim, o processo de autenticação na Intranet é feito através da obtenção, por parte de cada usuário, junto a uma autoridade certificadora, do certificado digital individual de cliente. Uma vez obtido, o certificado deverá então ser instalado no navegador do usuário de forma que a transação para envio do certificado é feita de forma transparente para o usuário, entre o seu navegador e o servidor Web da Intranet. Esta transação de envio do certificado é possível porque os servidores da Intranet estão configurados para aceitar apenas conexões de navegadores que forneçam certificados digitais assinados por uma autoridade certificadora conhecida. A chave pública do certificado de cada usuário, juntamente com outras informações, são armazenadas em um servidor de diretórios LDAP . O contexto de segurança provido pelo ColdFusion indica que a autenticação dos usuários deverá ser efetuada através da utilização de certificados digitais e do servidor de diretórios LDAP. A tarefa de autenticar o certificado fica a cargo da aplicação através dos procedimentos e funções providos pela linguagem de desenvolvimento do ColdFusion.

Um manual foi escrito, instruindo os usuários a obter o seu certificado e o instalar no seu navegador.

A linguagem do ColdFusion possui o procedimento CFAuthenticate que é responsável pela tarefa de autenticação do usuário. A partir desta autenticação, é possível usar a função IsAuthenticated, que testa se o usuário está autenticado e a função AuthenticatedUser que retorna o nome do usuário autenticado.

No código fonte das aplicações, o procedimento CFAuthenticate é chamado para autenticar o usuário da seguinte forma:

CFAUTHENTICATE SECURITYCONTEXT="#sec_context_name#" AUTHTYPE="X509" USERNAME="" PASSWORD=""

onde sec_context_name é o nome do contexto de segurança.

Depois disso, é possível checar se a autenticação obteve sucesso, chamando o procedimento:

CFIF ISAUTHENTICATED(sec_context_name)

No caso de sucesso, também é feita uma query ao serviço de diretório LDAP, usando o e-mail como chave e obter o certificado do usuário:

CFLDAP NAME="qldap" SERVER="servername" ACTION="QUERY" ATTRIBUTES="userCer tificate" SCOPE="SUBTREE" FILTER="uid=#email#" START="o=rnp.br"

para garantir que o certificado do cliente enviado pelo navegador é o mesmo que o armazenado no diretório LDAP:

CFIF #qldap.userCertificate# EQ #CGI.CLIENT_CERT_ENCODED# CFSET check_certificate = true

^

4.3 Autorização

A etapa de autorização compreende a utilização das regras e políticas para acesso aos recursos da Intranet. Todas as aplicações da Intranet possuem políticas associadas. Assim, uma vez completada a etapa de autenticação, é identificado o usuário e a unidade funcional a que ele pertence. Com estas informações, a sua autorização é efetuada de forma transparente pela aplicação através dos procedimentos e funções providos pela linguagem de desenvolvimento do ColdFusion integrados com as informações de configuração do ambiente de segurança. Neste ponto é importante observar que com estes mecanismos de autenticação e autorização é possível personalizar o acesso às informações da Intranet.

A linguagem do ColdFusion possui a função IsAuthorized, cujos parâmetros são o nome do recurso e a ação que se deseja autorizar. Esta função tem o propósito de testar se o usuário, previamente autenticado, está autorizado a executar a ação naquele recurso. Estas informações sobre o recurso e a ação estão definidas no contexto de segurança através das regras, enquanto a política, conforme descrito anteriormente, faz a associação entre as regras e os usuários ou grupos de usuários.

O código seguinte ilustra o que foi dito acima:

CFIF ISAUTHORIZED("USEROBJECT", "BUDGET_PLANNING", "SEE")

Com estas informações, ele verifica as definições no contexto de segurança e decide se o usuário autenticado pode acessar o recurso pretendido.

^

4.4 Visão Geral

Uma visão geral da política de segurança pode ser vista através da Figura 1.

visao geral da politica de seguranca

Figura 1 - Visão Geral da Política de Segurança

Esta figura mostra os principais componentes necessários para completar as tarefas de autenticação e autorização:

^

4.5 Independência de Produto

O uso da segurança avançada do ColdFusion nesta aplicação foi importante porque ele provê características para construir um framework de segurança escalável, granular e independente de implementação. Este contexto de segurança é um dos principais componentes da política de segurança. Entretanto, é importante frisar que o uso de certificados digitais e tecnologias LDAP é independente do ColdFusion e pode ser implementado em qualquer ambiente de aplicação Web, tais como CGI ou ASP. De fato, o serviço de autenticação do cliente através de certificados digitais é provido pelo protocolo SSL, e o serviço de diretórios, pelo LDAP, que também provê APIs (Application Programming Interface) de baixo nível que podem ser acessadas por outras linguagens de implementação.

Em vez de usar as características do ColdFusion, o framework de segurança poderia ser suportado por uma base de dados especialmente projetada para ele. O modelo de dados deveria conter entidades como regras, diretórios de usuários e políticas, e a aplicação poderia consultar a base de dados para verificar o controle de acesso. Isto significa que a segurança avançada do ColdFusion poderia ser facilmente substituída por outras tecnologias, mesmo sem custos adicionais, através da utilização de produtos freeware.

^

5. Contribuições e Trabalhos Futuros

Em particular, uma política de segurança não pode se dissociada da política de segurança de propósito geral adotada pela instituição. Uma das principais contribuições deste trabalho é a integração de tecnologias que são estratégicas, de propósito geral e que não são necessariamente implementadas/fornecidas por um vendedor específico, tais como certificados digitais e LDAP.

A tentativa de usar tecnologias que poderiam ser importantes para outros projetos conduziu ao uso do LDAP. Assim, foi projetado e criado o diretório LDAP da RNP, parte essencial do Projeto de Rede Segura, o que irá ditar a arquitetura e as regras para os serviços de rede e de infra-estrutura.

A manutenção do foco no usuário final mostrou que era necessário adotar um processo simples e transparente de identificação, mas que também se mostrasse eficiente, isto é, cada usuário deveria ver sua própria versão da Intranet baseado nos seus direitos, mas não deveria ser solicitado a este o fornecimento de sua identificação a cada instante.

Embora sejam empregados protocolos e tecnologias já bem estabelecidos, eles não são a forma mais popular de se implementar segurança em ambiente Web. Por causa disto, companhias de pequeno e médio porte podem temer o seu uso. A experiência adquirida pelos técnicos da RNP, possibilita-os a compartilhar o seu conhecimento com estas empresas.

O próximo trabalho é implementar a política de segurança numa plataforma diferente para provar que a mesma é realmente aplicável e independente de plataforma e de produto.

Um outro projeto é transformar a RNP na sua própria Autoridade Certificadora de forma que se possa emitir e manter os certificados dos usuários, definir datas de expiração e se proteger contra possíveis mudanças no certificador externo.

^

6. Conclusões

Neste artigo, foi apresentado e discutido um projeto que foi executado no contexto de segurança Web, que é a meta da maioria das instituições conectadas à Internet.

Os principais resultados desta política de segurança são o crescimento da segurança sem a perda de transparência para o usuário e o acesso individualizado à Intranet. Quando certificados digitais são usados, o processo de autenticação é conduzido pelo servidor e cliente Web. Os usuários devem apenas obter seus certificados de cliente e instalá-los nos seus navegadores antes de acessar a Intranet. Além disso, com autenticação baseada em certificados, não há necessidade de se fazer tantas identificações quanto o número de servidores Web.

Outro importante resultado é o framework de segurança que simplifica o trabalho do grupo de desenvolvimento em ambiente Web porque todas as políticas de segurança são definidas antes das implementações das aplicações e são facilmente escaláveis.

^

Agradecimentos

Gostaríamos de agradecer ao grupo do SSI pela sua ajuda. Em especial, agradecemos a Antonio Carlos pelas suas sugestões e colaboração.

^

Referências bibliográficas

[1] ANDERSON, David. Connecting CF to LDAP. ColdFusion Developer’s Journal [online]. June 1999. Vol. 1 Issue 3.

[2] Cold Fusion Advanced Security Documentation. Disponível em www.allaire.com .

[3] FEGHHI, Jalal; Feghhi, Jalil; Williams, Peter. Digital Certificates: Applied Internet Security. Addison-Wesley , 1999. 453 p.

[4] FORTA, Ben. Advanced ColdFusion Application Development. Que, 1999. 730 p.

[5] GARFINKEL, S. and Spafford, G. Web Security & Commerce. O'Reilly, 1997. 485 p.

[6] GOODMAN, David and Robbins, Collin. LDAP RFCs. Disponível em www.nexor.com/info/LDAP-RFCs.htm . September 2000.

[7] HOWES, Tim; Smith, Mark; Good, Gordon. Understanding and Deploying LDAP Directory Services. Macmillan Technical Publishing, 1998. 846 p.

[8] MILAGRES, Francisco Gomes e Galli, Marcio dos Santos. Aspectos de Segurança e Autenticidade na Troca de Mensagens. Developers Magazine. August 2000.

[9] Netscape Directory Server Documentation. Disponível em www.netscape.com .

^

NewsGeneration, um serviço oferecido pela RNP – Rede Nacional de Ensino e Pesquisa
Copyright © RNP, 1997 – 2004