FACULDADE SALESIANA DE VITÓRIA PÓS-GRADUAÇÃO EM SEGURANÇA DE REDES DE COMPUTADORES ROGÉRIO PEREIRA GUALBERTO ROMMEL BAIA SILVA Proposta de Controle Eficaz do Acesso à Internet VITÓRIA 2007 ROGÉRIO PEREIRA GUALBERTO ROMMEL BAIA SILVA Proposta de Controle Eficaz do Acesso à Internet Monografia apresentada ao Curso de Pósgraduação em Segurança de Redes de Computadores da Faculdade Salesiana de Vitória, como requisito parcial para obtenção do título de Especialista em Segurança de Redes de Computadores. Orientador: Prof. M.Sc. Sérgio Teixeira VITÓRIA 2007 Dados Internacionais de Catalogação-na-publicação (CIP) (Biblioteca da Faculdade Salesiana de Vitória, Espírito Santo, Brasil) G899p Gualberto, Rogério Pereira, 1966 Proposta de Controle Eficaz do Acesso à Internet / Rogério Pereira Gualberto, Rommel Baia Silva. – 2007. 54 f. : il. Orientador: Sérgio Teixeira. Monografia (pós-graduação em Segurança de Redes de Computadores) – Faculdade Salesiana de Vitória. 1.Redes de Computadores - Segurança. 2. Controle de Acesso. 3. Squid. I. Gualberto, Rogério Pereira. II. Teixeira, Sérgio. III. Faculdade Salesiana de Vitória. IV. Título. CDU: 004.7 ROGÉRIO PEREIRA GUALBERTO ROMMEL BAIA SILVA PROPOSTA DE CONTROLE EFICAZ DO ACESSO À INTERNET Monografia apresentada ao Curso de Pós-graduação em Segurança de Redes de Computadores da Faculdade Salesiana de Vitória, como requisito parcial para obtenção do título de Especialista em Segurança de Redes de Computadores. Aprovada em 13 de agosto de 2007. COMISSÃO EXAMINADORA _____________________________________ Prof. M.Sc. Sérgio Teixeira Orientador _____________________________________ Prof. D.Sc. Tânia Barbosa Salles Gava Co-orientador _____________________________________ Prof. M.Sc. Rodrigo Bonfá Drago Petróleo Brasileiro S.A. (PETROBRAS) AGRADECIMENTOS Ao Prof. Sérgio Teixeira, pela orientação durante esta jornada, à Profª Tânia Barbosa Salles Gava que muito contribuiu na realização deste projeto, aos colegas de curso que de alguma forma também são responsáveis por este trabalho, às nossas esposas pela compreensão e incentivo, aos nossos pais que, mesmo distantes, também foram incentivadores e a todos que direta ou indiretamente contribuíram para que pudéssemos realizar mais esta etapa da nossa vida. RESUMO Este trabalho tem como objetivo apresentar uma proposta de implementação de uma solução eficaz no controle de acesso à Internet, apresentando um conjunto de ferramentas com funções complementares, no intuito de atingir um alto grau de segurança. Além disso, é proposto um sistema hierarquizado de regras de controle de acesso à Internet através de uma estruturação lógica. Palavras-chave: Redes de Computadores - Segurança, Controle de Acesso, Squid. ABSTRACT This paper has as the objective to supply the reader the necessary agreement to allow the implementation of an efficient solution in the access control to the Internet presenting a set of systems with complementary functions between itself, in intention to reach one high degree of security. Moreover we consider a hierarchic system of rules of control of access to the Internet through a logical structure. Keywords: Computer Networks – Security, Access Control, Squid. LISTA DE FIGURAS Figura 1 – Total de incidentes reportados ao CERT.br por ano..............................................12 Figura 2 – O serviço de Proxy ................................................................................................ 17 Figura 3 – Fluxo da requisição do cliente via Filtro de Conteúdo ........................................ 39 Figura 4 – Arquivos de configuração do Dansguardian......................................................... 42 Figura 5 – Relatório de acesso à Internet ...............................................................................47 SUMÁRIO 1 - INTRODUÇÃO ...........................................................................................................10 1.1 MOTIVAÇÃO.............................................................................................................13 1.2 OBJETIVOS................................................................................................................13 1.3 METODOLOGIA.......................................................................................................14 1.4 ORGANIZAÇÃO DO TRABALHO.........................................................................14 2 – CONCEITOS BÁSICOS DE PROXY........................................................16 2.1 CONTROLE DE ACESSO........................................................................................17 2.2 FILTRO DE CONTEÚDO.........................................................................................19 2.3 CONTROLADOR DE DOMÍNIO ...........................................................................20 2.4 AUTENTICAÇÃO DE USUÁRIOS..........................................................................21 3 – O MECANISMO DE CONTROLE DE ACESSO NO SQUID..................22 4 – PROPOSTA DE IMPLEMENTAÇÃO DO CONTROLE DE ACESSO NO SQUID............................................................................................................................30 4.1 CRIAÇÃO DAS ACL’S..............................................................................................30 4.2 CRIAÇÃO DAS REGRAS DE ACESSO.................................................................34 5 - CONFIGURAÇÃO DO FILTRO DE CONTEÚDO NO DANSGUARDIAN..............................................................................................................39 6 - IMPLEMENTAÇÃO DA ANÁLISE DE LOGS VIA SARG ......................46 6.1 CONFIGURANDO O SARG......................................................................................48 6.2 EXECUTANDO O SARG......................................................................................... 51 7 - CONSIDERAÇÕES FINAIS E TRABALHOS FUTUROS........................53 8 - REFERÊNCIAS BIBLIOGRÁFICAS.................................................................54 10 1 - INTRODUÇÃO O controle no acesso à Internet proveniente de redes privativas é um tema bastante controverso. Algumas pessoas insistem em dizer que os profissionais contratados por uma empresa têm direito à privacidade no acesso a Internet, sem levar em consideração que um contrato de trabalho foi assinado e que as atividades são exercidas em nome da empresa, em seu ambiente físico, e utilizando-se de recursos da própria empresa. Contudo, a alegação das empresas é bastante convincente: minimizar os riscos de vírus, trojans1 e outras pragas da Internet e aumentar a produtividade. A fim de obterem uma base legal, as corporações têm adotado fortemente a estratégia de embasarem-se em uma política de segurança ou em um Termo de Compromisso assinado pelo funcionário, quando de sua entrada na empresa, em que toma conhecimento e concorda com o procedimento. Pesquisas realizadas nos últimos anos têm demonstrado pelo tipo de site acessado, que a produtividade dos funcionários com acesso irrestrito à Internet em ambiente de trabalho é baixa. A seguir, algumas estatísticas sobre o mau uso da Internet: - Em média um terço do tempo gasto on-line na Internet nada tem a ver com trabalho; - 75% das empresas citam os empregados como a principal causa, voluntária ou involuntária, das invasões; - 45% dos negócios informaram que acessos não autorizados são feitos de dentro da própria empresa; - Existe mais de 43 milhões de usuários utilizando MSN no horário de trabalho, para os fins da empresa ou para fins pessoais, e apenas um quarto das companhias tem uma política clara para o uso do MSN no trabalho; 1 trojans são arquivos impostores que afirmam ser desejáveis mas, na verdade, são mal-intencionados. Uma distinção muito importante dos verdadeiros vírus é que eles não se reproduzem, como os vírus. São conhecidos também como “Cavalo e Tróia”. Um exemplo clássico do Cavalo de Tróia é um objeto que faz a autenticação de usuários e grava seu nome e sua senha em um arquivo. 11 - Próximo de 80% do uso de Mensagens Instantâneas é feito através de Serviços Grátis como o AOL, MSN e Yahoo, expondo empresas a sérios riscos de segurança. Os hackers se aproveitam dessas falhas para uma invasão; - 73% de todas as pesquisas sobre filmes em redes de compartilhamento de arquivos foram voltadas para a pornografia; - 70% de arquivos pornôs são baixados (download) entre 9:00 e 17:00, ou seja, durante o expediente normal de trabalho; - 37% dos usuários de Internet visitaram um Site pornô na Web; - Uma em cada três empresas detectou algum “Spyware2” em suas redes; - Existem mais de 7.000 programas “spywares”. Eles são enviados por hacker interessado em obter senhas de acessos a contas bancárias, por exemplo; - 77% dos acessos às Rádios On-line (UOL, TERRA) são feitos entre 5:00 e 17:00 h; - 44% dos empregados usam ativamente Música On-Line; - Apesar de 99% das empresas usarem software antivírus, 82% delas foram atacadas por vírus e worms3. A maioria dos ataques, com códigos maliciosos, usualmente eram para roubar dados confidenciais. O Gráfico da Figura 1 mostra o total de incidentes ocorridos em redes que foram espontaneamente notificados ao CERT.br (Centro de Estudos, Resposta e Tratamento de Incidentes de Segurança no Brasil). O CERT.br é responsável por receber, analisar e responder a incidentes de segurança envolvendo redes conectadas à Internet no Brasil. 2 Spyware é um programa mal intencionado que visa a obtenção de dados confidenciais do usuário, muito utilizado para a obtenção de senhas bancárias e coleta de hábitos de navegação 3 worms são programas que podem se propagar de um sistema para outro através de uma rede de computadores sem usar um arquivo hospedeiro. 12 Figura 1 – Total de incidentes reportados ao CERT.br por ano. Uma análise do gráfico da Figura 1 mostra que o número de incidentes tem aumentado muito nos últimos anos, sendo que em 2006 esse número quase triplicou. Esse fato evidencia a necessidade do aumento dos investimentos feitos em segurança de redes. 13 1.1 - MOTIVAÇÃO Como visto anteriormente, o acesso irrestrito à Internet pode trazer prejuízos, principalmente no âmbito de empresas. No entanto, existem soluções que podem minimizar ou até mesmo solucionar este problema. Por exemplo, quando se tem um servidor que controla o acesso à Internet, os computadores da rede local não precisam ter nenhuma forma de acesso direto à rede mundial de computadores. Dessa forma, podem-se concentrar os esforços de segurança e administração dos acessos externos nesse mesmo servidor. Além disso, com esse controle centralizado, podem-se criar regras avançadas de restrição de acesso, podendo definir que determinados computadores ou usuários poderão ter acesso irrestrito. Outros poderão acessar apenas um determinado conjunto de sites. É possível restringir um determinado conjunto de sites cuja URL4 possua uma determinada palavra ou expressão regular. Estas regras podem variar de acordo com o horário, permitindo a criação de regras que restrinjam o tráfego no horário de expediente e liberem nos horários de menor demanda. A necessidade de controlar o acesso à Internet proveniente da rede interna com o objetivo de aumentar a produtividade da empresa e de diminuir os riscos associados ao acesso irrestrito à rede mundial de computadores motivou a implementação desta solução baseada em software livre 1.2 OBJETIVOS O objetivo deste trabalho é propor uma solução de controle de acesso à Internet através da utilização de softwares específicos, bem como a construção de um conjunto de regras hierárquicas para controlar esse acesso de forma eficaz. 4 URL (Uniform Resource Locator) é o endereço de um recurso ou arquivo disponível na Internet 14 1.3 METODOLOGIA Para a elaboração desse trabalho foi feita uma revisão bibliográfica aprofundada sobre o software “squid”, que implementa o serviço de Proxy5 em uma rede de computadores. Em seguida foi feito um estudo sobre os mecanismos existentes de controle de acesso, com ênfase na “ACL” – Access Control List. Com isso, foi possível criar um conjunto de regras e organizá-las de forma hierárquica. Também foi analisada a utilização do software DansGuardian, de análise de conteúdo de páginas web, e definido um conjunto de configurações básicas para seu funcionamento adequado. O objetivo desta análise é detectar o assunto sobre o qual trata a página de Internet solicitada, e classificar se a mesma é compatível com a política da organização. Finalmente, foi exposta a forma adequada de se configurar e utilizar o software Sarg de análise de logs6 do squid, de forma a se obter relatórios, claros e objetivos, de acesso à Internet. Com o desenvolvimento destas etapas foi possível encontrar uma solução para garantir um acesso eficaz e ao mesmo tempo seguro à Internet. 1.4 ORGANIZAÇÃO DO TRABALHO Esse trabalho segue a seguinte organização: Capítulo 2 – Conceitos Básicos - Apresenta alguns conceitos necessários para entender o funcionamento do Proxy na realização do controle de acesso à Internet. São apresentados os conceitos de proxy, mecanismos de controle de acesso e filtro de conteúdo, controlador de domínio e autenticação de usuário. 5 Proxy é um software que centraliza o acesso de todas as estações de uma rede à Internet, podendo assim realizar várias tarefas como: armazenar localmente cópias das páginas mais acessadas para economizar banda; normatizar o acesso por horário, usuário e tipo de página acessada, entre outras possibilidades. 6 Log é um arquivo que guarda informações passadas (registros). Existem registros/logs de erros, páginas visitadas (”Histórico”), entre outros, que podem ajudar na identificação e solução de problemas 15 Capítulo 3 – Controle de acesso no Squid – Apresenta como é feito o controle de acesso no software squid, detalhando a forma de construção e os tipos de ACL’s que serão utilizados na solução apresentada. Apresenta também o funcionamento das regras de acesso e como elas devem ser estruturadas. Capítulo 4 – Implementação do controle de acesso no Squid – Apresenta detalhes da implementação de uma solução que busca ser eficaz no controle de acesso no Squid, através da definição das ACL´s e de uma hierarquização de regras. Capítulo 5 – Configurando o filtro de conteúdo do Dansguardian – Apresenta a configuração do software Dansguardian, que trabalha em conjunto com o Squid, realizando um filtro de conteúdo nas páginas acessadas. Capítulo 6 - Implementando a análise de logs Via Sarg – Apresenta a implementação de uma ferramenta para analisar os logs do Squid de forma a fornecer um conjunto de relatórios administrativos sobre a utilização da Internet. Capítulo 7 - Considerações finais e trabalhos futuros – apresenta as considerações finais sobre o trabalho e propostas de continuidade ao trabalho proposto. Capítulo 8 - Referências Bibliográficas – Referências bibliográficas utilizadas na elaboração do trabalho. 16 2 – CONCEITOS BÁSICOS DE PROXY Este capítulo apresenta alguns conceitos que são necessários para que se possa entender a proposta deste trabalho em apresentar uma solução para o controle de acesso à Internet, centralizado em um servidor de rede. O proxy tem a função de concentrar todas as requisições das mais diversas origens, canalizando-as por uma mesma saída. Ele é que, efetivamente, faz a requisição ao destino. Funciona como um intermediário entre o cliente e o servidor de destino. Esse intermediário efetua tais requisições segundo regras, ou filtros, implementados pela ferramenta de proxy. Tais filtros têm a função de proibir ou liberar acessos a sites, endereços identificadores de máquinas e redes, strings e até limitar velocidade de acesso. Além disso, são capazes de coibir o acesso através de regras que atuam sobre os clientes da rede interna: nomes de usuários, grupos de usuários, endereços identificadores de máquinas etc. Outra função bastante usual no proxy é o serviço de cache, na qual as páginas acessadas ficam armazenadas em uma memória temporária, de forma que se houver um novo acesso à mesma informação, o proxy fornecerá ao cliente a informação já armazenada, dispensando um novo acesso aos servidores, com conseqüente redução no tempo de resposta. O serviço de cache tem esse propósito: ganho de performance. Soluções presentes no mercado contemplam a utilização dos serviços de proxy e cache juntos, sendo que o tratamento da informação entre tais serviços é realizado automaticamente pela aplicação sem a necessidade de intervenção do administrador. A figura 2 mostra o esquema de funcionamento de um sistema de acesso à Internet baseado em proxy. 17 Figura 2 – O serviço de Proxy 2.1 CONTROLE DE ACESSO Para controlar, efetivamente, o acesso à Internet, são utilizadas várias ferramentas que permitem identificar que usuário e/ou máquina da rede acessou determinado site em determinada data e hora, gerando, assim, informações que podem ser utilizadas pela gerência para tomar as devidas providências. Os Mecanismos de Controle de Acesso se propõem a definir que usuários ou processos têm acesso a que recursos do Sistema Computacional, e com que permissões. Estes mecanismos podem ser aplicados em qualquer nível, desde a aplicação, definindo os acessos dos usuários, dos processos e suas respectivas páginas de memória. A próxima seção mostra os principais modelos de mecanismos de controle de acesso que são utilizados para prevenir os acessos indevidos por usuários não autorizados. 18 2.1.1 Access Control List O Access Control List, ou simplesmente ACL, é o mecanismo onde é criada uma lista para cada objeto (recurso do sistema), com a identificação do usuário ou processo, e suas permissões para aquele objeto especifico. A ACL é dito um mecanismo orientado a objeto. As ACL’s tornam-se sobrecarregadas de forma gradativa à medida que a quantidade de recursos compartilhados de um sistema aumenta. Por isso, é comum o agrupamento de usuários de acordo com o seu perfil funcional. No entanto, isso representa uma flexibilização perigosa no mecanismo de controle de acesso. 2.1.2 Capabilities Este mecanismo, ao contrário da ACL, cria uma lista para cada usuário ou processo com a identificação do objeto, e as permissões que o usuário ou processo possui sobre este objeto específico. Este mecanismo é conhecido como orientado a usuário. Este mecanismo resolve o problema da sobrecarga das ACL’s, tendo em vista que cada usuário ou processo possui uma lista com as Capabilities somente para os objetos compartilhados nos quais têm algum tipo de permissão de acesso. 2.1.3 Access Control Matriz O Access Control Matriz, ou ACM, é o somatório dos dois mecanismos anteriores formando uma estrutura equivalente a uma matriz, onde as linhas são compostas pelos usuários, as colunas por objetos e os elementos são listas de permissões. Cada coluna de uma ACM é uma ACL e cada linha é uma Capability. 19 2.2 FILTRO DE CONTEÚDO O serviço de Proxy funciona muito bem para atender às necessidades para as quais foi criado: intermediar requisições de clientes com destino a servidores na Internet, além de efetuar filtros baseados em listas de controle de acesso capazes de bloquear o acesso a determinados sítios. Contudo, no que diz respeito à proibição de acesso a sítios na Internet, a capacidade de proibir o acesso de acordo com o conteúdo de cada página acessada não pode ser implementada exclusivamente através de servidores proxies. Tal necessidade é suprida por ferramentas conhecidas como “filtros de conteúdo”. Essas ferramentas percorrem cada página acessada antes de disponibilizá-la ao usuário e efetuam uma verificação de termos, palavras e frases consideradas inadequadas, segundo a base de dados de tais conteúdos. A maioria dessas aplicações permite ao administrador informar dentre o conteúdo dessas listas, o que efetivamente será considerado termo indevido, além de permitir acréscimo de conteúdo a serem bloqueados. Segundo "Internet Filtering Alternatives White Paper" (SOFTWARE, 2003), os filtros de conteúdo podem ser divididos nos seguintes tipos: Appliances dedicados à filtragem : esta categoria inclui dispositivos especificamente projetados para controle e monitoração do acesso à Internet; Servidores pré-configurados para filtragem: esta categoria inclui soluções onde os equipamentos servidores de propósito geral são configurados de fábrica com aplicação de filtragem de conteúdo; Aplicação de filtragem baseada em servidor: esta categoria inclui programas que trabalham com sistemas operacionais em plataforma Windows NT ou Unix, ou como um plugin para aplicações de servidores proxy; 20 Addons para serviço de filtragem nos firewalls7: serviços que podem ser adicionados ao firewall ou a outros dispositivos de rede; Aplicação de filtragem baseada no cliente: esta categoria inclui aplicações para Windows e Macintosh e plugins de navegadores que são adicionados a tais características no computador do usuário. De uma forma mais específica, pode-se definir o filtro de conteúdo baseado em pesos com uma nova categoria. Assim, é possível informar à aplicação que o simples aparecimento de uma determinada palavra em um sítio não é suficiente para bloqueá-lo. No entanto, um outro termo pode ser considerado indevido pelo fato de aparecer várias vezes no mesmo sítio. 2.3 CONTROLADOR DE DOMÍNIO O uso de redes de computadores em ambientes de trabalho tem aumentado a cada dia. Isto é facilmente percebido ao se analisar pequenas empresas que não têm a informática como área fim. Essas empresas, que até bem pouco tempo utilizavam-se de máquinas de datilografia, renderam-se à tecnologia. E, hoje, é muito difícil uma micro-empresa que não faça uso de computadores no seu dia-a-dia. Mesmo em ambientes mais restritos, com poucos computadores, tem-se percebido que a utilização de redes ponto-a-ponto não se adequa muito bem, uma vez que as informações associadas às atividades da empresa não estão localizadas em um ponto central, com todos os cuidados necessários: backup das informações, controle de acesso, garantia de disponibilidade, dentre outros. A fim de prover um ambiente de rede mais adequado às atividades da corporação, além de equipamentos servidores que mantenham a guarda das informações, faz-se necessário a implementação de uma outra solução capaz de autorizar e autenticar os funcionários na rede privativa da instituição: o controlador de domínio. 7 Firewall é o nome dado ao dispositivo de uma rede de computadores que tem por função regular o tráfego entre redes distintas e impedir a transmissão e recepção de dados nocivos ou não autorizados de uma rede a outra. 21 A garantia de acesso dos usuários ao ambiente de rede da empresa permitirá associar as ações realizadas na rede ao usuário que efetivamente a executou, sendo esse também o papel do controlador de domínio. Existem algumas soluções de controladores de domínio disponíveis no mercado. A maioria delas é proprietária. Contudo, soluções baseadas em software livre também estão disponíveis para uso e serão consideradas neste trabalho. 2.4 AUTENTICAÇÃO DE USUÁRIOS A fim de obter acesso a uma rede, o usuário solicita sua autenticação informando nome na rede e a senha de acesso. O sistema efetua a autenticação verificando se o nome de usuário e a senha informada estão realmente associados àquele usuário específico e se estão corretos. Quando um usuário obtém acesso à rede, isso significa que ele foi autenticado. Porém, inúmeras aplicações utilizam-se do conceito de autenticação de usuários para seu funcionamento. Algumas delas utilizam módulos adicionais para efetivar a autenticação através de diferentes protocolos como Kerberos, LDAP e NTLM. Outras aplicações apenas validam a autenticação efetuada anteriormente garantindo os acessos do usuário. Para que a validação do usuário autenticado funcione a contento, algumas ferramentas adicionais devem ser implementadas, algumas na própria aplicação e outras nos servidores que executam as aplicações. As redes em funcionamento nas instituições, atualmente, já implementam um esquema de autenticação de usuários, quer seja em controladores de domínios proprietários, quer baseados em software livre. Tais esquemas de autenticação devem ser incorporados a esta solução de controle de acesso à Internet, fazendo, assim, a validação da autenticação do usuário. Vários esquemas de autenticação são suportados pelas ferramentas utilizadas, dentre os quais podemse destacar: LDAP, NTLM, PAM, SMB e winbind. 22 3 – O MECANISMO DE CONTROLE DE ACESSO NO SQUID Uma das melhores formas para se controlar o acesso à Internet é através da utilização de um programa de proxy. Dentre os diversos proxies disponíveis no mercado, um dos mais utilizados em todo o mundo é o Squid, que é um software livre e possui versões para diferentes distribuições linux. Além disso, se destaca seu excelente desempenho e grande flexibilidade de configuração. O Squid tem um eficiente mecanismo de controle de acesso à Internet. Este mecanismo permite a criação de listas capazes de filtrar desde simples domínios até tipos de conteúdos específicos (myme types). Este controle é feito por ACL´s que são inseridas dentro do arquivo /etc/squid/squid.conf. As ACL's - (Access Control Lists) ou listas de controle de acesso, constituem-se na grande flexibilidade e eficiência do Squid. É através delas que se podem criar regras para controlar o acesso à Internet das mais diferentes formas. Praticamente todo o processo de controle do Squid é feito com o seu uso. O uso das listas de controle de acesso é a parte mais importante da configuração de um servidor proxy Squid, pois se bem configuradas podem trazer um nível de segurança muito bom para a rede. Entretanto se mal configuradas podem ter o resultado oposto, já que além da falsa sensação de segurança não será aproveitada a principal funcionalidade do Squid. As ACL's são definidas da seguinte forma: acl nome tipo string | “arquivo” onde: - acl é a palavra chave que identifica uma acl; - nome é o identificador único de cada acl; - tipo é a funcionalidade da acl; - string é um conjunto de palavras que farão parte do grupo definido pela acl; - arquivo é o endereço de um arquivo que conterá as palavras que farão parte do grupo definido pela acl. 23 Existem vários tipos de ACL que podem ser utilizadas. A seguir serão detalhados os tipos utilizados na proposta desse trabalho. src - tipo utilizado para indicar endereços IP de origem. Pode-se especificar um endereço de rede, como 192.168.16.0/24, um endereço de um determinado host, como 192.168.16.10/24 ou uma faixa de endereços, como 192.168.16.10-192.168.16.20/24; dst - semelhante ao tipo anterior, mas está relacionada ao endereço de destino; time - usado para especificar dias da semana e horários. Os dias da semana são definidos através de letras que os representam, e os horários através de intervalos na forma hora:minuto_inicial-hora:minuto_final. Os dias da semana são especificados assim: S Sunday (Domingo), M - Monday (Segunda-Feira), T - Tuesday (Terça-Feira), W Wednesday (Quarta-Feira), H - Thursday (Quinta-Feira), F - Friday (Sexta-Feira) e A Saturday (Sábado); url_regex - Este tipo percorre a URL a procura da expressão regular especificada. Deve ser observado que a expressão é case-sensitive, para que seja case-insensitive deve ser usada a opção -i. É o tipo mais comum de ACL dada a flexibilidade proporcionada pelo uso de expressões regulares; urpath_regex - Tipo semelhante a url_regex, mas procura a expressão regular na URL sem levar em conta o nome do servidor e o protocolo, isto quer dizer que a procura vai ser feita apenas na parte da URL após o nome do servidor, como por exemplo, na URL http://www.servidor.com.br/pasta/sexo.html a procura será realizada apenas na parte /pasta/sexo.html. Ela é também case-sensitive, para que seja case-insensitive deve ser usada a opção -i; port - Realiza o controle pela porta de destino do servidor, neste tipo deve ser especificado o número da porta; proto - Serve para especificar o protocolo, como por exemplo FTP ou HTTP; 24 method - Especifica o tipo de método usado na requisição, como por exemplo GET, CONNECT ou POST; auth_param basic – Especifica o método a ser utilizado pelo squid caso este execute algum tipo de autenticação externa em algum servidor LDAP, AD, entre outros. Nesse trabalho o tipo de autenticação em um servidor AD através do programa msnt_auth. proxy_auth - Tipo usado para implementar autenticação de usuários no proxy. A autenticação é feita com uso de softwares externos. Pode ser passado o nome dos usuários ou usada a opção REQUIRED para que seja autenticado qualquer usuário válido; Se as ACLs do Squid são as listas de definições do squid, os operadores HTTP_ACCESS são as correlações entre estas ACLs, que resultarão na liberação ou no bloqueio de acessos. Existem diversos outros operadores, no entanto, como estes são os mais importantes, apenas eles serão detalhados no texto. A ordenação lógica das HTTP_ACCESS é a chave para que o Squid funcione de modo confiável e seguro. Dessa forma, sua ordenação de maneira ilógica poderá trazer resultados indesejados como bloqueios não necessários, ou pior, liberação de acessos inapropriados. Para entender como ordenar as HTTP_ACCESS faz-se necessário primeiramente compreender seu funcionamento. Sua estrutura geral é: http_access allow | deny acl1 acl2 acl3 ... O Squid faz a análise destas ACLs mediante as seguintes regras: 1. As regras são lidas “de cima para baixo”, ou “da primeira para a última”; 2. Uma vez que uma regra for atendida não haverá a analise das demais, não havendo possibilidade de utilização de case ou if para redirecionar o Squid de uma regra para outra em hipótese de atendimento de uma delas; 25 3. As regras são “case sensitive”, assim uma simples diferença entre minúsculas e maiúsculas poderá anular a regra, pois não mais irão coincidir. A utilização da opção –i contorna esta questão; 4. Caso nenhuma regra seja atendida, o Squid utilizará como regra geral o inverso da última regra, assim, se nenhuma regra for atendida e a última regra for permitida (allow) o Squid procederá a um acesso negado (deny) e vice versa. Como resultado da aplicação das quatro regras acima, pode-se afirmar que numa ordenação lógica do Squid as ACLs constantes de uma mesma regra serão tratadas entre si com um and e as próprias regras serão tratadas entre si com um or, terminando com um else do inverso da última expressão. Pode-se tomar com exemplo as regras abaixo: http_access allow acl1 acl2 http_access deny acl1 acl3 acl4 Neste caso tem-se a seguinte estrutura lógica: If (acl1 and acl2 : allow) or (acl1 and acl3 and acl4 : deny) else allow Esta estruturação torna mais clara a forma como o Squid vai interpretar suas regras e, a partir desta interpretação, pode-se concluir algumas normas fundamentais de ordenação das HTTP_ACCESS: 1. As exceções deverão ser tratadas antes das regras, pois visto que as primeiras estão sempre contidas nas segundas, caso sejam listadas as regras e depois as exceções, estas jamais serão interpretadas; 2. Pelo mesmo motivo, caso haja uma “exceção da exceção”, esta deverá ser tratada antes da exceção; 3. Regras específicas deverão ser tratadas antes de regras genéricas, mesmo que uma não constitua exceção à outra; 4. Regras principais deverão ser tratadas antes de regras acessórias; 5. A menos que a política de acesso da organização diga o oposto, a última regra deverá ser sempre de negação geral (http_access deny all) para evitar uma liberação indesejada, conforme ocorreu no exemplo acima. 26 Vejamos, a seguir, como a inobservância das normas acima pode ocasionar os mais diversos resultados indesejados e como proceder para evitá-los. CASO 1 – Supondo uma organização de política restritiva de acesso à Internet onde somente ao corpo gerencial é permitido o acesso, ficando a todos os demais funcionários negado o mesmo. Neste caso, o arquivo de configuração do squid, o squid.conf, teria as seguintes regras: # define os logins dos gerentes acl gerencia fulano beltrano cicrano # solicita a autenticação dos usuários acl usuarios proxy_auth REQUIRED # regras de acesso http_access deny usuarios http_access allow gerência http_access deny all Aparentemente, a estruturação acima esta correta, pois está negando acesso a todos e liberando a gerência. Ocorre que o grupo gerência é uma exceção do grupo de usuários. Assim, se a regra de gerência for colocada após a regra geral dos usuários, a exceção jamais será analisada, pois os gerentes também são autenticados, conseqüentemente, terão seu acesso negado quando da análise da ACL de negação aos usuários. A ordenação correta neste caso seria: # define os logins dos gerentes acl gerencia fulano beltrano cicrano # solicita a autenticação dos usuários acl usuarios proxy_auth REQUIRED # regras de acesso http_access allow gerência 27 http_access deny usuarios http_access deny all CASO 2 – Supondo uma organização cuja política libera o acesso aos sites das editoras de revistas mais conceituadas, mas impede o acesso a qualquer site de conteúdo pornográfico. Seu squid.conf poderia estar configurado da seguinte forma: # define o arquivo que nomina os domínios das editoras liberadas acl editoras url_regex –i “/etc/squid/bloqueios/editoras.domains” # define o arquivo que nomina os domínios pornôs bloqueados acl porno url_regex –i “/etc/squid/bloqueios/porno.domains” # solicita a autenticação dos usuários acl usuarios proxy_auth REQUIRED # regras de acesso http_access allow editoras http_access deny porno http_access deny all Note que, neste caso, a regra de bloqueio de material pornográfico não constitui exatamente uma exceção da regra de liberação dos sites de editoras. Porém, o fato é que existem sites de revistas pornográficas dentro de sites de editoras conceituadas. Neste caso, se configurado conforme acima, tais revistas pornográficas teriam seu acesso liberado, o que não é o objetivo da organização. A regra de bloqueio de pornografia deve se sobrepor à de liberação de editoras por ser mais primordial e, assim, deve ser listada antes. A ordenação correta neste caso seria: # define o arquivo que nomina os domínios das editoras liberadas acl editoras url_regex –i “/etc/squid/bloqueios/editoras.domains” # define o arquivo que nomina os domínios pornôs bloqueados 28 acl porno url_regex –i “/etc/squid/bloqueios/porno.domains” # solicita a autenticação dos usuários acl usuarios proxy_auth REQUIRED # regras de acesso http_access deny porno http_access allow editoras http_access deny all CASO 3 – Supondo uma organização cuja política libera o acesso de determinados funcionários e nega o de outros, conforme sua posição função dentro da organização. Seu squid.conf poderia estar configurado da seguinte forma: # define o arquivo que nomina os logins dos usuários liberados acl liberados url_regex –i “/etc/squid/bloqueios/liberados.domains” # define o arquivo que nomina os logins dos usuários bloqueados acl bloqueados url_regex –i “/etc/squid/bloqueios/bloqueados.domains” # solicita a autenticação dos usuários acl usuarios proxy_auth REQUIRED # regras de acesso http_access allow liberados http_access deny bloqueados No caso acima, as regras aparentam estar corretas. Entretanto, numa situação onde um funcionário recém contratado, cujo acesso não deveria ser liberado, por um erro qualquer, não tiver seu nome incluído na lista de bloqueados, terá seu acesso liberado, pois nenhuma das regras previstas casou com seu login. Como nenhuma regra foi cumprida, será utilizado o inverso da última regra, que no caso é um deny. Sendo assim, este terá seu acesso liberado. 29 Para corrigir a situação acima, basta acrescentar ao final da lista de regras a seguinte regra: http_access deny all No próximo capítulo, é apresentado um exemplo de um arquivo de configuração squid devidamente estruturado. 30 4 – PROPOSTA DE IMPLEMENTAÇÃO DE CONTROLE DE ACESSO NO SQUID Após um estudo detalhado das ACL’s e das regras de acesso existentes, este capítulo propõe uma solução no controle eficaz de acesso à Internet. O primeiro passo na metodologia criada é definir suas ACL´s. 4.1 – CRIAÇÃO DAS ACL’S A seguir, será apresentado um conjunto de ACL´s necessárias para que o Squid efetue um controle efetivo de acesso à Internet. 4.1.1 ACL´s referentes à autenticação ● acl autentica proxy_auth REQUIRED Informa que será exigida autenticação para qualquer usuário válido. • auth_param basic program /usr/lib/squid/msnt_auth Informa o qual o cominho do programa externo que efetuará a autenticação no Active Directory. • auth_param basic realm Bem Vindo ao Servidor Proxy da Rede Local Informa o cabeçalho da tela de solicitação de login e senha a ser solicitada. • auth_param basic children 5 Informa a quantidade de subprocessos de autenticação que poderão ser abertos simultaneamente. • auth_param basic credentitalsttl 15 minute Informa o tempo de checagem das credenciais do usuário junto ao servidor. 31 4.1.2 ACL´s padrões do squid, criadas durante a instalação e utilizadas para regras de segurança. ● acl all src 0.0.0.0/0.0.0.0 Identifica todos os endereços ip ● acl localhost src 127.0.0.1/255.255.255.255 Identifica o computador local, no caso o computador onde o proxy está instalado. ● acl Safe_ports port 80 81 21 443 563 70 85 210 1022 1021 1025-65535 Identifica as portas consideradas seguras que poderão ser acessadas pelo proxy. 4.1.3 ACL´s com os grupos de usuários com acessos especiais ● acl gerencia proxy_auth gerente1 gerente2 Define o grupo de gerentes que terão acesso irrestrito aos sites. Este grupo é fundamental para que os administradores de rede possam realizar o controle de quais sites poderão ou não ser acessados. ● acl coordenacao proxy_auth coordenador1 coordenador2 coordenador3 Define o grupo de usuários que terão acesso a alguns sites específicos que poderão estar bloqueados para os demais usuários em horários específicos. ● acl estagiarios proxy_auth estagiario, estagiario2 Define o grupo de funcionários que terão acesso em horário especial, ou seja, acessarão a Internet num horário fora do horário padrão. ● acl banidos proxy_auth banido1 banido2 banido3 Define o grupo de usuários que não terão acesso a Internet. 32 4.1.4 ACL´s com os grupos que identificam as redes existentes ● acl RedePrincipal src 10.14.0.0/255.255.0.0 Define a faixa de endereçamento IP da rede principal. ● acl RedeRemota src 10.127.0.0/255.255.0.0 Define a faixa de endereçamento IP de uma remota que também poderá usar o proxy para acesso à Internet. ● acl RedePrincial-Remota src 10.14.0.0/255.255.0.0 10.127.0.0/255.255.0.0 Define a faixa de endereçamento IP da rede principal e da rede remota. 4.1.5 ACL´s com os grupos de máquinas com acessos específicos ● acl MaqLibEspecificos src 10.14.27.118/255.255.255.255 10.14.27.119/ 255.255.255.255 Define o grupo de máquinas que terão acesso a sites específicos. ●acl MaqServidores src 10.14.1.4/255.255.255.255 10.14.1.5/255.255.255.255 10.14.1.6/255.255.255.255 Define o grupo de máquinas que terão acesso irrestrito à Internet (Servidores de rede). ● acl MaqIpbloq src 10.14.12.103/255.255.255.255 10.14.26.110/255.255.255.255 Define o grupo de máquinas que terão acesso bloqueado pelo IP. 4.1.6 ACL´s com os grupos de Horários de Acesso ● acl Hora_Expediente time MTWHF 12:00-20:00 Define o horário em que normalmente é permito o acesso à Internet (Neste caso de segunda à sexta de 12:00hs às 20:00hs). 33 ● acl Hora_Total time SMTWHFA 00:00-23:59 Define o horário em que é permito o acesso além do horário de expediente normal da empresa. ● acl Hora_Rush time MTWHF 13:00-17:00 Define o horário de bloqueio dos sites que possuem um grande número de acessos e que não são essenciais (Grandes Portais, etc). ● acl Hora_Especial time MTWHF 07:00-13:00 Define o horário em que é permitido o acesso para funcionários que trabalham em um período especial, ou seja, um período diferente do horário de expediente padrão.. 4.1.7 ACL´s com os grupos de arquivos ● acl Sites Informacoes url_regex "/etc/squid/bloqueios-squid/informacoes-domains" Define o arquivo com palavras que identifiquem o endereço de sites que possuam um número elevado de acessos e que não são essenciais ao trabalho da empresa. ● acl SitesAdultos url_regex "/etc/squid/bloqueios-squid/adultos-domains" Define o arquivo com palavras que identifiquem os endereços de sites com conteúdo adulto ou inapropriado. ● acl SitesLiberados url_regex "/etc/squid/bloqueios-squid/liberados-domains" Define o arquivo com palavras que identifiquem os endereços de sites que serão liberados a todos os usuários. ● acl SitesEspecificos url_regex "/etc/squid/bloqueios-squid/especificos-domains" Define o arquivo com palavras que identifiquem os endereços de sites liberados a um grupo de usuários específicos. 34 ● acl SitesTemporarios url_regex "/etc/squid/bloqueios-squid/temporarios-domains" Define o arquivo com palavras que identifiquem os endereços de sites liberados temporariamente para todos os usuários. ● acl SitesNegadownload urlpath_regex -i "/etc/squid/negadownload” Define extensões de tipos de arquivos que deverão ser bloqueados para download. O arquivo deverá ter a seguinte estrutura: \.mp3$ \.exe$ \.mpg$ \.avi$ Note que a barra que precede a extensão do arquivo não faz parte do nome real do mesmo. Entretanto, tal precaução se faz necessária visto que o ponto é entendido pelo Squid como sendo um metacaracter, e a utilização da barra força sua interpretação de modo literal. 4.1.8 ACL´s com os grupos de Domínios Locais ● acl DominiosLocais dst 10.14.0.0/255.255.0.0 Define os endereços que serão acessados sem utilização do proxy. 4.2 CRIAÇÃO DAS REGRAS DE ACESSO A seguir, será definido o conjunto de regras de acesso que utilizarão as ACL’s criadas anteriormente. Note que a hierarquização definida abaixo é o item mais importante para o controle correto do que pode ser acessado. 4.2.1 – Regras de Segurança padrão do Squid São regras que deverão preceder as regras de bloqueio principal. 35 ● http_access allow manager localhost Permite acesso ao “cache” ao computador local (proxy). ● http_access deny !Safe_ports Impede a utilização de portas não seguras. 4.2.2 – Regra de redirecionamento dos acessos a sites internos Determina que os acessos a sites localizados na rede local não utilizem o proxy, o acesso será direto e sem autenticação. ● always_direct allow DominiosLocais. 4.2.3 Regras de bloqueios prioritárias. Devem ser obrigatoriamente definidas antes de qualquer regra de liberação que não sejam as regras de segurança do Squid e a regra de redirecionamento dos sites da rede interna. São regras que não possuem exceções. ● http_access deny !RedePrincipal Nega o acesso à Internet aos endereços ip´s que não estão definidos na ACL “RedePricipal”. ● http_access deny banidos Impede o acesso dos usuários que estão definidos na ACL “Banidos”. ● http_access deny MaqIpbloq Impede o acesso dos computadores cujos ip´s estão definidos na ACL “MaqIpbloq”. 36 4.2.4 – Regras de liberações específicas São regras que devem preceder as regras normais de bloqueio, pois são exceções a estas regras. Porém, estas regras devem ser obrigatoriamente definidas após as regras de bloqueio prioritárias. ● http_access allow MaqServidores Libera totalmente o acesso dos computadores cujos ip´s estão definidos na ACL “MaqServidores” para permitir que os servidores de rede tenham acesso a todos os sites da Internet em todos os horários. ● http_access allow MaqLibEspecificos SitesEspecificos Hora_Expediente Libera os ip´s das máquinas, definidos na ACL “MaqLibEspecificos” para acessar os sites cujos endereços contenham palavras listadas no arquivo definido na ACL “SitesEspecificos” no horário definido na ACL “Hora_Expediente”. ● http_access allow Liberados Hora_Expediente Libera o acesso a todos os sites cujos endereços contenham palavras listadas no arquivo definido na ACL “SitesLiberados” horário definido na ACL “Hora_Expediente” para todos os usuários. ● http_access allow gerencia Libera o acesso a todos os sites para o grupo gerencia em qualquer horário. ● http_access allow SitesCoordenacao coordenacao Libera o acesso aos sites cujos endereços contenham palavras listadas no arquivo do grupo “SitesCoordenacao” para os usuários do grupo “coordenação” em qualquer horário ● http_access allow !SitesAdultos Hora_Especial estagiarios Libera o acesso ao sites cujos endereços não contenham palavras listadas no arquivo definido na ACL “SitesAdultos” no horário definido na ACL “Hora_Especial” a todos os usuários definidos na ACL “estagiarios”. Se fosse o caso de liberar somente um conjunto de sites, 37 substituiria-se “!adultos” por uma ACL que representasse um arquivo com os sites específicos que se desejaria liberar. 4.2.5 Regras gerais de bloqueios Estas são as regras de bloqueio que serão aplicadas em todos os casos que não estejam definidos anteriormente nas regras de liberação específicas. Em geral, aqui são definidas as principais regras da sua empresa. ● http_access deny !Hora_Expediente Restringe o horário de acesso à Internet ao horário definido na ACL “Hora_Expediente”. ● http_access deny SitesAdultos Bloqueia o acesso aos sites cujos endereços contenham palavras listadas no arquivo do grupo “Adultos” em todos os horários. ● http_access deny SitesInformacoes Hora_Rush Bloqueia o acesso a todos os sites cujos endereços contenham palavras listadas no arquivo definido na ACL “Informacoes” no horário definido na ACL “Hora_Rush”. ● http_access deny SitesNegadownload Bloqueia o download de todos os arquivos cujas extensões estejam listadas no arquivo definido na ACL “SitesNegadownload” em todos os horários. 4.2.6 Regra de liberação geral ● http_access allow autentica Permite o acesso a todos os sites não bloqueados anteriormente a todas as máquinas mediante autenticação. Esta regra é necessária para que acessos não bloqueados anteriormente possam ser liberados a todos os usuários autenticados. 38 4.2.7 Regras de bloqueio total. ● http_access deny all Bloqueia todos os outros casos não previstos anteriormente. Bloqueia qualquer acesso que não tenha sido liberado nas regras anteriores. 39 5 – CONFIGURAÇÃO DO FILTRO DE CONTEÚDO NO DANSGUARDIAN O Dansguardian é um programa desenvolvido independentemente, destinado a trabalhar junto com o Squid, implementando um filtro de conteúdo das páginas acessadas com o objetivo de aumentar a segurança no controle de acesso à Internet. O DansGuardian trabalha sobre o Squid, implementando suas políticas de acesso, mas deixando que o próprio Squid faça o acesso à Internet, cache e autenticação. Ele inclui um conjunto de regras prontas, que contém palavras, frases e tipos de arquivos freqüentemente usados neste tipo de página e endereços de páginas conhecidas. Cruzando estas informações ele consegue fazer um excelente trabalho, bloqueando quase todas as páginas indesejadas, em várias línguas, com relativamente poucos falso-positivos. Ele difere da maioria das ferramentas disponível no mercado pelo fato de não funcionar apenas como filtro de URL, mas também como um efetivo filtro de conteúdos de páginas web, pois faz uma varredura do conteúdo de cada página acessada por seus usuários e não somente uma liberação ou proibição do nome do site ou da URL acessada. Este filtro de conteúdo não tem características de Proxy, portanto, é obrigatório o uso de um servidor Proxy para que a ferramenta seja implementada, podendo ser instalado em sistemas operacionais Linux, FreeBSD, OpenBSD, NetBSD, Mac OS X, HP-UX, e Solaris Na solução proposta o filtro de conteúdo receberá as requisições do navegador do usuário, aplicará as restrições estabelecidas ou as exceções configuradas e, em seguida, passará a requisição para o Proxy, conforme a Figura 3. Figura 3 - Fluxo da requisição do cliente via Filtro de Conteúdo. 40 A integração do proxy com o filtro de conteúdo requer o uso de algumas configurações avançadas do Squid como citado a seguir: ● http_access allow localhost Permite o acesso do Dansguardian sem autenticação. ● always_direct allow localhost Permite que as requisições vindas do Dansguardian não sejam reencaminhadas a ele. O principal arquivo de configuração é o "/etc/dansguardian/dansguardian.conf". Algumas opções devem ser verificadas após a instalação da ferramenta para o correto funcionamento do Dansguardian . São elas: ● # UNCONFIGURED Esta linha deve ficar comentada, indicando que o arquivo já foi configurado por você. ● language = 'portuguese' Esta opção configura a língua em que as mensagens de acesso bloqueado serão mostradas aos clientes. ● loglocation = '/var/log/dansguardian/access.log' Aqui é a localização do arquivo de log do dansguardian, onde ficam armazenados os endereços das páginas cujo acesso foi bloqueado. Serve tanto para verificar a eficiência do filtro quanto para identificar falsos-positivos, ou seja, páginas legítimas que estão sendo bloqueadas por engano. ● filterport = 8080 Identifica a porta onde o DansGuardian fica ativo. Ele sempre deve utilizar uma porta diferente do Squid, pois são duas coisas separadas. O padrão é a porta 8080. ● proxyip = 127.0.0.1 Identifica o endereço IP do servidor proxy que será usado. Por padrão, ele vai utilizar uma cópia do Squid ativa na mesma máquina, mas é possível utilizar outro servidor Squid disponível na rede. 41 ● proxyport = 3128 Identifica porta TCP onde o servidor Squid especificado na opção acima está ativo. Lembrese de que, por padrão, o Squid usa a porta 3128. A filtragem de páginas funciona em dois níveis. Ao receber a requisição do cliente, o DansGuardian verifica se o endereço a ser acesso está em uma das listas de URL´s ou IP’s proibidos. Caso esteja, o cliente recebe a mensagem de erro e o acesso sequer é feito, economizando banda. Se não existir nenhum bloqueio relacionado, a requisição é enviada ao Squid e o acesso é realizado. Ao receber os arquivos da página, o DansGuardian verifica o conteúdo da página, em busca de expressões e palavras "ruins", freqüentemente encontradas em páginas indesejadas, e também palavras "boas", normalmente encontradas em páginas de bom conteúdo. Cada termo, frase, site ou URL tem um peso associado e o bloqueio pode ocorrer devido a soma dos pesos encontrados. Vale lembrar que existem pesos com valores positivos e negativos. Os pesos com valores positivos são somados para gerar um valor total e implementar um filtro, enquanto os pesos com valores negativos somados diminuirão na soma total. Caso o resultado ultrapasse um valor pré-definido a ser tolerado, o acesso será bloqueado. Você define um índice máximo a ser tolerado no arquivo através da opção: ● naughtynesslimit = 160 Quanto mais baixo o número, mais severa é a censura, porém mais páginas boas acabam sendo bloqueadas por engano. Os valores recomendados pelos desenvolvedores são "60" para crianças pequenas, "100" para pré-adolescentes e "160" para adolescentes. Para um público adulto, onde a principal preocupação seja não bloquear páginas boas, mesmo que isso faça com que uma ou outra página inadequada passe pelo filtro de vez em quando, você pode arriscar "200" ou mesmo "240". Os arquivos contendo proibições e exceções estão localizados no diretório "/etc/dansguardian/” e o processamento deles segue uma ordem pré-estabelecida, conforme a Tabela 1, que mostra os principais arquivos utilizados. Assim, é importante que o administrador conheça tal fluxo de processamento a fim de que suas configurações funcionem a contento. 42 Ordem de Processamento Arquivo 1 exceptioniplist 2 exceptionuserlist 3 exceptionsitelist 4 exceptionurllist 5 bannediplist 6 banneduserlist 7 bannedregexpurllist 8 bannedurllist 9 bannedsitelist 10 bannedmimetypelist 11 bannedextensionlist 12 exceptionphraselist 13 bannedphraselist 14 weightedphraselist Figura 4 – Arquivos de Configuração do Dansguardian O tipo de bloqueio realizado pelos arquivos abaixo podem ser feitos de forma mais detalhada pelo Squid através da criação de ACL´s e regras de acesso, conforme foi mostrado no capítulo anterior. /etc/dansguardian/exceptioniplist Este arquivo contém a lista de endereços IP que não serão filtrados pelo Dansguardian. Entre esses endereços pode-se colocar o IP do computador do administrador de rede, para que ele possa realizar tarefas administrativas sem nenhuma restrição. /etc/dansguardian/exceptionuserlist Este arquivo contém a lista de usuários que não serão filtrados no momento da requisição. /etc/dansguardian/exceptionsitelist Este arquivo funciona como uma “white list”, contendo uma lista de páginas que sempre são permitidas, mesmo que sejam encontradas palavras proibidas dentro do texto. 43 /etc/dansguardian/exceptionurllist Este arquivo contém a lista de URL's que não serão filtrados no momento da requisição. /etc/dansguardian/bannediplist Este arquivo contém uma lista de endereços IP's que serão bloqueados no momento da requisição. /etc/dansguardian/banneduserlist Este arquivo contém uma lista de usuários que serão bloqueados no momento da requisição. /etc/dansguardian/bannedregexpurllist Este arquivo contém uma lista de expressões regulares que não serão permitidas na url a ser acessada. Ele pode ser usado para restringir o download de alguns tipos de arquivos como: proteções de telas, executáveis entre outros. /etc/dansguardian/bannedurllist Este arquivo contém uma lista de URL´s que deverão ser bloqueadas, permitindo que você bloqueie partes do site e não o site inteiro. Algo interessante que pode ser encontrado neste arquivo são diretivas como “Include </etc/ dansguardian /blacklists/adults/urls>, por exemplo, que fazem referência a um arquivo que foi baixado da Internet contendo uma lista de URL´s catalogados como conteúdo adulto. /etc/dansguardian/bannedsitelist Este arquivo contém uma lista de sites que serão bloqueados no momento da requisição. /etc/dansguardian/bannedmimetypelist Este arquivo contém a lista de todos os tipos mime que não devem ser carregados. O bloqueio pelo tipo MIME do arquivo, e não pela sua extensão, é uma vantagem do Dansguardian em relação ao Squid, pois evita que arquivos “mascarados“ possam ser acessados ou baixados. /etc/dansguardian/bannedextensionlist Este arquivo contém a lista de todas as extensões de arquivos que não poderão ser baixados da web. Um exemplo típico são os arquivos com extensões “.exe” e “.com”, que podem trazer 44 algum tipo de vírus. Também seria possível bloquear o download de arquivos com extensão “.mpg”, “.avi”, “.wav” e “.mp3”, que são relacionados a músicas ou filmes. A parte mais importante do filtro de conteúdo realizado pelo Dansguardian pode ser definida nos arquivos abaixo. Eles referenciam itens, palavras ou termos encontrados nas páginas que são devolvidas pelo Squid. /etc/dansguardian/ exceptionphraselist Este arquivo contém a lista de “termos” que não serão filtrados nas páginas acessadas. Os termos devem estar entre “<” e “>”. Os termos podem conter espaços e devem ser informados em letras minúsculas. /etc/dansguardian/ bannedphraselist Este arquivo contém a lista de “termos” que não serão permitidas nas páginas acessadas. Os termos também devem estar entre “<” e “>”. Deve-se ser cuidadoso no bloqueio de palavras, pois a utilização de <game> pode por exemplo bloquear páginas que contenha a palavra julgamento visto que a primeira esta contida na segunda, imagine agora os efeitos disto sobre um escritório de Advocacia ou num Tribunal. Uma forma de atenuar estes problemas é colocar espaços antes e após a palavra, neste caso < game >. Note que a palavra game será barrada, mas a palavra julgamento não, visto que os espaços não existem dentro dela. Entretanto, isto deixa uma pequena brecha para que sites que usem variantes como games1000 nao sejam barrados. /etc/dansguardian/ weightedphraselist Este arquivo contém a lista de palavras com seus respectivos pesos a serem considerados no momento da filtragem de conteúdo. Tanto os termos quanto os valores devem estar entre “<” e “>”. As linhas devem ser especificadas conforme os exemplos abaixo: <sexo><100> <jogos><60> <download de musica> <50> <governo><-20> 45 Por padrão, este arquivo vem configurado com a lista de palavras em inglês, que deixam passar muitos sites nacionais. Você pode baixar um arquivo com listas em outras línguas, incluindo português no site abaixo: http://dansguardian.org/downloads/grosvenor/languages.tar.gz Após a descompactação deste arquivo, basta adicionar diretivas para utilizar os novos arquivos. Para isso adicione as linhas abaixo nos arquivos: .Include</etc/squid/dansguardian/languages/weightedphraselist.pornsites.portuguese> .Include</etc/squid/dansguardian/languages/weightedphraselist.pornwords.portuguese> Note que nesses arquivos são especificados todos os arquivos de palavras que são utilizados. Você pode adicionar novas palavras ou editar o peso de cada uma, editando diretamente o arquivo. Cabe ressaltar que o algoritmo de checagem de palavras proibidas é bem inteligente, sendo capaz de verificar códigos HTML e espaços em branco. 46 6 – IMPLEMENTAÇAO DA ANÁLISE DE LOGS VIA SARG A utilização dos softwares anteriormente demonstrados consegue prover um nível bastante seguro de acesso a Internet. Entretanto, nenhum acesso, por mais bem configurado que seja, consegue eliminar completamente os acessos indevidos ou garantir que nenhum acesso lícito seja barrado. Em função disto, faz-se necessária a instalação de algum software de análise dos logs do Squid para que o administrador da rede possa verificar, caso a caso, se o controle está realmente agindo de forma consistente, além de providenciar a configuração de exceções que porventura se fizerem necessárias. Neste trabalho, é proposto o uso do Squid Analysis Report Generator, ou SARG, que consegue de maneira extremamente simples e eficiente gerar um conjunto de relatórios administrativos de utilização da Internet que, ao nosso ver, consegue abranger toda a gama de informações que se fizerem necessárias para a gerência do acesso à rede. Vale salientar que o Sarg é um software 100% livre, genuinamente nacional e de utilização mundial, gozando de enorme sucesso em função de suas qualidades. Ao contrário do Squid ou do Dansguardian, o Sarg não roda como um deamon ou serviço. Na realidade, ele constrói os relatórios toda vez que acionado, conforme os parâmetros de configuração inseridos em seu arquivo de configuração, que por default é o squid.conf. A Figura 4 apresenta um dos relatórios gerados pelo SARG para auxiliar no controle à Internet. 47 Figura 5 – Relatório de acesso à Internet. 48 6.1 – CONFIGURANDO O SARG Embora existam grandes quantidades de parâmetros a serem configurados no Sarg, somente os principais pontos a serem configurados no arquivo de configuração do Sarg, o sarg.conf, serão detalhados. ● language Portuguese Configura o idioma em que os relatórios serão emitidos. ● access_log /var/log/squid/access.log Indica o caminho onde se encontra o arquivo de logs do squid, neste caso o default. ● title “Relatório de Acesso a Internet da Empresa S/A” Configura o título dos relatórios. ● temporary_dir /tmp Indica o caminho onde serão trabalhados os arquivos temporários. ● output_dir/var/www/html/squid-report/dia Indica o caminho onde serão armazenados os relatórios gerados. Como os relatórios são gerados em formato HTML normalmente este diretório encontra-se dentro da estrutura do servidor de páginas Web da empresa. Ocorre que os relatórios do Sarg muitas vezes contêm informações sigilosas, como por exemplo: quais sites certo funcionário acessou, e quando; que funcionários acessaram certa página; quais páginas estão sendo acessadas e em que intensidade. Assim, sugere-se que o acesso a tais relatórios seja o mais seguro possível, evitando vazamento de informações que possam causar futuros problemas à empresa. ● topuser_sort_field BYTES reverse Determina por qual critério será ordenada a lista de usuários que acessaram a Internet. Neste caso, pela quantidade de bytes trafegados e em ordem reversa, do maior para o menor. As opções são: USER pela ordem alfabética dos nomes dos usuários; BYTES pela quantidade de bytes trafegados; CONNECT pela quantidade de conexões feitas; TIME pelo tempo dependido durante a navegação. 49 ● user_sort_fields BYTES reverse Determina qual o critério de ordenação do relatório de sites acessados por cada usuário. É análogo o item anterior, com a diferença que não existe a opção USER, e sim a opção SITE que ordena pela ordem alfabética dos sites acessados. ● date_formate e Informa o formato de data a ser utilizado, neste caso o nosso padrão. As opções são: e=dd/mm/yy, u=mm/dd/yy, w=yy/ww. ● topsites_num 500 Informa a quantidade de sites a serem listados no relatório de sites mais acessados. A quantidade aqui informada vai depender do tamanho da empresa e do tempo disponível para o administrador proceder a análise dos relatórios. O número 0 indica que todos os sites deverão ser listados. Entretanto a utilização deste critério nos parece desnecessária, visto que, normalmente, uma quantidade relativamente pequena de sites é responsável pela maior parte dos acessos, e uma relação com todos poderá ser bastante grande e de pouca valia. ● topsites_sort_order BYTES D Determina qual a ordenação dos sites listados no relatório de mais acessados, neste caso pelo volume de bytes recebidos e em ordem decrescente, do maior para o menor. ● report_type topsites sites_users users_sites date_time Informa quais relatórios serão gerados. Existem vários, e serão listados apenas os mais importantes: • Topsites: relação dos sites mais acessados ou com maior volume de dados; • Sites_users: relação de quais usuários acessaram cada site; • Users_site: relação de quais sites cada usuário acessou; • Date_time: relação da quantidade de bytes utilizados em cada momento. 50 ● topuser_num 0 Diz quantos usuários serão listados no relatório de maiores usuários. O número 0, se informado, determinará a listagem de todos os funcionários e é recomendado para fins de controle de acesso a sites mais perigosos, exceto se a empresa possuir um número de usuários que inviabilize este controle. Saliente-se que ainda existem vários outros parâmetros de configuração disponíveis, nos quais se pode determinar se existem usuários que não serão listados nos relatórios (ex: gerentes ou root), quais máquinas não deverão ter seus acessos listadas (ex: servidores), e diversos parâmetros de configuração de aparência dos relatórios. Para melhor domínio destes parâmetros recomenda-se a leitura das referências bibliográficas citadas neste trabalho. 51 6.2 – EXECUTANDO O SARG Conforme dito anteriormente, o Sarg não executa como “deamon” ou serviço, ele deverá ser executado via linha de comando. A sintaxe é a seguinte: /usr/sbin/sarg -f /etc/sarg/sarg.conf -d 18/04/2007-18/04/2007 Onde: • /usr/bin/sarg: é onde se encontra instalado o sistema; • -f /etc/sarg/sarg/sarg.conf: a opção –f indica o caminho do arquivo de configuração. Note que em virtude desta opção, é possível ter diversos arquivos de configuração para a geração de diversos relatórios diferentes; • -d 18/04/2007-18/04/2007: determina as datas inicial e final abrangida pelo relatório a ser emitido. No caso do comando acima, será gerado um relatório conforme configurado no sarg.conf abrangendo apenas o dia 18/04/2007. Ocorre que a geração destes relatórios de forma manual é tediosa e contraproducente. Assim, sugere-se a criação de um script, conforme abaixo: #!/bin/bash HOJE=$(date --date "1 day ago" +%d/%m/%Y) /usr/sbin/sarg -f /etc/sarg/sarg-dia.conf -d $HOJE-$HOJE exit 0 Após a criação do script, o mesmo deverá ser incluído na cron como tarefa a ser executada, de preferência, na primeira hora de cada dia, todos os dias. Como o script gera relatórios do dia anterior ao corrente, o relatório de acesso de cada dia estará sempre disponível no dia seguinte e, como os relatórios não se sobrepõem, o administrador terá relatórios detalhados de todos os dias, podendo proceder sua análise somente quando julgar conveniente ou viável. 52 Se o sistema for configurado da forma como sugerida aqui, será gerado automaticamente, todo dia, um relatório completo com os principais sites acessados, os sites que cada usuário acessou, que usuários acessaram cada site e que horas aconteceram estes acessos. Vale ressaltar que tais relatórios são emitidos em formato HTML, bastando ao administrador acessá-lo via browser para verificar com riqueza de detalhes o uso efetivo de sua conexão de Internet. 53 7 - CONSIDERAÇÕES FINAIS E TRABALHOS FUTUROS Atualmente, o acesso constante à Internet nas empresas é um fato, entretanto, controlar esse acesso é uma tarefa que exige cuidados especiais. O controle deve ser feito por meio de da definição e aplicação de políticas de seguranças. Diante disso, é necessário buscar soluções alternativas capazes de permitir o acesso à rede mundial de computadores com restrições eficazes. Este trabalho resultou do estudo de ferramentas de software livre que pudessem controlar de forma eficaz o acesso à Internet. A utilização das ferramentas aqui expostas, e configuradas da forma que foi sugerida neste estudo, permitirá um controle de acesso seguro e eficiente à Internet para redes de diversos tamanhos, e com baixos custos devido à utilização exclusiva de softwares livres. Portanto, espera-se que este trabalho sirva como base para iniciativas nesse sentido. No estágio em que se encontram hoje, os sistemas mencionados neste trabalho dependem de diversos arquivos de configuração que deverão ser editados individualmente, não havendo nenhuma interface mais amigável que consiga integrar a gerências dos referidos arquivos. Uma proposta de continuidade desse trabalho seria a criação de uma ferramenta, que funcione em HTTP, que integre a edição, configuração e estruturação desses arquivos de forma unificada, além de controlar os serviços relativos aos sistemas, iniciando, interrompendo ou reiniciando os mesmos quando houver necessidade. Dessa forma, a manutenção seria mais simples e segura, pois a ferramenta de administração dos arquivos de configuração poderia evitar erros ou inconsistências que poderiam comprometer a segurança dos sistemas. 54 8 - REFERÊNCIAS BIBLIOGRÁFICAS 1. [cert] Disponível em <http://www.cert.br/stats/incidentes/>. Acesso em: 11 de março de 2007. 2. [dansguardian] Disponível em <http://dansguardian.org/>. Acesso em 5 abril de 2007. 3. [sarg] Disponível em <http://sarg.sourceforge.net/>. Acesso em 10 de abril 2007. 4. [smartunion] Disponível em <http://www.smartunion.com.br/estatisticasutilizacao.asp/>. Acesso em 2 de abril de 2007. 5. [squid] Disponível em <http:// www.squid-cache.org/>. Acesso em 28 de março de 2007. 6. [wikipédia] Disponível em <http://pt.wikipedia.org/wiki/squid/>. Acesso em 8 de março de 2007. 7. KUROSE, James F; ROSS, Keith W. Redes de Computadores e a Internet: uma abordagem top-down/ James F. Kurose, Keith W.Ross. 3. ed. Editora Pearson Addison Wesley, 2006. 8. RICCI, B. Squid – Solução Definitiva. Editora Ciência Moderna, 2006. 9. TANEMBAUM, Andrew S. Redes de Computadores. 4. ed. Editora Campus, 2003. 10. WESSELS, D. Squid: The Definitive Guide. [S.1.]: O’Reilly Media, Inc., 2004.