Você está na página 1de 9

03/06/13 Servidor proxy com Squid - Instalao e configurao [Artigo]

www.vivaolinux.com.br/artigos/impressora.php?codigo=13739 1/9
Servidor proxy com Squid - Instalao e configurao
Autor: Rik <ric.galossi at gmail.com>
Data: 28/07/2012
Instalao e configurao bsica
O Squid, um servidor de Proxy, trabalha como sada principal da rede. Com isso, podemos centralizar nosso
foco em segurana (polticas de acesso, autenticao, etc.) em uma nica mquina.
O Squid trabalha com os principais protocolos da Internet, alguns deles so: HTTP, HTTPS, FTP.
O Squid um Software Livre licenciado pela GPL, sua utilizao pode nos trazer vrias vantagens, como:
Autenticao;
Controle de acesso;
Cache;
Controle centralizado;
Registros de acesso, etc.
Ele tambm atua como Proxy transparente evitando que usurios "espertinhos" possam burlar o controle de
acesso.
Bem, chega de teoria e vamos comear o trabalho. Este tutorial voltado distribuies baseadas no
Debian.
O Squid formado de um nico pacote, o que torna sua instalao extremamente fcil:
# apt-get install squid
Depois que instalamos o Squid, vamos renomear o arquivo de configurao para criarmos um do zero:
# mv /etc/squid/squid.conf /etc/squid/squid.conf.orig
# pico /etc/squid/squid.conf
Vamos criar uma configurao bsica no arquivo, adicionando as seguintes linhas:
http_port 3128
visible_hostname KORZOS
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
03/06/13 Servidor proxy com Squid - Instalao e configurao [Artigo]
www.vivaolinux.com.br/artigos/impressora.php?codigo=13739 2/9
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 21 80 443 563 70 210 280 488 59 777 901 1025-65535
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
acl redelocal src 192.168.0.0/24
http_access allow localhost
http_access allow redelocal
http_access deny all
Depois, d um:
# /etc/init.d/squid restart
...Que seu Squid j deve estar em pleno funcionamento.
Entendendo a configurao
Agora, precisamos descobrir para que serve cada uma destas linhas:
http_port 3128: Define em qual porta o Squid vai atuar, a porta default a 3128, mas podemos
definir qualquer outra porta.
visible_hostname KORZOS: Define o nome do servidor, lembre-se de substituir o "KORZOS" pelo
nome do seu servidor.
acl all src 0.0.0.0/0.0.0.0: Esta linha cria uma ACL, uma poltica de acesso com nome "all" contendo
qualquer IP.
acl localhost src 127.0.0.1/255.255.255.255: Aqui criamos uma ACL de nome "localhost" contendo
localhost.
acl SSL_ports port 443 563: Cria a ACL contendo as portas que so utilizadas no protocolo HTTPS.
acl Safe_ports port 21 80 443 563 70 210 280 488 59 777 901 1025-65535: Cria a ACL contendo
as portas de diversos protocolos conhecidos na Internet.
acl manager proto cache_object: Cria a ACL manager do tipo proto.
acl purge method PURGE : Cria a ACL manager do tipo method.
acl CONNECT method CONNECT: Cria a ACL CONNECT tambm do tipo method.
http_access allow manager localhost: Libera a ACL manager e localhost.
http_access deny manager : Bloqueia a ACL manager.
http_access allow purge localhost: Libera a ACL purge e localhost
03/06/13 Servidor proxy com Squid - Instalao e configurao [Artigo]
www.vivaolinux.com.br/artigos/impressora.php?codigo=13739 3/9
http_access deny purge: Bloqueia a ACL purge.
http_access deny !Safe_ports: Esta linha se torna bastante interessante pelo uso da "!", pois ela
bloqueia qualquer conexo que no contenha o contedo da ACL Safe_Ports.
http_access deny CONNECT !SSL_ports: Bloqueia qualquer conexo que no esteja no contedo da
ACL SSL_ports.
acl redelocal src 192.168.0.0/24: Cria a ACL redelocal contendo a faixa de endereo da rede.
http_access allow localhost: Libera a ACL localhost.
http_access allow redelocal: Libera a ACL redelocal.
http_access deny all: Bloqueia a ACL all
Incorporando - Adicionando o cache
Incorporando um pouco
Bem, depois que entendemos como funciona e para que serve essas linhas de configuraes, vamos
incorporar um pouco o nosso Squid.
Adicione as seguintes linhas em seu arquivo:
# Esta opo manda o Squid buscar os dados diretamente na origem, ela referente ao contedo dinmico,
se a URL conter algum padro aqui especificado ela ir direto a origem buscar o contedo.
hierarchy_stoplist CGI-bin ?
# Define o caminho das pginas de erro do squid.
error_directory /usr/share/squid/errors/Portuguese
# Define o e-mail que vai aparecer na pgina de erro do Squid, assim o usurio ter mais informaes para
interagir com o responsvel.
cache_mgr admin@seu_dominio.com.br
# Esta ACL responsvel por no armazenar contedo CGI em cache.
acl QUERY urlpath_regex cgi-bin ?
no_cache deny QUERY
Adicionando o cache
As prximas linhas so referentes s configuraes do cache.
# Define a quantidade de memria RAM reservada para o uso do Squid.
cache_mem 64 MB
03/06/13 Servidor proxy com Squid - Instalao e configurao [Artigo]
www.vivaolinux.com.br/artigos/impressora.php?codigo=13739 4/9
# Esta linha responsvel por limitar o tamanho dos arquivos que sero armazenados no cache da memria
RAM.
maximum_object_size_in_memory 64 KB
# Aqui definimos o tamanho mximo e mnimo respectivamente dos arquivos que sero armazenados no
cache do HD.
maximum_object_size 512 MB
minimum_object_size 0 KB
# Com essas duas linhas podemos definir a porcentagem de atualizao do cache, estamos dizendo que
quando o cache chegar em 95% o Squid ir apagar os arquivos mais antigos at chegar a 90%.
cache_swap_low 90
cache_swap_high 95
# Nessa linha conseguimos definir o tamanho e alguns parmetros do cache feito em HD, a linha composta
por quatro valores, o 1 define o caminho do cache (/var/spool/squid), o 2 o tamanho que ser alocado em
MB para o cache (2Gb), o 3 a quantidade de diretrios criados para o cache (16) e o 4 o numero de
subdiretrios que sero criados. Se voc possuir bastante espao em disco e quiser armazenar os arquivos
por mais tempo, aumente a opo do tamanha do cache.
cache_dir ufs /var/spool/squid 2048 16 256
# Define onde sero armazenados os registros de log do Squid.
cache_access_log /var/log/squid/access.log
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280
Essas trs ltimas linhas definem o intervalo de atualizao do cache, ou seja, de quanto em quanto tempo o
Squid ir aguardar antes de verificar se algum arquivo em cache foi alterado em seu local original (um
download ou uma pagina Web, por exemplo).
Mas importante lembrar que estas trs linhas sempre tero que ser usadas em conjunto, se voc omitir uma
delas, a configurao no entrar em vigor.
O Squid faz uso destes valores para verificar se os objetos armazenados so os mais recentes, ou h a
necessidade de atualiz-los. No h necessidade de mudana nestes valores.
Depois, reinicie o Squid para ativar as configuraes:
# /etc/init.d/squid restart
03/06/13 Servidor proxy com Squid - Instalao e configurao [Artigo]
www.vivaolinux.com.br/artigos/impressora.php?codigo=13739 5/9
Criando e entendendo as ACLs
Depois que demos um upgrade em nosso Squid, hora de criar as polticas de acesso (os bloqueios).
Antes de comear, importante lembrar que o Squid trabalha de forma hierrquica, ou seja, ele l as regras
em uma sequncia lgica. Se voc diz que ele deve bloquear a URL que contenha a palavra "sexo" e depois
mandar liberar, a URL continuar bloqueada, pois quando ele se encaixa em uma determinada regra, ele no
"l" as demais. Bem, mos massa.
Obs.: Nos exemplos a seguir, utilizarei como exemplo somente as ACLs do tipo: src e time.
Por questo de organizao, bom criar arquivos com o contedo a ser trabalho para no poluir o ".conf":
Neste arquivo, iremos adicionar palavras que sero bloqueadas, como: sexo, porno...
# pico /etc/squid/palavras_bloqueadas.txt
Neste arquivo, sero adicionados os sites que no tero acesso, como: 4shared.com, rapidshare.com,
megavideo.com, filesonic.com, etc:
# pico /etc/squid/sites_bloqueados.txt
Aqui, iremos colocar as redes sociais, como: facebook.com, orkut.com, twiter.com, etc:
# pico /etc/squid/redes_sociais.txt
Neste arquivo, iremos colocar os IPs das mquinas dos gerentes (e "daquela" estagiria que entrou semana
passada...:)):
# pico /etc/squid/ips_liberados.txt
Lista de sites adultos: redtub, xvideos
# pico /etc/squid/sites_porno.txt
Este arquivo limita os tipos de arquivos que sero baixados, tudo que contiver neste arquivo ser bloqueado.
Exemplos: .avi$, .mp3$, .wmv$:
# pico /etc/squid/formato_arquivo.txt
Pronto, depois dos arquivos criados e preenchidos, hora de criar as ACLs:
acl rede_local src 192.168.0.0/24
acl palavras_bloqueadas url_regex -i "/etc/squid/palavras_bloqueadas.txt "
acl sites_bloqueados url_regex -i "/etc/squid/ sites_bloqueados.txt "
acl redes_sociais url_regex -i "/etc/squid/redes_sociais.txt"
acl liberados src "/etc/squid/ips_liberados.txt "
acl porno url_regex -i "/etc/squid/sites_porno.txt "\e acl formato_arquivo url_regex -i
"/etc/squid/formato_arquivo.txt"
03/06/13 Servidor proxy com Squid - Instalao e configurao [Artigo]
www.vivaolinux.com.br/artigos/impressora.php?codigo=13739 6/9
acl horario_almoco time 12:00-13:00
http_access allow liberados
http_access allow redes_sociais horario_almoco
http_access deny redes_sociais
http_access deny sites_bloqueados
http_access deny palavras_bloqueadas
http_access deny porno
http_access deny formato_arquivo
http_access allow rede_local
Depois de adicionar estas linhas no "squid.conf", s reiniciar para que elas entrem em vigor:
# /etc/init.d/squid restart
Agora, vamos entender o funcionamento destas ACLs. No exemplo acima, criamos um modelo meio que
padro, no primeiro "pargrafo" criamos as ACLs e no segundo, liberamos ou bloqueamos as mesmas de
acordo com nossa poltica.
Vamos dissecar linha por linha:
acl rede_local src 192.168.0.0/24 -> Cria a ACL rede_local contendo a faixa de endereo da rede
local.
acl palavras_bloqueadas url_regex -i "/etc/squid/palavras_bloqueadas.txt " -> Cria a ACL
palavras_bloqueadas contendo as palavras proibidas que esto no arquivo descrito.
acl sites_bloqueados url_regex -i "/etc/squid/ sites_bloqueados.txt " -> Cria a ACL
sites_bloqueados contendo os sites proibidos que esto no arquivo descrito.
acl redes_sociais url_regex -i "/etc/squid/redes_sociais.txt" -> Cria a ACL redes_sociais contendo
os sites de redes sociais que esto no arquivo descrito.
acl liberados src "/etc/squid/ips_liberados.txt " -> Cria a ACL liberados contendo endereos de IP
que esto no arquivo descrito.
acl porno url_regex -i "/etc/squid/sites_porno.txt " -> Cria a ACL porno contendo os sites porns
que esto no arquivo descrito.
acl formato_arquivo url_regex -i "/etc/squid/formato_arquivo.txt" -> Cria a ACL
formato_arquivo contendo os tipos de arquivos que sero bloqueados que esto no arquivo descrito.
acl horario_almoco time 12:00-13:00 -> Cria a ACL horario_almoco do horrio de meio dia h
uma da tarde.
Aqui que a mgica acontece, a ordem sobre como voc organiza as ACLs, que faz toda a diferena, vamos
l:
http_access allow liberados
Aqui, ns liberamos acesso total para os IPs que estiverem no arquivo que criamos anteriormente.
http_access allow redes_sociais horario_almoco
03/06/13 Servidor proxy com Squid - Instalao e configurao [Artigo]
www.vivaolinux.com.br/artigos/impressora.php?codigo=13739 7/9
http_access deny redes_sociais
Nestas linhas, permitimos que qualquer usurio acesse os sites de redes sociais que estiverem no arquivo que
criamos dentro do horrio de 12:00 as 13:00, aps esse horrio, o acesso bloqueado.
http_access deny sites_bloqueados
Bloqueia o acesso aos sites que estiverem no arquivo criado dentro da ACL 'sites_bloqueados'.
http_access deny palavras_bloqueadas
Bloqueia o acesso palavras que estiverem no arquivo criado dentro da ACL 'palavras_bloqueadas'.
http_access deny porno
Bloqueia o acesso aos sites pornos que estiverem no arquivo criado dentro da ACL 'porno'.
http_access deny formato_arquivo
Bloqueia o acesso a downloads que forem do tipo de arquivo contido no arquivo criado na ACL
'formato_arquivo'.
http_access allow rede_local
Se o acesso no se encaixou em nenhuma das regras acima e for proveniente da rede interna, ele liberado.
Configurao final
Bem pessoal, depois de tudo isso, vamos ver como ficou nosso arquivo "squid.conf":
http_port 3128
visible_hostname KORZOS
error_directory /usr/share/squid/errors/Portuguese
hierarchy_stoplist CGI-bin ?
cache_mgr admin@seu_dominio.com.br
acl QUERY urlpath_regex cgi-bin ?
no_cache deny QUERY
03/06/13 Servidor proxy com Squid - Instalao e configurao [Artigo]
www.vivaolinux.com.br/artigos/impressora.php?codigo=13739 8/9
cache_mem 64 MB
maximum_object_size_in_memory 64 KB
maximum_object_size 512 MB
minimum_object_size 0 KB
cache_swap_low 90
cache_swap_high 95
cache_dir ufs /var/spool/squid 2048 16 256
cache_access_log /var/log/squid/access.log
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 21 80 443 563 70 210 280 488 59 777 901 1025-65535
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
acl rede_local src 192.168.0.0/24
acl palavras_bloqueadas url_regex -i "/etc/squid/palavras_bloqueadas.txt "
acl sites_bloqueados url_regex -i "/etc/squid/ sites_bloqueados.txt "
acl redes_sociais url_regex -i "/etc/squid/redes_sociais.txt"
acl liberados src "/etc/squid/ips_liberados.txt "
acl porno url_regex -i "/etc/squid/sites_porno.txt "
acl formato_arquivo url_regex -i "/etc/squid/formato_arquivo.txt"
acl horario_almoco time 12:00-13:00
http_access allow liberados
http_access allow redes_sociais horario_almoco
http_access deny redes_sociais
http_access deny sites_bloqueados
http_access deny palavras_bloqueadas
http_access deny porno
http_access deny formato_arquivo
http_access allow rede_local
http_access allow localhost
http_access deny all
03/06/13 Servidor proxy com Squid - Instalao e configurao [Artigo]
www.vivaolinux.com.br/artigos/impressora.php?codigo=13739 9/9
Bem, isso a!
Espero que tenha ficado claro e que todos entendam. Qualquer coisa, s deixar um comentrio.
Artigo previamente publicado em:
Instalando e Configurando Um Servidor Proxy com Squid guiadoti.blogspot.com.br
http://www.vivaolinux.com.br/artigo/Servidor-proxy-com-Squid-Instalacao-e-configuracao
Voltar para o site