Você está na página 1de 36

Projeto e Configuração de Firewalls

Squid Proxy

Prof. Emerson Ribeiro de Mello, Dr.


mello@ifsc.edu.br

Pós-Graduação em Redes de Computadores e Segurança de Sistemas


UNIDAVI

Dezembro de 2010

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 1 / 30


Squid

Trata-se de um proxy e cache para navegação web, atendendo


protocolos como HTTP, HTTPS e FTP
proxy == procurador. Aquele que atua em favor de um outro
cache == esconder. Local de armazenamento que contém dados que o
computador precisará usar em curto tempo ou usa com mais frequência

Funcionamento
Squid atua como um agente, recebendo pedidos dos clientes e repassando
estes para os servidores na Internet
Armazena uma cópia em disco do conteúdo transferido e faz uso
desta cópia em pedidos subsequentes para um mesmo conteúdo

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 2 / 30


Requisitos de hardware

Disco rı́gido
Velocidade de acesso – SAS ou SATA (taxa até 6Gb/s)
Espaço de armazenamento – Ex: dez usuários com consumo médio
diário de 10Mb irá consumir um espaço no cache de 1 Gb em apenas
10 dias
Memória RAM
Squid guarda em memória a tabela com os objetos armazenados no
cache
Obter tais informações no swap em disco resulta em uma maior demora
Poder de processamento
Squid quando usado somente como cache, sem controle de acesso, não
exige muito CPU
Ferramentas de relatórios de acesso consomem intensivamente o CPU

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 3 / 30


Instalando o Squid – Ubuntu 10.10

Instalação

1 sudo apt-get install squid3 apache2-utils

Configuração básica: /etc/squid3/squid.conf

2 # Nome da maquina
3 visible_hostname webproxy.empresa.com.br
4 # Ouvira nas portas 3128
5 http_port 3128
6 # Local onde armazenara o cache (tamanhoMb Level1_dir Level2_dir)
7 cache_dir ufs /var/spool/squid3 4000 16 256
8 # tamanho maximo de um unico objeto no cache em disco
9 maximum_object_size 16384 KB
10 # Registro de acessos
11 access_log /var/log/squid3/access.log squid
12 # Inclua a linha abaixo antes de 'http_acess deny all' ja' presente no
arquivo padrao
13 http_access allow localnet

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 4 / 30


Laboratório 1 – Squid básico

Edite o arquivo /etc/squid3/squid.conf e configure as diretivas


apresentadas na lâmina anterior
Reinicie o serviço (sudo /etc/init.d/squid3 restart)
Configure o seu navegador web para apontar para a máquina onde
está rodando o Squid
Monitore o log do Squid enquanto navega pela web
tail -f /var/log/squid3/access.log

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 5 / 30


Listas de Controle de Acesso – ACLs

Usadas para indicar quais máquinas poderão fazer uso do serviço de


cache
Ex: Evitar que usuários maliciosos façam uso do seu serviço para atacar
um terceiro

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 6 / 30


Listas de Controle de Acesso – ACLs

Usadas para indicar quais máquinas poderão fazer uso do serviço de


cache
Ex: Evitar que usuários maliciosos façam uso do seu serviço para atacar
um terceiro
Usadas para indicar quais sı́tios web poderão ser acessados
Ex: Não é permitido acessar redes sociais

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 6 / 30


Listas de Controle de Acesso – ACLs

Usadas para indicar quais máquinas poderão fazer uso do serviço de


cache
Ex: Evitar que usuários maliciosos façam uso do seu serviço para atacar
um terceiro
Usadas para indicar quais sı́tios web poderão ser acessados
Ex: Não é permitido acessar redes sociais
Usadas para indicar palavras proibidas nos sı́tios web
Ex: Não é permitido acessar páginas que contenham a palavra ‘sexo’

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 6 / 30


Listas de Controle de Acesso – ACLs

Usadas para indicar quais máquinas poderão fazer uso do serviço de


cache
Ex: Evitar que usuários maliciosos façam uso do seu serviço para atacar
um terceiro
Usadas para indicar quais sı́tios web poderão ser acessados
Ex: Não é permitido acessar redes sociais
Usadas para indicar palavras proibidas nos sı́tios web
Ex: Não é permitido acessar páginas que contenham a palavra ‘sexo’
Usadas para indicar horários permitidos ou proibidos para navegar na
web
Ex: As redes sociais podem ser acessadas somente no horário do
almoço

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 6 / 30


Sintaxe das ACLs no Squid
O controle de acesso é feito através da combinação dos elementos
classes e operadores determinando se o acesso deverá ser permitido
ou negado
As classes indicam as caracterı́sticas da tentativa de acesso e o
operador (Ex: http_access) realiza o bloqueio ou a liberação

14 # classificando a origem 192.168.1.0/24 com o nome rede_local


15 # acl nome tipo (valor|"arquivo") [valor2] [valor3] ["arquivo2"]
16 acl rede_local src 192.168.1.0/24
17 # liberando o acesso para a rede_local
18 http_access allow rede_local
19 # bloqueando para o restante
20 http_access deny all

Polı́tica padrão: NEGAR


Quando o Squid recebe uma tentativa de acesso, este analisa as regras
sequencialmente. É desejado que a linha “http_access deny all”
sempre esteja presente e após as demais regras
Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 7 / 30
Alguns tipos de ACL no Squid

Tipo Descrição Exemplo


src Endereço IP de origem acl rede local src 192.168.1.0/24
dst Endereço IP de destino acl ifsc dst 200.135.37.64/26
port Porta contida na URL acl portas port 80 443
maxconn Número máximo de conexões de acl conexoes maxconn 5
um mesmo IP
proxy_auth Usuário autenticado acl usuarios proxy auth REQUIRED
max_user_ip Número máximo de IPs que um acl unico max user ip 1
usuário pode se autenticar
rep_mime_type Tipo do conteúdo da resposta acl video rep mime type video/mpeg video
time Horário do acesso acl almoco time MTWHF 12:00-14:00
url_regex Expressão regular aplicada à acl orkut url regex .*orkut.*
URL
urlpath_regex Expressão regular aplicada à URI acl fig urlpath regex -i (gif|jpg|png)
srcdomain Domı́nio de origem acl contabil srcdomain .cont.empresa.br
dstdom_regex Expressão regular ao domı́nio de acl ifsc dstdom regex (ifsc|cefetsc)\.edu\.br
destino

http://www.squid-cache.org/Doc/config/acl/
Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 8 / 30
ACL – Exemplo 1

Nota
Faça uma cópia de segurança do arquivo squid.conf antes de iniciar este
exemplo.

1 Somente máquinas da rede 192.168.1.0/24 podem usar o proxy


2 Não é possı́vel acessar conteúdos hospedados nos servidores do
Youtube
As restrições só devem ser aplicadas de 2ª a 6ª das 08:00-12:00 e das
14:00-18:00
A máquina do gerente (192.168.1.100) pode acessar o Youtube a
qualquer momento
3 Configure como proxy transparente

21 iptables -t nat -A PREROUTING -i $DEV_LAN -p TCP --dport 80 -j REDIRECT


--to-port 3128

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 9 / 30


ACL – Exemplo 1 (código)

22 # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS

24 http_port 3128 transparent # procure por essa linha no arquivo


25 visible_hostname ubuntu-squid-proxy
26 cache_mgr sysadmin@empresa.com.br

28 acl rede_local src 192.168.1.0/24


29 acl maquina_gerente src 192.168.1.100
30 # Sunday, Monday, Tuesday, Wednesday, tHursday, Friday, sAturday
31 acl matutino time MTWHF 8:00-12:00
32 acl vespertino time MTWHF 14:00-18:00
33 acl youtube dstdomain .youtube.com .googlevideo.com .ytimg.com

35 http_access allow redelocal !matutino !vespertino youtube


36 http_access allow redelocal !youtube
37 http_access deny all

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 10 / 30


ACL – Exemplo 2

Não permita o acesso a sı́tios de pornografia, compartilhamento de


arquivos, vı́deos e garanta o acesso a sı́tios confiáveis

Arquivo texto deve conter uma URL ou uma palavra por linha
bloqueados.txt liberados.txt

38 megaupload.com 41 .uol.com.br
39 sexo 42 www.folha.com.br
40 batepapo 43 www.g1.com.br

/etc/squid3/squid.conf

44 acl bloqueados url_regex -i "/etc/squid3/bloqueados.txt"


45 acl liberados url_regex -i "/etc/squid3/liberados.txt"
46 acl flash_video url_regex \.flv$
47 http_access deny flash_video
48 http_access deny bloqueados !liberados

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 11 / 30


Bloqueando conteúdo
Fluxos de mı́dia
49 # Detectando o tipo do conteudo que esta' sendo baixado
50 # rep_mime_type deve ser usada com http_reply_access
51 acl media rep_mime_type x-ms-asf # Windows Media Player
52 acl media rep_mime_type video/flv video/x-flv # Flash Video
53 acl media rep_mime_type application/x-shockwave-flash
54 # Barrando pela extensao do conteudo
55 acl mediapr urlpath_regex \.(afx|asf|flv|swf)(\?.*)?$

57 http_access deny mediapr


58 http_reply_access deny media # resposta ao pedido do cliente

MSN Messenger
59 acl msn urlpath_regex -i gateway.dll
60 acl msnd dstdomain messenger.msn.com gateway.messenger.hotmail.com
61 acl msn1 req_mime_type application/x-msn-messenger

63 http_access deny msnd


64 http_access deny msn
65 http_access deny msn1

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 12 / 30


Fazendo cache de conteúdo dinâmico: Youtube

66 # Mantendo arquivos .flv em cache


67 refresh_pattern -i \.flv$ 10080 90% 999999

69 # Videos tendem a ser grandes. Aumentando o tamanho maximo dos objetos em


cache
70 maximum_object_size 40 MB

72 # Garantindo que o conteudo do dominio sera' guardado em cache


73 acl youtube dstdomain .youtube.com
74 cache allow youtube

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 13 / 30


Personalização das páginas de erro

O pacote squid-langpack apresenta um conjunto de páginas de


aviso em diversas lı́nguas
/usr/share/squid3/errors/pt-br
/etc/squid3/errorpage.css
No arquivo /etc/squid3/squid.conf

76 # Diretorio com os arquivos de erros


77 error_directory /usr/share/squid3/errors/pt-br

Exercı́cio: Personalizando uma página de erro


Edite a página de erro ERR_ACCESS_DENIED e deixe um aviso bem
destacado de acesso negado, inclusive com uma figura.

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 14 / 30


Autenticação de usuários

O Squid permite que somente usuários autenticados façam uso do


serviço

Método Descrição
LDAP Lightweight Directory Access Protocol
NCSA Arquivo com usuário e senha no formato do NCSA
MSNT Domı́nio Windows NT
PAM Módulos PAM do Unix
SMB Servidor SMB (Windows ou Samba)

http://wiki.squid-cache.org/ConfigExamples/#Authentication

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 15 / 30


Autenticação de usuários – NCSA

Configuração no squid.conf

78 # Nao deixe como proxy transparente


79 http_port 3128

81 auth_param basic program /usr/lib/squid3/ncsa_auth


82 /etc/squid3/usuarios
83 acl usuarios proxy_auth REQUIRED
84 # exigindo autenticacao somente para alguns sitios
85 # acl usuarios proxy_auth REQUIRED /etc/squid3/sitios-autenticados

87 http_access allow usuarios

Criação de usuários com o aplicativo htpasswd

88 # criando a base e adicionando usuario 'aluno'


89 htpasswd -c usuarios aluno
90 # adicionando outro usuario
91 htpasswd usuarios professor

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 16 / 30


Relatórios de acesso – SARG

Squid Analysis Report Generator é uma ferramenta desenvolvida por


um brasileiro que consolida as informações de acesso geradas pelo
Squid em uma página HTML
O SARG apresenta as seguintes informações
Quais usuários acessaram quais sı́tios web
O horário do acesso
Quantos bytes foram baixados
Quais são os sı́tios web mais acessados
Quais os usuários que mais navegam, bem como os horários de mais
acesso

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 17 / 30


Relatórios de acesso – SARG

Squid Analysis Report Generator é uma ferramenta desenvolvida por


um brasileiro que consolida as informações de acesso geradas pelo
Squid em uma página HTML
O SARG apresenta as seguintes informações
Quais usuários acessaram quais sı́tios web
O horário do acesso
Quantos bytes foram baixados
Quais são os sı́tios web mais acessados
Quais os usuários que mais navegam, bem como os horários de mais
acesso

NOTA
Se optar por usar o SARG em uma empresa/universidade é imprescindı́vel
que os usuários sejam avisados que o acesso deles a web está sendo
monitorado

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 17 / 30


SARG – Configuração /etc/sarg/sarg.conf

92 # Linguagem da pagina HTML


93 language Portuguese
94 # Local do access_log gerado pelo Squid
95 access_log /var/log/squid3/access.log
96 # Titulo da pagina HTML com os relatorios
97 title "Relatorio de Acesso"
98 # Local onde serao geradas as paginas
99 output_dir /var/www/relatorio
100 # Usuarios que nao terao seus dados de acesso publicados
101 exclude_users /etc/sarg/exclude_users
102 # Maquinas que nao terao seus dados de acesso publicados
103 exclude_hosts /etc/sarg/exclude_hosts
104 # Quantos relatorios antigos devem ser mantidos no diretorio
105 lastlog 10
106 # Formato da data (dd/mm/yy - e )
107 date_format e
108 # Tabela de mapeamento de IPs em nomes de usuario. Ex: 192.168.1.10 joao
109 usertab /etc/sarg/usertab

Executando o sarg
110 sarg [-f arquivo-conf] [-d dd/mm/yyyy-dd/mm/yyyy] [-o dir-destino]

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 18 / 30


Shell Script para Relatórios diários ou semanais

111 #!/bin/bash
112 SAIDA=/var/www/relatorio
113 SARG=`which sarg`
114 if [ $# -ne 1 ]; then
115 echo -e "Sintaxe errada.\n Informe d para diario e s para semanal"
116 echo "Exemplo: $0 d"
117 exit 1
118 fi
119 case $1 in
120 d)
121 DIR=$SAIDA/diario
122 PERIODO=$(date --date "1 day ago" +%d/%m/%Y)
123 PERIODO=$PERIODO-$PERIODO
124 ;;
125 s)
126 DIR=$SAIDA/semanal
127 HOJE=$(date --date "1 day ago" +%d/%m/%Y)
128 PERIODO=$(date --date "1 week ago" +%d/%m/%Y)`echo "-$HOJE"`
129 ;;
130 esac

132 mkdir -p $DIR


133 $SARG -d $PERIODO -o $DIR
Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 19 / 30
SARG – Configuração
Aplicativo /usr/sbin/sarg-reports e CRONTAB
/etc/cron.daily, /etc/cron.weekly e /etc/cron.monthly
/etc/sarg/sarg-reports.conf
134 SARG=/usr/bin/sarg
135 CONFIG=/etc/sarg/sarg.conf
136 HTMLOUT=/var/www/relatorio
137 PAGETITLE="Relatorio de acesso"
138 LOGOIMG=/relatorio/images/sarg.png
139 LOGOLINK="http://$(hostname)/"
140 DAILY=Diario
141 WEEKLY=Semanal
142 MONTHLY=Mensal
143 EXCLUDELOG1="SARG: No records found"
144 EXCLUDELOG2="SARG: End"

NOTA
Os relatórios são compostos de muitos arquivos html e mantê-los por
grandes perı́odos pode esgotar o espaço em disco ou ainda o número de
inodes da partição. (Para verificar inodes: df -i)
Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 20 / 30
Controle de acesso ao relatório do SARG

O próprio servidor Apache HTTP permite realizar controle de acesso


em um diretório especı́fico
Pode-se colocar na configuração do diretório em /etc/apache2 ou
ainda adicionando um arquivo .htaccess no diretório que se deseja
proteger
Para usar o .htaccess é necessário deixar as configurações globais do
diretório no Apache como AllowOverride All

145 <Files .htaccess>


146 order allow,deny
147 deny from all
148 </Files>

150 # Arquivo de senhas NCSA (gerado com aplicativo htpasswd)


151 AuthUserFile /var/www/usuarios-sarg
152 AuthName "Acesso Restrito"
153 AuthType Basic
154 Require valid-user

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 21 / 30


Monitorando a saúde do servidor com o Munin

Munin é uma ferramenta para monitoramento de recursos


disponibilizados em uma rede
É possı́vel monitorar diversas máquinas através de gráficos em uma
única página web
A máquina master conecta em todas as demais máquinas definidas
como node
Faz uso da ferramenta RRDTool1
Baseado no conceito de instalação simplificada e modular
Plugins podem ser adicionados e removidos para monitorar os mais
diferentes serviços
Plugins podem ser escritos em qualquer linguagem

1
http://oss.oetiker.ch/rrdtool
Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 22 / 30
Munin – Configuração
Master
155 apt-get install munin apache2
156 # Arquivo: /etc/munin/apache2.conf
157 # Trocar a linha Allow from localhost 127.0.0.0/8 ::1 por
158 Allow from all
159 # Arquivo: /etc/munin/munin.conf
160 # Trocar a linha: [localhost.localdomain] por
161 [nome-da-tua-maquina]
162 # Acrescentar as seguintes linhas para cada maquina que deseje
monitorar
163 [nome-da-outra-maquina]
164 address 192.168.1.10 # Coloque o IP da maquina node
165 use_node_name yes

Node
166 apt-get install munin-node
167 # Arquivo: /etc/munin/munin-node
168 # Permitindo que a maquina master (192.168.1.1) acesse o munin
169 allow ^192\.168\.1\.1$

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 23 / 30


Gráficos Munin – Espaço em Disco (dia)

Relatórios gerados pelo SARG sendo armazenados na partição /var

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 24 / 30


Gráficos Munin – Espaço em Disco (ano)

/var 60% ocupado não é tão preocupante (Em junho houve uma
intervenção do administrador)

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 25 / 30


Gráficos Munin – Uso de inodes (dia)

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 26 / 30


Gráficos Munin – Uso de inodes (ano)

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 27 / 30


Gráficos Munin – Squid pedidos

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 28 / 30


Gráficos Munin – Squid tráfego

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 29 / 30


Conclusões

O Squid atuando como cache consegue diminuir o tráfego externo


Bem útil para arquivos grandes e que são baixados por diversas
máquinas da rede local
Atualizações de antivı́rus, de softwares e dos sistemas operacionais

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 30 / 30


Conclusões

O Squid atuando como cache consegue diminuir o tráfego externo


Bem útil para arquivos grandes e que são baixados por diversas
máquinas da rede local
Atualizações de antivı́rus, de softwares e dos sistemas operacionais
O Squid combinado com um firewall (camada 3 e 4) consegue evitar
acesso a sı́tios web indesejados, indicar o tipo de acesso para cada
usuário e a restrição temporal para o acesso
Aplicativos como o SquidGuard e Dansguardian apresentam filtros
ainda mais poderosos
É possı́vel combinar o Squid com Antivı́rus (Ex: Clamav)

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 30 / 30


Conclusões

O Squid atuando como cache consegue diminuir o tráfego externo


Bem útil para arquivos grandes e que são baixados por diversas
máquinas da rede local
Atualizações de antivı́rus, de softwares e dos sistemas operacionais
O Squid combinado com um firewall (camada 3 e 4) consegue evitar
acesso a sı́tios web indesejados, indicar o tipo de acesso para cada
usuário e a restrição temporal para o acesso
Aplicativos como o SquidGuard e Dansguardian apresentam filtros
ainda mais poderosos
É possı́vel combinar o Squid com Antivı́rus (Ex: Clamav)
Ferramentas de monitoramento e de registro de acessos são úteis para
verificar a saúde do Squid, auxiliando no aprimoramento dos filtros
A mente ociosa do usuário é ferramenta contra o administrador, feche
uma porta e ele achará mais 10 para burlar o sistema (Ex: OpenProxy)

Prof. Emerson R. de Mello (IFSC) Projeto e Configuração de Firewalls Dezembro de 2010 30 / 30

Você também pode gostar