Você está na página 1de 12

INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA DO PAR

CAMPUS TUCURU
GRADUAO EM TECNOLOGIA EM REDES DE COMPUTADORES

Disciplina: Administrao de Sistemas Operacionais


Professor: Pedro S

SQUID

TUCURU
PAR
SQUID

1. Definio
O Squid um servidor proxy utilizado para gerenciar o acesso a internet (rede externa), pois
ele implementa um controle sobre o contedo que deve ou no ser acessado pelas mquinas clientes
gerenciadas por este servidor.

1.1 Principais Funcionalidades

Controle de acessos;
Cache de acessos;
Logs de acessos.
O Squid trabalha com ACLs (Listas de Controle de Acesso) e atravs dessas listas de
controle ele se torna uma poderosa ferramenta na administrao de trfego de contedo entre a rede
interna e a externa. So atravs dessas listas que conseguimos criar e definir o controle de acesso a
internet de forma simples e flexvel.

Exemplo de ACL

Exemplo de Tela de bloqueio de URL


1.2. Tipos de ACLs
As ACLs so definidas da seguinte forma: acl nome tipo string | "arquivo" .
Existem vrios tipos de ACL que podemos utilizar, abaixo temos os mais comuns:
srcdomain: tipo indicado para verificar o domnio da mquina cliente. Os domnios sero
obtidos por resoluo reversa de IP, o que pode causar atrasos para a resposta da requisio.
A definio do domnio deve ser feita da seguinte forma: ".meudominio.com.br", no
podendo ser esquecido o "." (ponto) no incio;
time: usado para especificar dias da semana e horrios. Os dias da semana so definidos
atravs de letras que os representam, e os horrios atravs de intervalos na forma
hora:minuto_inicio-hora:minuto_final. Os dias da semana so especificados assim: S -
Sunday (Domingo), M - Monday (Segunda-feira), T - Tuesday (Tera-feira), W - Wednesday
(Quarta-feira), H - Thursday (Quinta-feira), F - Friday (Sexta-feira) e A - Saturday
(Sbado);
src: tipo utilizado para indicar endereos IP de origem. Pode-se especificar um endereo de
rede, como 192.168.16.0/24, um endereo de um determinado host, como 192.168.16.10/24
ou uma faixa de endereos, como 192.168.16.10 - 192.168.16.20/24;
dst: semelhante ao tipo anterior, mas est relacionada ao endereo de destino;
dstdomain: usado da mesma forma que o srcdomain, entretanto com relao ao destino;
srcdom_regex: avalia o domnio usando expresses regulares. Seu uso semelhante s duas
anteriores, acrescentando a flexibilidade do uso da expresso regular;
dstdom_regex: usado da mesma forma que srcdom_regex, entretanto com relao ao
destino;
url_regex: este tipo percorre a URL procura da expresso regular especificada. Deve ser
observado que a expresso case-sensitive, para que seja case-insensitive deve ser usada a
opo -i. o tipo mais comum de ACL, dada a flexibilidade proporcionada pelo uso de
expresses regulares;
urpath_regex: tipo semelhante url_regex, mas procura a expresso regular na URL sem
levar em conta o nome do servidor e o protocolo, isto quer dizer que a procura ser feita
apenas na parte da URL aps 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 tambm case-sensitive, para que seja case-insensitive deve ser usada
opo -i;
port: realiza o controle pela porta de destino do servidor, neste tipo deve ser especificado o
nmero da porta;
proto: serve para especificar o protocolo, como por exemplo FTP ou HTTP;
method: especifica o tipo de mtodo usado na requisio, como por exemplo GET,
CONNECT ou POST;
browser: usa uma expresso regular para tentar "casar" com os dados do cabealho HTTP e
combinando ento com o navegador utilizado pelo cliente;
ident: realiza o controle de acesso baseado no nome do usurio. Este tipo requer o uso de
um servidor ident rodando na mquina do cliente;
ident_regex: semelhante a ident, mas utilizando expresso regular;
proxy_auth: tipo usado para implementar autenticao de usurios no proxy. A autenticao
feita com uso de softwares externos. Podem ser passados os nomes dos usurios ou usada
opo REQUIRED para que seja autenticado qualquer usurio vlido;
snmp_community: tipo usado para especificar o nome da comunidade SNMP para que se
possa monitorar o Squid atravs deste protocolo;
maxconn: especifica um limite de conexes vindas de um determinado cliente, interessante
para uso com outras ACLs de forma a limitar quantidades de conexes para determinados
endereos especficos;
req_mime_type: especifica uma expresso regular para ser verificada no cabealho da
requisio em busca de um tipo MIME que coincida com o especificado;
arp: tipo usado para construir lista de acesso baseada no MAC Address da interface de rede
do cliente, ou seja, em vez de endereo IP da placa, usa-se o seu endereo MAC.
O Squid tambm conta com um cache que serve para armazenar sites visitados, dando a
impresso ao usurio de estar navegando mais rapidamente, que de fato verdade, pois ele est
buscando um site ou uma parte do site que j est salva dentro do servidor e as outras partes ou sites
que ainda no esto, o servidor ir busc-los e armazen-los at certo limite.

SARG (Squid Analysis Report Generator) uma ferramenta que permite analisar o histrico
de acesso web de usurios atravs da anlise do arquivo de log "access.log" do proxy Squid.
Com esta ferramenta possvel dizer quais os sites que foram acessados, em que horas,
quantos bytes foram baixados, quantas conexes foram feitas, relatrios de sites mais acessados,
usurios que mais acessam, relatrio de sites negados, falha de autenticao, entre outros.
Exemplo de um Relatrio de dias:

Exemplo de um arquivo de acesso:

1.3 Proxy Transparente

O proxy transparente uma soluo que utiliza uma combinao de regras de firewall e de
proxy para resolver problemas relacionados a segurana e a configurao dos navegadores dos
usurios.
importante entender que o trafego web da rede utiliza por padro a porta 80 TCP, e para
que possa ser utilizado o servio de proxy necessrio que este trafego seja direcionado para porta
3128 TCP. Isso pode ser feito de forma manual indicando os dados do servidor proxy nas
configuraes do navegador como mostra a figura abaixo.

O que resulta em dois problemas, o primeiro que configurando de forma manual deixa
possvel remover as configuraes e passar a navegar normalmente, burlando as restries de acesso
e todas as demais regras gerenciadas pelo proxy. O segundo problema precisar ir de mquina em
mquina para configurar as preferncias de servidor proxy no navegador, imagine essa tarefa em
uma rede com mais de duzentos computadores, o que demandaria muito tempo e mo de obra.
Como vantagens do proxy transparente, podemos citar:
Ocultar a utilizao do proxy aos usurios que acessam internet;
Forar os usurios a utilizarem o proxy, mesmo que eles no queiram;
Implementar a poltica real de acesso a sites proibidos, evitando os usurios mais "espertos"
de desabilitar a utilizao do proxy na navegao.
Com o proxy transparente todas as requisies feitas porta 80 so automaticamente
redirecionadas para a porta do Squid e assim fica virtualmente impossvel no passar por ele e suas
regras de ACLs.

Obs: Normalmente a autenticao no funciona com Proxy Transparente.

Linha de IPTABLES para que possamos redirecionar o trfego da porta 80 para a porta do
SQUID: iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port
3128.

2. Configurando o servidor Proxy Squid


A configurao do servidor muito simples, mas precisamos prestar ateno nos passos a
serem realizados para que possamos ter um servidor configurado e rodando de modo a cumprir com
o seu objetivo, que administrar o trfego de contedo na internet.
a) Instalar o pacote de dados Squid, e para isso basta estarmos no shell (terminal) como root e
digitarmos os seguintes comandos:

root@ServFw:~# apt-get install squid3

Lendo listas de pacotes... Pronto


Construindo rvore de dependncias
Lendo informao de estado... Pronto
Os pacotes extra a seguir sero instalados:
squid-langpack squid3-common
Pacotes sugeridos:
squidclient squid-cgi resolvconf ufw
Os NOVOS pacotes a seguir sero instalados:
squid-langpack squid3 squid3-common
0 pacotes atualizados, 3 pacotes novos instalados, 0 a serem removidos e 61 no atualizados.
preciso baixar 2.165 kB de arquivos.
Depois desta operao, 6.537 kB adicionais de espao em disco sero usados.
Voc quer continuar [S/n]? S
AVISO: Os pacotes a seguir no podem ser autenticados!
squid-langpack squid3-common squid3
Instalar estes pacotes sem verificao [s/N]? s
Obter:1 http://ftp.br.debian.org/debian/ wheezy/main squid-langpack all 20120616-1 [333 kB]
Obter:2 http://ftp.br.debian.org/debian/ wheezy/main squid3-common all 3.1.20-2.2+deb7u2 [204 kB]
Obter:3 http://ftp.br.debian.org/debian/ wheezy/main squid3 i386 3.1.20-2.2+deb7u2 [1.628 kB]
Baixados 2.165 kB em 3s (590 kB/s)
A seleccionar pacote anteriormente no seleccionado squid-langpack.
(Lendo banco de dados ... 143662 ficheiros e directrios actualmente instalados.)
Desempacotando squid-langpack (de .../squid-langpack_20120616-1_all.deb) ...
A seleccionar pacote anteriormente no seleccionado squid3-common.
Desempacotando squid3-common (de .../squid3-common_3.1.20-2.2+deb7u2_all.deb) ...
A seleccionar pacote anteriormente no seleccionado squid3.
Desempacotando squid3 (de .../squid3_3.1.20-2.2+deb7u2_i386.deb) ...
Processando gatilhos para man-db ...
Configurando squid-langpack (20120616-1) ...
Configurando squid3-common (3.1.20-2.2+deb7u2) ...
Configurando squid3 (3.1.20-2.2+deb7u2) ...
Creating Squid HTTP proxy 3.x spool directory structure
2014/11/11 22:04:50| Creating Swap Directories
[ ok ] Restarting Squid HTTP Proxy 3.x: squid3.

b) Agora necessrio criar alguns arquivos auxiliares, digite os comandos abaixo:

#touch /etc/squid3/bloqueados
#touch /etc/squid3/liberados

c) Agora devemos editar os arquivos que criamos na etapa anterior, digitando os comandos
abaixo.

#echo ..globo.. > /etc/squid3/bloqueados


#echo ..gov.br.. > /etc/squid3/liberados

d) Depois disso precisamos alterar o principal arquivo de configurao /etc/squid3/squid.conf

Obs: importante fazer bkp do arquivo original antes de iniciar a configurao.

#cat /etc/squid3/squid.conf > /etc/squid3/squid.conf.bkp


ou

#cp /etc/squid3/squid.conf /etc/squid3/squid.conf.bkp

e) Aps criar o backup do arquivo, devemos apagar o contedo do arquivo


/etc/squid3/squid.conf e depois copiar o contedo abaixo.

#Porta de comunicacao com os clientes


http_port 3128 transparent

visible_hostname ServFw

hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?

#Memoria disponivel para servio


cache_mem 128 MB
maximum_object_size 512 KB
minimum_object_size 0 KB
cache_swap_low 50%
cache_swap_high 90%
cache_access_log /var/log/squid3/access.log
cache_dir ufs /var/spool/squid3 2048 16 256
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280
dns_nameservers 208.67.222.222

#Rede local
acl redelocal src 192.168.254.0/28

#Portas de funcionamento
acl manager proto cache_object
acl SSL_ports port 443 563
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443 563
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 CONNECT method CONNECT

#ACLs para filtrar sites


acl liberados url_regex -i "/etc/squid3/liberados"
acl bloqueio url_regex -i "/etc/squid3/bloqueados"
acl almoco time MTWHF 12:00-14:00
acl depoisdas18 time MTWHF 18:00-23:59
acl antesdas8 time MTWHF 00:00-08:00

#Regras de acesso
http_access allow redelocal liberados
http_access deny redelocal bloqueio !almoco
http_access deny redelocal bloqueio !depoisdas18
http_access deny redelocal bloqueio !antesdas8

http_access allow redelocal


http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

Obs: Reinicie o servio com o comando /etc/init.d/squid3 restart

f) Para ativar o proxy transparente, que trata os protocolos UDP e TCP, e movendo o trfego
das portas 80 para porta 3128, adicione a linha abaixo no script de firewall
/etc/init.d/firewall.sh

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

2.1 Teste de funcionamento das Listas de Controle de Acesso - ACLs

a) Na mquina windows digite no navegador a url http://www.globo.com e verifique que o


parmetro ..globo.. dentro do arquivo /etc/squid3/bloqueados, resulta no bloqueio da
chamada ao site.

Obs: O mesmo vai ocorrer para qualquer site que contenha a string globo, como por exemplo
a url www.globoesporte.com.

2.2 Teste de funcionamento e limpeza do cache

a) Verifique o tamanho atual da pasta do cache com o comando du -h /var/spool/squid3/ e


depois acesse alguns sites de vdeos e imagens na mquina cliente para acompanhar o
crescimento do cache.
Exemplo de cache inicial: 17M /var/spool/squid3/

b) Verifique novamente tamanho atual da pasta do cache com o comando du -h


/var/spool/squid3/

Exemplo de cache depois de navegaes: 30M /var/spool/squid3/

3. Limpar cache rapidamente.


Agora vamos ao procedimento que deve ser realizado.

a) Pare o servio do Squid:

# /etc/init.d/squid3 stop

b) Renomeie o diretrio do Squid (aqui est o segredo, se voc apagar esse diretrio e depois
recriar, ele vai demorar a apagar e sua internet vai ficar mais tempo sem funcionar):

# mv /var/spool/squid3 /var/spool/squid.del

c) Recrie o diretrio de cache:

# mkdir /var/spool/squid3

d) D permisso para o diretrio criado:

# chown -R proxy.proxy /var/spool/squid3

e) Reconstrua os arquivos de cache:

# squid3 -z
f) Inicie o servidor do Squid (nesse passo, a sua internet j volta a funcionar):

# /etc/init.d/squid3 start

g) Com a internet j funcionando, apague o diretrio de cache antigo, sem impactos para os
usurios:

# rm -rf /var/spool/squid.del

Obs: importante criar um script com esses comandos.

h) Depois verifique o tamanho atual da pasta do cache com o comando du -h


/var/spool/squid3/ e verifique a reduo.

4. Verificar os Logs de acesso:


root@ServFw:/var/spool# tail -f /var/log/squid3/access.log

1415897268.526 231 192.168.254.12 TCP_MISS/204 504 GET


http://s.youtube.com/api/stats/qoe? - DIRECT/173.194.119.9 text/html
1415897298.531 227 192.168.254.12 TCP_MISS/204 504 GET
http://s.youtube.com/api/stats/qoe? - DIRECT/173.194.119.9 text/html
1415897308.199 915 192.168.254.12 TCP_MISS/204 570 GET
http://s.youtube.com/api/stats/watchtime? - DIRECT/173.194.119.9 text/html
1415897328.550 238 192.168.254.12 TCP_MISS/204 504 GET
http://s.youtube.com/api/stats/qoe? - DIRECT/173.194.119.9 text/html
1415897346.280 177678 192.168.254.12 TCP_MISS/206 22943811 GET http://r5---sn-
gpv7en7y.googlevideo.com/videoplayback? - DIRECT/173.194.27.10 video/webm
1415897346.339 1 192.168.254.12 TCP_MISS/000 0 GET http://s.youtube.com/api/stats/qoe? -
DIRECT/s.youtube.com -
1415897346.340 112 192.168.254.12 TCP_MISS/000 0 GET
http://s.youtube.com/api/stats/watchtime? - DIRECT/173.194.119.9 -
1415897804.348 657 192.168.254.12 TCP_MISS/302 483 GET http://download.mozilla.org/? -
DIRECT/63.245.215.111 text/html
1415897806.396 1858 192.168.254.12 TCP_MISS/206 300588 GET
http://download.cdn.mozilla.net/pub/firefox/releases/33.1/update/win32/pt-BR/firefox-
33.1.complete.mar - DIRECT/200.143.247.41 application/octet-stream
1415897829.954 0 192.168.254.12 TCP_DENIED/403 4430 GET http://www.globo.com/ -
NONE/- text/html
1415897830.029 0 192.168.254.12 TCP_DENIED/403 4463 GET
http://www.globo.com/favicon.ico - NONE/- text/html