Você está na página 1de 15

Pontifcia Universidade Catlica do Paran - PUCPR

Implantando o Squid para Gerenciamento de Banda


e Acesso a Internet

Contribuies:
Auxlio nos estudos dos problemas e riscos enfrentados pelas organizaes
com o acesso a internet, bem como contra-medidas para os mesmos.
Coordenao na preparao do servidor, definio do cenrio e
implementao do ambiente com o Squid e o Sarg.

Trabalho de Concluso de Curso


Evandro Augusto Volek
Outubro - 2009

Implantando o Squid para gerenciamento de banda e acesso a internet


Evandro Augusto Volek, Leandro Carretero Belo
Especializao em Redes e Segurana de Sistemas - 2008/1
Pontifcia Universidade Catlica do Paran
Curitiba, Outubro de 2009

Resumo
A utilizao da internet em ambiente corporativo pode trazer problemas jurdicos e
financeiros aos gestores, alm de perca de produtividade no ambiente organizacional. A fins
de se precaver de tais problemas, um conjunto de medidas so necessrias, tais medidas vo
desde a conscientizao dos usurios at monitoramento e punio. O artigo ir descrever os
passos para instalao e configurao do servidor proxy Squid, que efetuar o controle de
acesso e banda, bem como a utilizao de ferramentas a ele agregadas para o
monitoramento e anlise de logs.
1 Introduo
As empresas podem ser responsabilizadas pelo uso indevido ou inadequado da
Internet e de suas facilidades por seus empregados [1]
A afirmao acima tem embasamento no terceiro pargrafo do Art. 932 do Cdigo
Civil Brasileiro, que diz ser tambm responsveis pela reparao civil o empregador ou
comitente, por seus empregados, serviais e prepostos, no exerccio do trabalho que lhes
competir, ou em razo dele [2], e tambm pela sumula 341 do supremo tribunal federal, que
presume a culpa do patro ou comitente pelo ato culposo do empregado ou preposto. [3]
Racismo, pedofilia, pirataria, violao de direitos autorais, furto e ameaa so apenas
alguns exemplos de crimes cometidos pela internet.
Alm das responsabilidades jurdicas, o mal uso da internet ocasiona para as
organizaes problemas como perca de produtividade dos colaboradores com navegaes em
sites no relacionados ao trabalho e consumo da banda com tais contedos.
De acordo com estudo divulgado no site da Info Abril, os brasileiros gastam 5,9 horas
por semana navegando em sites no relacionados ao trabalho durante o expediente. [4]
A correta utilizao da internet em um ambiente corporativo demanda a implantao
de um conjunto de medidas:
Treinamento aos colaboradores
Termo de uso e responsabilidades
Mecanismos de controle de acesso
Ferramentas de limitao de banda
Relatrios de logs
Este artigo ir focar na implementao do servidor proxy Squid, e seu utilitrio Sarg,
os quais fornecem mecanismos de controle de acesso, limitao de banda e relatrios de logs;
ficando como sugesto ao leitor a pesquisa de mtodos de treinamento aos colaboradores e
modelos de termo de uso e responsabilidades.

Para melhor entendimento, a implementao assumir cenrio onde os usurios de


internet so agrupados em perfis, sendo que cada perfil possui determinado privilgio de
acesso e velocidade de navegao.
A implementao 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 smbolo :~> representa o prompt do terminal.
2 Entendendo o Squid
O principal arquivo de configurao do squid o /etc/squid/squid.conf, o squid o trata
de forma seqencial, e nele que faremos as configuraes necessrias para efetuar o controle
de acesso e banda.
O acesso controlado pelas ACLs, elas possibilitam criar regras de permisso ou
bloqueio de acesso, utilizando como critrio endereos de origem ou destino, domnios,
horrios, usurios, portas ou mtodos de conexo ao proxy. Para cada critrio existe um tipo
de ACL, seguem abaixo a sintaxe para criao 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

#
#
#
#
#
#
#
#

Endereo IP do cliente
Endereo IP do destino
Expresso que verifica o destino
Expresso que verifica uma URL
Expresso que verifica o URL path
Especifica uma porta ou conjunto de portas
Filtra por nome de domnios
Endereo Mac

A banda gerenciada pelas delays, para cria-las usa-se:


delay_pools
delay_class
delay_parameters

# nmero de delays
# criao da delay
# parmetros 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 configurao 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

Aps a configurao de rede, necessrio adicionar servidor dns, editando o arquivo


/etc/resolv.conf, o endereo a ser configurado pode ser de qualquer servidor dns, no artigo
usado:
nameserver 201.10.120.2

Depois de efetuadas as configuraes de rede, precisa-se restartar a mesma atravs do


comando:
:~>sudo /etc/init.d/networking restart

Aps configurada a rede, e estando o servidor com acesso a internet, recomenda-se


realizar update da base de dados do repositrio da instalao e upgrade para garantir que a
instalao esteja atualizada. Para isso utiliza-se os comandos:
:~>sudo apt-get update
:~>sudo apt-get grade

4 Instalando o Squid
A instalao do squid efetuada atravs do comando:
:~>sudo apt-get install squid

4.1 Definindo os Perfis


Afim de prosseguirmos com a implantao do servidor proxy assumiremos um cenrio
com os perfis da tabela 1 (o perfil ser responsvel pelo privilgio de acesso e pela velocidade
de navegao).
Perfil
Diretoria
Financeiro
Comercial
Mecnicos

Velocidade
(Kbps)
48
25
25
12

Privilgio de acesso
Total
Apenas sites listados
Total com restrio de sites que contenham determinadas palavras
Total com restrio de sites que contenham determinadas palavras

Autenticao
Mac
Mac
Mac
Mac/Senha

Tabela 1 perfis de acesso a internet


4.2 Configurando o Squid
Para implementar os perfis de forma organizada, criaremos em /etc/squid o diretrio
files, dentro do qual teremos um diretrio para cada perfil e um diretrio etc. Os diretrios
referentes aos perfis armazenam arquivos de configuraes do mesmo e o diretrio 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 configurao sero referenciados dentro do squid.conf, e seus


contedos so 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 configurao acima criados quanto os


contedos dos mesmos se aplicam ao cenrio em questo, tais arquivos devem se alterar de
acordo com o cenrio desejado.
Por padro, o arquivo /etc/squid/squid.conf possui muitos comentrios, tais
comentrios dificultam sua manipulao. Recomenda-se efetuar backup do arquivo original e
apagar seus comentrios, deixando-o apenas com as configuraes bsicas para
funcionamento do servidor [7]:
:~>sudo cp squid.conf squid.conf.original
:~>sudo egrep -v "^#|^$" squid.conf.original > squid.conf

Para implantao 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 responsvel por criar e configurar as Delay
##
####################################################################
## Declarao da quantidade de delays
delay_pools 3
## Criao da Delay e a configurao 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 responsvel por liberar sites permitidos
##
####################################################################
## Criao da acl sites_permitidos
acl sites_permitidos dstdom_regex
"/etc/squid/files/etc/sites_permitidos.txt"
## Liberao de todos os sites que estiver contidos na acl sites_permitidos
http_access allow sites_permitidos
####################################################################
####################################################################
## bloco responsvel por controlar o perfil Diretoria
##
####################################################################
## Criao da acl diretoria
acl diretoria arp "/etc/squid/files/diretoria/mac_diretoria.conf"
## Associao dos parmetros da delay 1 ao grupo diretoria
delay_access 1 allow diretoria
## Liberao de acesso total ao perfil diretoria
http_access allow diretoria
####################################################################
####################################################################
## bloco responsvel por controlar o perfil Financeiro
##
####################################################################
## Criao da acl financeiro
acl financeiro arp "/etc/squid/files/financeiro/mac_financeiro.conf"
## Criao da acl sites_financeiro contendo a lista de sites permitidos
acl sites_financeiro dstdom_regex
"/etc/squid/files/financeiro/sites_financeiro.conf"
## Associao dos parametros da delay 2 ao perfil financeiro
delay_access 2 allow financeiro
## Liberao dos sites contidos na acl sites_financeiro ao perfil
financeiro
http_access allow financeiro sites_financeiro
####################################################################
####################################################################
## bloco responsvel por bloquear sites que contenha determinadas ##
##
palavras
##
####################################################################
## Criao 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 responsvel por controlar o perfil Comercial
##
####################################################################
## Criao 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

## Liberao de todos os sites ao grupo comercial


http_access allow comercial
####################################################################
####################################################################
## bloco responsvel 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
## Criao da acl senha
acl senha proxy_auth REQUIRED
####################################################################
####################################################################
## bloco responsvel por controlar o perfil Mecnicos
##
####################################################################
## Criao a acl mecanicos
acl mecanicos arp "/etc/squid/files/mecanicos/mac_mecanicos.conf"
## Associao dos parmetros da Delay 3 ao grupo comercial
delay_access 3 allow mecanicos
## Liberao dos sites ao grupo mecnicos aps autenticao
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%
refresh_pattern ^gopher:
1440
0%
refresh_pattern -i (/cgi-bin/|\?)
0
0%
refresh_pattern (Release|Package(.gz)*)$
0
20%
refresh_pattern .
0
20%
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

10080
1440
0
2880
4320

As alteraes efetuadas no arquivo de configurao do Squid entram em vigor aps o


comando:
:~>sevice squid reload

Importante observarmos a seqncia que as ACLs se encontram pois como dito


anteriormente o squid trabalha de forma seqencial sendo assim a alterao 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
relatrios via web, disponibilizando informaes detalhadas de acesso por usurio, IP,
horrios, download, etc., provendo uma forma simples e eficaz de histrico e monitoramento
[6].
Um requisito para instalao 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 configuraes do sarg devem ser efetuados no arquivo /etc/squid/sarg.conf, sendo
possvel atravs do mesmo configurar idioma, caminho de arquivo de log do squid, sites e
usurios que no devem aparecer nos relatrios de auditoria, fontes e imagens contidas na
pgina de gerenciamento e outras particularidades. Porm, nesta implementao, ser
configurado apenas o idioma.
Visando simplificar o endereo web de acesso ao sarg e prover segurana ao mesmo,
ser criado o alias /log ao diretrio /var/www/squid-reports, deixando a pgina do sarg
disponvel no endereo http://192.168.0.1/log mediante login de acesso. Tais configuraes
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 configuraes efetuadas necessrio 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 relatrios do sarg com base nos logs
gerados pelo squid.
A criao de usurios 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 relatrios esto prontos para serem
visualizados de forma segura e rpida.

6 Efetuando os testes
6.1 Testando as permisses de acesso

Figura 1 tela de bloqueio de acesso a site no 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 contm palavra bloqueada em computador do perfil
comercial

Figura 4 tela de login para acesso em computador pertencente ao perfil mecnicos

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 mecnicos


6.3 Testando os registros de logs

Figura 8 - Tela de login ao site do sarg (histrico de uso da internet)

Figura 9 Tela de relatrio do sarg sintetizado por usurios

Figura 10 Tela de relatrio de logs analtico por usurio

7 Consideraes finais
Mesmo em um ambiente onde a internet pode trazer inmeros problemas (jurdicos e
de produtividade), a no utilizao da mesma incogitvel, pois essa ferramenta avana
paralelamente com a modernizao, sendo que a cada dia mais servios so integrados a
mesma.
Neste cenrio de riscos e necessidades, cabe aos gestores e aos profissionais da TI a
implantao de mecanismos que levem seus colaboradores ao uso correto da internet. O Squid
e o Sarg entram como ferramentas de controle e monitorao, que quando utilizados em
conjunto com uma boa poltica de segurana e a conscientizao dos colaboradores resultam
em um ambiente de trabalho saudvel e seguro, dando suporte a continuidade do negcio da
organizao.
Bibliografia
[1] Riscos, Controles e Legislao no uso da Internet nas Empresas - Acessado em
01/08/2009
http://www.sc.sucesu.org.br/pdf/cartilha_internet.zip
[2] Presidncia da Repblica, 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/