Pontifícia Universidade Católica do Paraná - PUCPR Implantando o Squid para Gerenciamento de Banda e Acesso a Internet Contribuições: Auxílio nos estudos dos problemas e riscos enfrentados pelas organizações com o acesso a internet, bem como contra-medidas para os mesmos. Coordenação na preparação do servidor, definição do cenário e implementação do ambiente com o Squid e o Sarg. Trabalho de Conclusão de Curso Evandro Augusto Volek Outubro - 2009
Implantando o Squid para gerenciamento de banda e acesso a internet Evandro Augusto Volek, Leandro Carretero Belo Especialização em Redes e Segurança de Sistemas - 2008/1 Pontifícia Universidade Católica do Paraná Curitiba, Outubro de 2009 Resumo A utilização da internet em ambiente corporativo pode trazer problemas jurídicos e financeiros aos gestores, além de perca de produtividade no ambiente organizacional. A fins de se precaver de tais problemas, um conjunto de medidas são necessárias, tais medidas vão desde a conscientização dos usuários até monitoramento e punição. O artigo irá descrever os passos para instalação e configuração do servidor proxy Squid, que efetuará o controle de acesso e banda, bem como a utilização de ferramentas a ele agregadas para o monitoramento e análise de logs. 1 Introdução As empresas podem ser responsabilizadas pelo uso indevido ou inadequado da Internet e de suas facilidades por seus empregados [1] A afirmação acima tem embasamento no terceiro parágrafo do Art. 932 do Código Civil Brasileiro, que diz ser também responsáveis pela reparação civil o empregador ou comitente, por seus empregados, serviçais e prepostos, no exercício do trabalho que lhes competir, ou em razão dele [2], e também pela sumula 341 do supremo tribunal federal, que presume a culpa do patrão ou comitente pelo ato culposo do empregado ou preposto. [3] Racismo, pedofilia, pirataria, violação de direitos autorais, furto e ameaça são apenas alguns exemplos de crimes cometidos pela internet. Além das responsabilidades jurídicas, o mal uso da internet ocasiona para as organizações problemas como perca de produtividade dos colaboradores com navegações em sites não relacionados ao trabalho e consumo da banda com tais conteúdos. De acordo com estudo divulgado no site da Info Abril, os brasileiros gastam 5,9 horas por semana navegando em sites não relacionados ao trabalho durante o expediente. [4] A correta utilização da internet em um ambiente corporativo demanda a implantação de um conjunto de medidas: Treinamento aos colaboradores Termo de uso e responsabilidades Mecanismos de controle de acesso Ferramentas de limitação de banda Relatórios de logs Este artigo irá focar na implementação do servidor proxy Squid, e seu utilitário Sarg, os quais fornecem mecanismos de controle de acesso, limitação de banda e relatórios de logs; ficando como sugestão ao leitor a pesquisa de métodos de treinamento aos colaboradores e modelos de termo de uso e responsabilidades.
Para melhor entendimento, a implementação assumirá cenário onde os usuários de internet são agrupados em perfis, sendo que cada perfil possui determinado privilégio de acesso e velocidade de navegação. A implementação será efetuada sobre sistema operacional Ubuntu 9.04 Server Edition, em computador com duas interfaces de rede (uma para LAN e outra para WAN). Em todo artigo o símbolo :~> representa o prompt do terminal. 2 Entendendo o Squid O principal arquivo de configuração do squid é o /etc/squid/squid.conf, o squid o trata de forma seqüencial, e é nele que faremos as configurações necessárias para efetuar o controle de acesso e banda. O acesso é controlado pelas ACLs, elas possibilitam criar regras de permissão ou bloqueio de acesso, utilizando como critério endereços de origem ou destino, domínios, horários, usuários, portas ou métodos de conexão ao proxy. Para cada critério existe um tipo de ACL, seguem abaixo a sintaxe para criação das mesmas e os tipos mais utilizados [5]: Sintaxe: acl 'nome da acl' 'tipo da acl' 'caminho do arquivo' Tipos mais utilizados : src dst dstdom_regex url_regex url_path_regex port dstdomain arp # Endereço IP do cliente # Endereço IP do destino # Expressão que verifica o destino # Expressão que verifica uma URL # Expressão que verifica o URL path # Especifica uma porta ou conjunto de portas # Filtra por nome de domínios # Endereço Mac A banda é gerenciada pelas delays, para cria-las usa-se: delay_pools # número de delays delay_class # criação da delay delay_parameters # parâmetros da delay 3 Preparando o Servidor A interface eth0 deve ser conectada na WAN (10.0.0.0/8) e a eth1 na LAN (192.168.0.0/16), sendo a configuração de rede efetuada no arquivo /etc/network/interfaces, conforme abaixo: auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 10.1.1.10 netmask 255.0.0.0 network 10.0.0.0 broadcast 10.255.255.255 gateway 10.1.1.1 auto eth1
iface eth1 inet static address 192.168.0.1 netmask 255.255.0.0 network 192.168.0.0 broadcast 192.168.255.255 Após a configuração de rede, necessário adicionar servidor dns, editando o arquivo /etc/resolv.conf, o endereço a ser configurado pode ser de qualquer servidor dns, no artigo é usado: nameserver 201.10.120.2 Depois de efetuadas as configurações de rede, precisa-se restartar a mesma através do comando: :~>sudo /etc/init.d/networking restart Após configurada a rede, e estando o servidor com acesso a internet, recomenda-se realizar update da base de dados do repositório da instalação e upgrade para garantir que a instalação esteja atualizada. Para isso utiliza-se os comandos: :~>sudo apt-get update :~>sudo apt-get grade 4 Instalando o Squid A instalação do squid é efetuada através do comando: :~>sudo apt-get install squid 4.1 Definindo os Perfis Afim de prosseguirmos com a implantação do servidor proxy assumiremos um cenário com os perfis da tabela 1 (o perfil será responsável pelo privilégio de acesso e pela velocidade de navegação). Perfil Velocidade (Kbps) Privilégio de acesso Autenticação Diretoria 48 Total Mac Financeiro 25 Apenas sites listados Mac Comercial 25 Total com restrição de sites que contenham determinadas palavras Mac Mecânicos 12 Total com restrição de sites que contenham determinadas palavras Mac/Senha 4.2 Configurando o Squid Tabela 1 perfis de acesso a internet Para implementar os perfis de forma organizada, criaremos em /etc/squid o diretório files, dentro do qual teremos um diretório para cada perfil e um diretório etc. Os diretórios referentes aos perfis armazenam arquivos de configurações do mesmo e o diretório etc armazena arquivos diversos:
/etc/squid/files/ -comercial -mac_comercial.conf -diretoria -mac_diretoria.conf -financeiro -mac_financeiro.conf -sites_financeiro.conf -mecanicos -mac_mecanicos.conf -etc -palavras_bloqueadas.txt -sites_permitidos.txt -users.conf Os arquivos de configuração serão referenciados dentro do squid.conf, e seus conteúdos são mostrados abaixo: -mac_comercial.conf 00:18:8b:e2:b6:f7 00:19:7a:12:b3:aa 00:18:8c:e1:c1:ee -mac_diretoria.conf 00:41:56:c1:1a:e1 00:13:12:11:ee:e0 00:4a:f1:12:76:22 -mac_financeiro.conf 00:10:25:22:ef:c1 00:21:11:a2:ee:18 00:12:a6:23:23:20 -sites_financeiro.conf www.banco1.com.br www.banco2.com.br www.site3.com.br www.site4.com.br espec.ppgia.pucpr.br www.pucpr.br -mac_mecanicos.conf 00:13:11:f4:e1:20 00:11:11:f1:17:22 00:14:f2:11:10:f3 -palavras_bloqueadas.txt radio sexo videos -sites_permitidos.txt www.suaempresa.com.br www.tesouro.gov.br -users.conf
mecanico01:udwwdrkfkmv/k mecanico02:yyaku3ldcoqem Importante observar que tanto os arquivos de configuração acima criados quanto os conteúdos dos mesmos se aplicam ao cenário em questão, tais arquivos devem se alterar de acordo com o cenário desejado. Por padrão, o arquivo /etc/squid/squid.conf possui muitos comentários, tais comentários dificultam sua manipulação. Recomenda-se efetuar backup do arquivo original e apagar seus comentários, deixando-o apenas com as configurações básicas para funcionamento do servidor [7]: :~>sudo cp squid.conf squid.conf.original :~>sudo egrep -v "^# ^$" squid.conf.original > squid.conf Para implantação dos perfis da tabela 1, edita-se o arquivo /etc/squid/squid.conf de forma a deixa-lo conforme abaixo: acl all src all acl manager proto cache_object acl localhost src 127.0.0.1/32 acl to_localhost dst 127.0.0.0/8 acl localnet src 10.0.0.0/8 acl localnet src 172.16.0.0/12 acl localnet src 192.168.0.0/16 acl SSL_ports port 443 acl SSL_ports port 563 acl SSL_ports port 873 acl Safe_ports port 80 acl Safe_ports port 21 acl Safe_ports port 443 acl Safe_ports port 70 acl Safe_ports port 210 acl Safe_ports port 1025-65535 acl Safe_ports port 280 acl Safe_ports port 488 acl Safe_ports port 591 acl Safe_ports port 777 acl Safe_ports port 631 acl Safe_ports port 873 acl Safe_ports port 901 acl purge method PURGE acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny!safe_ports http_access deny CONNECT!SSL_ports http_access allow localhost # RFC1918 possible internal network # RFC1918 possible internal network # RFC1918 possible internal network # https # snews # rsync # http # ftp # https # gopher # wais # unregistered ports # http-mgmt # gss-http # filemaker # multiling http # cups # rsync # SWAT ## bloco responsável por criar e configurar as Delay ## ## Declaração da quantidade de delays delay_pools 3 ## Criação da Delay e a configuração da velocidade a qual irá trabalhar delay_class 1 2 delay_parameters 1 262144/262144 48000/48000
delay_class 2 2 delay_parameters 2 262144/262144 25000/25000 delay_class 3 2 delay_parameters 3 262144/262144 12000/12000 ## bloco responsável por liberar sites permitidos ## ## Criação da acl sites_permitidos acl sites_permitidos dstdom_regex "/etc/squid/files/etc/sites_permitidos.txt" ## Liberação de todos os sites que estiver contidos na acl sites_permitidos http_access allow sites_permitidos ## bloco responsável por controlar o perfil Diretoria ## ## Criação da acl diretoria acl diretoria arp "/etc/squid/files/diretoria/mac_diretoria.conf" ## Associação dos parâmetros da delay 1 ao grupo diretoria delay_access 1 allow diretoria ## Liberação de acesso total ao perfil diretoria http_access allow diretoria ## bloco responsável por controlar o perfil Financeiro ## ## Criação da acl financeiro acl financeiro arp "/etc/squid/files/financeiro/mac_financeiro.conf" ## Criação da acl sites_financeiro contendo a lista de sites permitidos acl sites_financeiro dstdom_regex "/etc/squid/files/financeiro/sites_financeiro.conf" ## Associação dos parametros da delay 2 ao perfil financeiro delay_access 2 allow financeiro ## Liberação dos sites contidos na acl sites_financeiro ao perfil financeiro http_access allow financeiro sites_financeiro ## bloco responsável por bloquear sites que contenha determinadas ## ## palavras ## ## Criação da acl palavras_bloqueadas acl palavras_bloqueadas url_regex -i "/etc/squid/files/etc/palavras_bloqueadas.txt" ## Bloqueio dos sites que contenham palavras que estejam na acl palavras_bloqueadas http_access deny palavras_bloqueadas ## bloco responsável por controlar o perfil Comercial ## ## Criação da acl comercial acl comercial arp "/etc/squid/files/comercial/mac_comercial.conf" ## Associar dos parametros da delay 2 ao grupo comercial delay_access 2 allow comercial
## Liberação de todos os sites ao grupo comercial http_access allow comercial ## bloco responsável por controlar o acesso por senha ## ## Caminho do arquivo que armazenam as senhas auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/files/etc/users.conf auth_param basic children 5 auth_param basic credentialsttl 2 hour auth_param basic realm Controle de Acesso ## Criação da acl senha acl senha proxy_auth REQUIRED ## bloco responsável por controlar o perfil Mecânicos ## ## Criação a acl mecanicos acl mecanicos arp "/etc/squid/files/mecanicos/mac_mecanicos.conf" ## Associação dos parâmetros da Delay 3 ao grupo comercial delay_access 3 allow mecanicos ## Liberação dos sites ao grupo mecânicos após autenticação http_access allow mecanicos senha ## Bloqueio do restante http_access deny all icp_access allow localnet icp_access deny all http_port 3128 hierarchy_stoplist cgi-bin? access_log /var/log/squid/access.log squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/ \?) 0 0% 0 refresh_pattern (Release Package(.gz)*)$ 0 20% 2880 refresh_pattern. 0 20% 4320 acl shoutcast rep_header X-HTTP09-First-Line ^ICY\s[0-9] upgrade_http0.9 deny shoutcast acl apache rep_header Server ^Apache broken_vary_encoding allow apache extension_methods REPORT MERGE MKACTIVITY CHECKOUT hosts_file /etc/hosts coredump_dir /var/spool/squid As alterações efetuadas no arquivo de configuração do Squid entram em vigor após o comando: :~>sevice squid reload Importante observarmos a seqüência que as ACLs se encontram pois como dito anteriormente o squid trabalha de forma seqüencial sendo assim a alteração entre suas ordens causará funcionamento adverso ao desejado.
5 Instalando o Sarg O sarg é um aplicativo que utiliza os logs de acesso gerados pelo squid para fornecer relatórios via web, disponibilizando informações detalhadas de acesso por usuário, IP, horários, download, etc., provendo uma forma simples e eficaz de histórico e monitoramento [6]. Um requisito para instalação do sarg é possuir servidor web, sendo utilizado neste artigo o apache. :~>sudo apt-get install apache2 :~>sudo apt-get install sarg 5.1 Configurando o Sarg As configurações do sarg devem ser efetuados no arquivo /etc/squid/sarg.conf, sendo possível através do mesmo configurar idioma, caminho de arquivo de log do squid, sites e usuários que não devem aparecer nos relatórios de auditoria, fontes e imagens contidas na página de gerenciamento e outras particularidades. Porém, nesta implementação, será configurado apenas o idioma. Visando simplificar o endereço web de acesso ao sarg e prover segurança ao mesmo, será criado o alias /log ao diretório /var/www/squid-reports, deixando a página do sarg disponível no endereço http://192.168.0.1/log mediante login de acesso. Tais configurações devem ser efetuadas no arquivo /etc/apache2/sites-available/defalt: Alias /logs /var/www/squid-reports/ <Directory "/var/www/squid-reports"> Options Indexes MultiViews IncludesNoExec FollowSymLinks AllowOverride None Order allow,deny Allow from all AuthName "Logs de Acessoo Squid" AuthType Basic AuthUserFile /etc/squid/sarg.users require valid-user </Directory> Afim de aplicar as configurações efetuadas necessário reiniciar o apache: :~>sudo /etc/init.d/apache2 reload Deve-se configurar o cron para executar diariamente o script sudo sarg -f /etc/squid/ sarg.conf -d date-date -p -x -z, o mesmo irá construir os relatórios do sarg com base nos logs gerados pelo squid. A criação de usuários para acesso a pagina do sarg dá-se pelo comando: :~>sudo htpasswd /etc/squid/sarg.users administrador Nesta fase o sarg encontra-se configurado e seus relatórios estão prontos para serem visualizados de forma segura e rápida.
6 Efetuando os testes 6.1 Testando as permissões de acesso Figura 1 tela de bloqueio de acesso a site não permitido em computador do perfil financeiro Figura 2 tela de acesso a site autorizado em computador pertencente ao perfil financeiro
Figura 3 tela de bloqueio de site que contém palavra bloqueada em computador do perfil comercial Figura 4 tela de login para acesso em computador pertencente ao perfil mecânicos
6.2 Testando as velocidades de banda Figura 5 Tela de download a velocidade de 48.2KB/s em computador do perfil diretoria Figura 6 - Tela de download a velocidade de 25.6KB/s em computador do perfil comercial
Figura 7 - Tela de download a velocidade de 12.0KB/s em computador do perfil mecânicos 6.3 Testando os registros de logs Figura 8 - Tela de login ao site do sarg (histórico de uso da internet)
Figura 9 Tela de relatório do sarg sintetizado por usuários Figura 10 Tela de relatório de logs analítico por usuário
7 Considerações finais Mesmo em um ambiente onde a internet pode trazer inúmeros problemas (jurídicos e de produtividade), a não utilização da mesma é incogitável, pois essa ferramenta avança paralelamente com a modernização, sendo que a cada dia mais serviços são integrados a mesma. Neste cenário de riscos e necessidades, cabe aos gestores e aos profissionais da TI a implantação de mecanismos que levem seus colaboradores ao uso correto da internet. O Squid e o Sarg entram como ferramentas de controle e monitoração, que quando utilizados em conjunto com uma boa política de segurança e a conscientização dos colaboradores resultam em um ambiente de trabalho saudável e seguro, dando suporte a continuidade do negócio da organização. Bibliografia [1] Riscos, Controles e Legislação no uso da Internet nas Empresas - Acessado em 01/08/2009 http://www.sc.sucesu.org.br/pdf/cartilha_internet.zip [2] Presidência da República, Casa Civil - Acessado em 01/08/2009 http://www.planalto.gov.br/ccivil/leis/2002/l10406.htm [3] Supremo Tribunal Federal - Acessado em 01/08/2009 http://www.stf.jus.br/portal/jurisprudencia/listarjurisprudencia.asp?s1=341.nume.%20nao %20S.FLSV.&base=baseSumulas [4] Info Abril Acessado em 04/08/2009 http://info.abril.com.br/aberto/infonews/092007/13092007-16.shl [5] Imaster - Acessado em 14/08/2009 http://imasters.uol.com.br/artigo/3440/linux/servidor_proxy-cache_squid_no_cl9/ [6] Sarg Acessado em 05/09/2009 http://sarg.sourceforge.net/sarg.php [7] Viva o Linux- Acessado em 16/08/2009 http://www.vivaolinux.com.br/dica/remover-comentarios/