Uso de softwares Open Source na autenticação de acesso
WEB em controlador de domínio NT
Aluno: Angelo Alberto Delben Filho, Orientador: Elio Lovisi Filho.
Departamento de Ciência da Computação
Faculdade de Ciência da Computação e Comunicação Social (FACICS)
Universidade Presidente Antônio Carlos
Campus Magnus - Campolide - MG
[email protected], [email protected]
Resumo. O presente artigo apresenta uma proposta de uma aplicação prática
de sistemas Open Source para autenticar navegação WEB em domínio NT
através da configuração do Squid, um servidor proxy existente no mundo do
software livre. Tem por finalidade facilitar a tarefa de administradores de
redes, pois autenticação de serviços é muito importante por motivos de
segurança e praticidade.
1. Introdução
Em segurança de dados de computadores, os administradores de redes procuram os mais
diversos meios para implementar confiabilidade, praticidade, tolerância a falhas,
disponibilidade, flexibilidade e performance nos sistemas de suas empresas. Desta
forma, os conceitos de criptografia, autenticação, backup, firewall e antivírus são as
soluções mais importantes atualmente para administradores de redes.
Existe uma infinidade de serviços relacionados com o computador que
necessitam manter a privacidade de cada usuário integrante do sistema assim como
permitir o gerenciamento de usuários de acordo com o perfil de cada um.
Nesse contexto, este artigo visa apresentar os resultados da aplicação da
autenticação como uma das formas mais importantes de se manter a identidade dos
usuários e o gerenciamento dos mesmos no serviço de acesso à internet. No
gerenciamento, o administrador de redes poderá controlar acessos, definir quotas para a
transferência de dados e obter histórico de operações feitas pelos usuários, como
exemplo, quantos sites foram acessados por dia. Visa também mostrar como configurar
o squid, uma ferramenta open source (Código aberto ao público) que permite várias
funções de gerenciamento e performance como cache (armazenar páginas mais usadas),
autenticação, controle de banda (tráfego), controle de horário de acesso, seleção de
páginas a serem negadas e histórico de acessos.
2. Controlador de domínio
Quando a quantidade de computadores envolvidos nas redes de computadores é muito
pequena, o costume é de se usar workgroups, que nada mais são do que grupos de
computadores que irão trabalhar na mesma rede. O conceito de rede pequena não está
relacionado com a quantidade de computadores e sim com a utilização de recursos
(compartilhamentos) existente nesta rede. Em se tratando de redes maiores, o uso de
workgroups já não é mais suficiente para que o administrador de redes possa gerenciar
recursos da rede como compartilhamento de arquivos, impressoras, perfis móveis e
níveis de permissões.
Assim sendo, algumas empresas proprietárias e outras de licença GPL (General
Public License) colocam no mercado softwares denominados controladores de domínio.
Como exemplos são citados o active directory do Windows Server ou NT e o SAMBA
do linux.
A função de um controlador de domínio é autenticar usuários, serviços,
armazenar o perfil móvel dos usuários e manter o nível de segurança. Neste caso será
utilizado o PDC (Controlador de domínio primário) para autenticar o serviço de
navegação à internet através de um servidor Proxy (Figura 1).
Figura 1. Modelo de Navegação com autenticação
3. Servidor Proxy
Com o advento da internet, o mundo inteiro está conectado na enorme teia mundial, a
WWW (World Wide Web). Para um ponto acessar outro, comumente utiliza-se um
browser (navegador) na qual a solicitação é feita através do protocolo1 de comunicação
TCP/IP (Transfer Control Protocol / Internet Protocol) onde os serviços,
principalmente http(HyperText Transfer Protocol) e ftp(File Transfer Protocol), podem
ser disponibilizados de um lado a outro do mundo.
Para haver comunicação de um lado a outro, é necessários que as duas pontas
conheçam a mesma linguagem ou protocolo. O TCP/IP através do encapsulamento da
camada de rede (IP) e transporte (TCP) fornece abstração para a camada de aplicação,
onde estão inseridos os protocolos de serviços como, por exemplo, http(porta 80), ftp
(portas 20 e 21), dns (porta 53), e telnet (porta 23) [IANA 2006].
1
Protocolo é descrição formal da estrutura de mensagem e das regras que dois computadores devem
obedecer ao trocar mensagens.
O serviço http foi criado para ser utilizado na transmissão de páginas e o ftp na
transmissão de arquivos através do protocolo de comunicação. Basicamente, estes dois
serviços compreendem mais de 90% da utilização da internet hoje.
Quando um destes serviços é acessado através de uma visita a um website
(página da internet) ou através do download (recebimento) de um arquivo, uma
requisição parte da máquina cliente até a máquina servidora. Geralmente, a distância
entre os pontos é muito grande e/ou a qualidade das linhas de transmissão muito ruins
fazendo com que a comunicação fique bem lenta. Levando em conta que as maiorias das
informações resgatadas dos websites não mudam, ocorre desperdício de tempo toda vez
que o browser tem que solicitar novamente uma imagem ou arquivo.
Para resolver estes problemas, utiliza-se do conceito de cache que é a capacidade
de armazenar todas as informações mais recentes ou as mais acessadas. O Objetivo do
servidor proxy é manter este cache além de outras funções como controle de banda e
manter histórico de acessos por usuário.
Desta forma, quando uma requisição de um cliente passa pelo servidor proxy, o
mesmo verifica na sua base de dados de arquivos em cache para verificar se existe uma
cópia atual do objeto solicitado. Se existir a cópia, o servidor entrega imediatamente
aquele objeto sem a necessidade de acessar o site, senão, ele terá que solicitar e aguardar
o tempo que será gasto pelo tráfego da informação nas linhas de transmissão que talvez
possam ser precárias.
Um software open source interessante é o SARG que é capaz de ler o arquivo de
histórico do Squid e gerar informações importantes por período como quantidade de
downloads, sites mais acessados, sites proibidos, porcentagem de acesso no cache (INCACHE), porcentagem de acesso fora do cache (OUT-CACHE) e tempo que o Proxy
gastou com determinado computador (Figura 2). Através deste relatório é possível
perceber que os usuários não são autenticados, pois ao invés do nome do usuário,
aparece o endereço IP do computador. [SARG 2006]
Figura 2. Relatório gerado no SARG
4. Autenticação
A autenticação é uma medida de segurança projetada para estabelecer a confiabilidade
de uma transmissão, mensagem, origem, ou para significar a verificação de uma
autorização individual para receber categorias específicas de informação. A forma mais
comum de autenticação é através do nome de usuário e senha, mas se estes dados não
forem transmitidos encriptados (em código) outras pessoas na rede podem obter estes
dados facilmente comprometendo assim a segurança.
Nas versões 2.5 e superiores do Squid há suporte para três tipos distintos de
autenticação: Basic, Digest and NTLM (NT LAN Manager).
A autenticação basic é baseada na transferência do nome de usuário e senha. Ela
não é um protocolo seguro de autenticação, pois a senha dos usuários é enviada
simplesmente em codificação BASE64 sem criptografia. [RFC 1999]
A autenticação digest assim como a autenticação basic, é baseada na
transferência do nome de usuário e senha. Mas, neste caso, a senha dos usuários pode
ser transmitida através de um formulário encriptado que é mais seguro que a simples
codificação de BASE64.
O NTLM é mecanismo proprietário desenvolvido pela Microsoft e atualmente
suporta apenas clientes de software Microsoft. Assim, com a autenticação digest,
permite uma conexão encriptada com o servidor, mas ainda é menos segura que a
autenticação digest e possui histórico de vulnerabilidades.
Os módulos de autenticação existentes para o Squid encontrados na literatura
foram os seguintes:
LDAP> Autentica os usuários em banco de dados LDAP(Lightweight Directory
Access Protocol). [OPENLDAP 2006]
MSNT> Autentica em um domínio Microsoft NT. [LIMA 2005]
PAM> O PAM (Módulo de Autenticação Plugável) permite usar uma variedade
de sistemas de autenticação. Ele funciona como uma interface entre
aplicação e a entidade autenticadora que pode ser um arquivo de senha,
um banco de dados ou até mesmo um dispositivo de hardware.
SMB_AUTH> Autentica em servidor SMB (Windows NT ou Samba). Como
este módulo serve pra autenticar em domínio NT, ele será colocado em
prática neste artigo.
GETPWNAN> Autentica através dos nomes de usuários e senhas do sistema
linux que por padrão estão nos arquivos passwd (usuários) e shadow
(senha encriptada).
NCSA> Autentica em simples arquivos de senhas gerados pelo utilitário
htpasswd que vem junto com o pacote do apache(servidor WEB).
NCSA(National Center for Supercomputing Applications) é também o
nome dado a um servidor WEB que deu origem ao famoso apache.
5. Recursos necessários
Para que seja possível implementar o assunto explanado é necessário um servidor Proxy
através do software Squid e um controlador de domínio da plataforma Linux ou
Windows. Na plataforma linux o serviço de controlador de domínio é exercida pelo
samba [SAMBA 2006], e na plataforma Windows pelos sistemas operacionais
seguintes: Windows NT, Windows 2000 Server e Windows 2003 Server [MICROSOFT
2006].
O módulo autenticador smb_auth é obtido através da instalação de um pacote
específico de cada distribuição linux ou através da compilação do código fonte
fornecido pelo desenvolvedor [SMB_AUTH 1999].
5.1. Configuração do Squid
O pacote de instalação do Squid está na maioria das distribuições linux, portanto para
instalá-lo basta estar conectado à internet ou ter em mãos todos os cd-roms e digitar:
apt-get install squid
Após o término da instalação, o arquivo de configuração default do squid já
estará disponível em /etc/squid/squid.conf. Este arquivo comanda toda a
funcionabilidade do Squid, portanto, ele será o alvo das atenções. Além do Squid, será
necessário instalar o módulo autenticador que irá receber uma solicitação do Squid,
fazer a interface entre o cliente e o controlador de domínio passando o resultado desta
interação de volta para o Squid.
O módulo encontra-se no site do desenvolvedor[SMB_AUTH 1999]. Seguindo
as instruções do site será possível compilar e instalar o smb_auth sem problemas. No
Debian linux este módulo já vem com o pacote do Squid e no Conectiva Linux basta
digitar:
apt-get install squid-auth
Como exemplo, vamos considerar que o PDC do domínio Windows tem o
endereço IP 10.1.1.1, e o nome do domínio é DOMINIO. Desta forma, é necessário
adicionar a seguinte linha abaixo no arquivo squid.conf:
authenticate_program /usr/local/squid/smb_auth -W DOMINIO -U 10.1.1.1
A documentação do smb_auth informa que é preciso incluir um arquivo com
nome proxyauth na pasta netlogon do PDC para que possa ser acessada com permissão
de leitura para qualquer usuário que possa acessar os serviços do proxy Squid. Este
arquivo deve conter simplesmente a palavra allow e será acessado pela rede através do
seguinte nome de compartilhamento \\NomeNetbiosDoPDC\netlogon\proxyauth.
A seguir uma noção da configuração básica do arquivo de configuração do Squid
no que diz respeito à autenticação e a definição de acesso:
# Definindo uma ACL2 (Access Control Lists) chamada autenticar, do tipo proxy_auth
# (ou seja, haverá autenticação utilizando a tag authenticate_program). O parâmetro
# REQUIRED indica que qualquer usuário será aceito, desde que ele tenha uma senha
no domínio.
acl autenticar proxy_auth REQUIRED
# Definindo uma ACL chamada usuarios, também do tipo proxy_auth, mas desta vez
# indicando os nomes de 2 usuários que terão tratamento diferenciado.
acl usuarios proxy_auth User1 User2
# Estas ACLs não tem função na autenticação, mas definem uma ACL horario, como
# sendo o período entre 07:00 e 22:00 e uma ACL chamada todos, que representa todos
# os endereços IP de origem possíveis.
acl horario time 07:00-22:00
acl todos src 0/0
# Definindo uma ACL chamada negado, do tipo dstdomain relacionando nomes de
# domínio que se desejam bloquear
acl negado dstdomain porno.net
# Definindo uma ACL chamada excecao, onde serão relacionados os usuários que
# serão exceção à regra negado.
acl excecao proxy_auth chefe
# Permitindo que os componentes da ACL excecao acessem os componentes da ACL
# negado.
http_access allow excecao negado
2
ACL(Access Control Lists) são listas de controle de acesso usadas pelo Squid para definir regras
# Negando acesso a todos os sites relacionados na ACL negado que não foram liberados
# até o momento com a regras das linhas anteriores(exceção). Assim, se um usuário não
# caiu na regra anterior, ele simplesmente não poderá acessar o site www.porno.net.
http_access deny negado
# Permitindo acesso aos componentes da ACL usuarios. User1 e User2 vão poder
# utilizar o Proxy independente do horário, desde que informem o login e a senha
# corretamente.
http_access allow usuarios
# Assegurando que qualquer usuário(exceto os da ACL usuarios, já cobertos pela regra
# anterior) que tente acessar seja autenticado e que esteja preso ao horário estipulado.
# Se o usuário tentar acessar fora deste horário ele será barrado.
http_access allow autenticar horario
# Negando acesso a todos. Assim, se um usuário não caiu nas regras anteriores, ele
# simplesmente não poderá usar o proxy.
http_access deny todos
Após efetuar as alterações no arquivo de configurações, o processo do Squid
deve reler o arquivo com a seguinte linha de comando:
squid –k reconfigure
5.2. Configuração dos clientes
Para adicionar um computador cliente em um domínio existente deve-se acessar o "Meu
Computador > Propriedades > Identificação de rede > Propriedades" e colocar o nome
do computador e o nome do domínio, que é definido no PDC (Figura 3).
Figura 3. Propriedades do sistema
Na tela de identificação que é aberta a seguir, será solicitado o login e a senha do
administrador do domínio para a inserção do computador athenas no domínio
DOMINIO. É normal que a conexão inicial demore uns 30 segundos. Se tudo der certo,
irá aparecer a mensagem de sucesso no ingresso ao domínio (Figura 4).
Figura 4. Mensagem de ingresso ao domínio
Para configurar a navegação de um cliente baseado em um servidor proxy com
autenticação, deve-se observar as configurações do Proxy no Internet Explorer (Figura
5). No campo endereço, utiliza-se o endereço IP do servidor proxy e a porta TCP onde
este serviço de proxy é oferecido. Como o servidor proxy em questão autentica em
domínio NT, quando este computador for acessar WEB, primeiramente ele passa pelo
servidor proxy, o qual irá iniciar o processo de autenticação enviando um formulário
solicitando login e senha no primeiro acesso de cada instância do browser aberto pelo
usuário.
Após a primeira autenticação o usuário fica livre de ter que autenticar novamente
enquanto o browser estiver aberto.
Figura 5. Configurações de Proxy
6. Considerações finais
Os resultados obtidos demonstram que é possível de forma acessível a todos utilizar o
controle de acesso a usuários com poucas linhas de configuração. Todos os usuários
autenticados permite a geração de relatórios específicos e um controle de sites
inadequados por qualquer que seja o motivo.
Todos os módulos possuem um problema grave de segurança quando usam a
autenticação na forma basic, pois tanto o nome do usuário como a senha trafega sem
criptografia pela rede local. Os módulos que autenticam em domínio NT são os mais
perigosos, pois a senha de acesso à internet é a mesma utilizada para acessar a todos os
computadores da rede.
O Squid, a partir da versão 2.5 permite a autenticação na forma digest, o qual
impede que a senha trafegue na rede sem criptografia.
Este trabalho poderá ser utilizado mais adiante como idéia para a autenticação de
outros serviços como POP3 e SMTP, que são serviços responsáveis pelo envio e
recebimento de e-mails.
7. Referências Bibliográficas
[VESPERMAN 2001] Vesperman, Jennifer. Autenticação e o Squid. Disponível em:
http://geocities.yahoo.com.br/cesarakg/AuthenticationAndSquid.html. Acesso em 15
fev. 2006
[LIMA 2005] Lima, Willian da Rocha. Instalando Squid 2.5 e Autenticando no
Active Directory. Disponível em: http://www.linuxit.com.br/section-printpage670.html. Acesso em 15 fev. 2006
[SQUID 2006] Proxy Squid. Squid Web Proxy Cache. Disponível em:
http://www.squid-cache.org. Acesso em 16 fev. 2006
[OPENLDAP 2006] OpenLDAP Foundation. Introduction to OpenLDAP Directory
Services. Disponível em: http://www.openldap.org/doc/admin23. Acesso em 26 fev.
2006
[SMB_AUTH 1999] Módulo de autenticação em Proxy. SMB Proxy Authentication.
Disponível
em:
http://www.hacom.nl/~richard/software/smb_auth_pt_br.html.
Acesso em 12 fev. 2006
[CAMPOS 2003] Campos, Augusto César. Autenticação no Squid. Disponível em:
http://br-linux.org/tutoriais/000402.html. Acesso em 25 fev. 2006
[LLC 2002] LLC, SecurityGlobal.net. Squid Proxy Caching Server Msntauth
Authentication Module Format String Hole Lets Remote User Execute
Arbitrary
Code
on
the
Server.
Disponível
em:
http://www.securitytracker.com/alerts/2002/Jun/1004446.html. Acesso em 03 mar.
2006
[RFC 1999] RFC, Request for Coments. HTTP Authentication: Basic and Digest
Access Authentication. Disponível em: http://www.ietf.org/rfc/rfc2617.txt?
number=2617. Acesso em 20 mar. 2006
[JUNIOR 2003] Junior, Alceu Rodrigues de Freitas. Squidnomicon. Disponível em:
http://www.geocities.com/glasswalk3r/linux/squidnomicon-online.html. Acesso em
24 mar. 2006
[BASTOS 2004] Bastos, Eri Ramos. Configurando um Squid Ninja. Disponível em:
http://www.linuxman.pro.br/squid. Acesso em 25 mar. 2006
[MICROSOFT 2006] Microsoft, Corporation. Installing Windows Server 2003 as a
Domain
Controller.
Disponível
em:
http://www.microsoft.com/technet/prodtechnol/windowsserver2003/technologies/dir
ectory/activedirectory/stepbystep/domcntrl.mspx. Acesso em 25 mar.2006
[SAMBA 2006] SMB file/printer Server for Unix. Opening Windows to a Wider
World. Disponível em: http://www.samba.org – Acesso em 25 mar. 2006
[SARG 2006] Gerador de relatórios. Squid Analysis Report Generator. Disponível
em: http://sarg.sourceforge.net. Acesso em 04 abr. 2006
[IANA 2006] The Internet Corporation for Assigned Names and Numbers. Port
Numbers. Disponível em: http://www.iana.org/assignments/port-numbers. Acesso
em 04 abr. 2006
[MARCELO 2003] Marcelo, Antônio. Guia Rápido do Administrador de Redes
Squid: Configurando o Proxy para linux. Rio de Janeiro: Brasport, 2003. 80 p.
[SATOMI et al. 2006] Satomi, Emerson; Silva, Rafael Peregrino; Rigues, Rafael
Pereira. Linux Magazine. São Paulo: Linux New Media do Brasil, 2006. 98 p.
Download

Uso de softwares Open Source na autenticação de acesso