← Início Redes · Aula 06
NET · 06

Servidor Proxy Squid

Controle de Acesso à Internet — filtragem, cache e monitoramento de tráfego web

🤔 O que é um Servidor Proxy?

Proxy = "Intermediário" entre os clientes e a internet.
O servidor Proxy decide quem pode acessar o quê na web!

Pense no proxy como o porteiro de um prédio:

O porteiro verifica cada requisição antes de deixar passar!

Como funciona?

1
Cliente pede: "Quero acessar google.com"
2
Squid verifica as regras (ACLs)
3
Se permitido → busca na internet e retorna
4
Se bloqueado → nega o acesso com mensagem de erro
5
Porta padrão do Squid: 3128

Vantagens do Proxy

📋 O que são ACLs?

ACL = Access Control List — Lista de Controle de Acesso.
As ACLs definem quem pode acessar o quê e quando.

Tipos de ACL

TipoFunção
srcIP de origem (cliente)
dstIP de destino
dstdomainDomínio de destino
portPorta de destino
timeHorário de acesso

Estrutura de uma ACL

squid.conf — estrutura
# 1. Definir a ACL acl nome tipo valor # 2. Aplicar a regra http_access deny/allow nome
⚠ Ordem das regras importa!
As regras são lidas de cima para baixo. A primeira que "casar" com a requisição é aplicada. Coloque sempre o deny antes do allow!

📁 Arquivos Importantes

Arquivo / DiretórioFunção
/etc/squid/squid.confConfiguração principal do Squid
/etc/squid/block.txtLista de domínios bloqueados
/var/log/squid/access.logLog de todos os acessos
/var/log/squid/cache.logLog de erros e eventos internos

Sobre o squid.conf

💡 Dica — busca no VIM:
Dentro do VIM, digite /INSERT YOUR + Enter para pular direto à seção correta.

1 Instalar o Squid

bash — instalação
# Atualizar repositórios $ sudo apt-get update # Instalar o Squid $ sudo apt-get install squid

O que é instalado:

bash — verificar instalação
$ systemctl status squid ● squid.service - Squid Web Proxy Server Active: active (running)

2 Configurar Rotas de Rede

O servidor Squid possui duas interfaces de rede:

InterfaceTipoIPFunção
enp0s3NAT10.0.2.xAcesso à internet
enp0s8Rede Interna192.168.0.1Conecta os clientes

Precisamos definir a rota padrão pela interface que tem saída para a internet:

bash — configurar rota padrão
# Remover rota padrão atual $ sudo ip route del default # Adicionar rota para internet via NAT $ sudo ip route add default via 10.0.2.2
💡 Analogia: É como definir a "saída principal" do prédio. Direcionamos o tráfego para a porta que tem acesso à rua (internet).

3 Criar Lista de Bloqueio

bash — criar arquivo block.txt
$ sudo vim /etc/squid/block.txt
/etc/squid/block.txt
# Sites para bloquear (um por linha) .facebook.com .instagram.com .twitter.com .tiktok.com .youtube.com
Por que o ponto inicial (.)?
.facebook.com bloqueia todos os subdomínios: facebook.com, www.facebook.com, m.facebook.com, pt-br.facebook.com etc.
Adicione um domínio por linha — inclua os sites que desejar bloquear!

4 Configurar ACLs no squid.conf

bash — abrir configuração
$ sudo vim /etc/squid/squid.conf # Busque pela linha: /INSERT YOUR + Enter

Adicione abaixo da linha # INSERT YOUR OWN RULE(S) HERE:

squid.conf — ACLs de bloqueio
# Criar ACL com a lista de sites bloqueados acl block dstdomain "/etc/squid/block.txt" # Bloquear acesso aos sites da lista http_access deny block # Permitir acesso aos demais sites da rede http_access allow localnet
⚠ ORDEM IMPORTA!
Sempre coloque o deny antes do allow. Se inverter, o Squid vai permitir tudo e nunca chegar na regra de bloqueio!

5 Configurar DNS do Squid

❗ PASSO MUITO IMPORTANTE!
Sem a configuração de DNS, os sites permitidos não funcionarão!
squid.conf — adicionar DNS
# Adicionar próximo ao topo ou após "http_port 3128": dns_nameservers 8.8.8.8 8.8.4.4

Por quê essa configuração é necessária?

SituaçãoSites bloqueadosSites permitidos
Sem dns_nameservers✅ Funciona❌ Erro de DNS
Com dns_nameservers✅ Funciona✅ Funciona

6 Reiniciar o Squid

bash — reiniciar e verificar
# Aplicar as novas configurações $ sudo systemctl restart squid # Verificar se está rodando $ systemctl status squid ● squid.service - Squid Web Proxy Server Active: active (running)
✅ Resumo do que foi configurado no servidor:
  • ✅ Rotas de rede (NAT + rede interna)
  • ✅ Lista de sites bloqueados (block.txt)
  • ✅ ACLs de controle de acesso
  • ✅ DNS do Squid (8.8.8.8)
  • ⏭ Falta: Configurar o cliente Windows

7 Configurar Cliente Windows

Para que o Windows use o Squid como proxy, é preciso configurar nas definições de rede:

  1. Abra o Menu Iniciar
  2. Digite proxy na busca
  3. Clique em "Configurações de proxy"
  4. Ative a opção "Usar servidor proxy"
  5. Preencha os campos:
Configuração de proxy — Windows
Endereço: 192.168.0.1 Porta: 3128
O endereço 192.168.0.1 é o IP da interface interna do servidor Squid (enp0s8) — a interface que está na mesma rede dos clientes.

🧪 Testando o Proxy

No cliente Windows (com o proxy já configurado), abra o navegador e teste:

SiteResultado Esperado
google.com✅ Deve abrir normalmente
wikipedia.org✅ Deve abrir normalmente
github.com✅ Deve abrir normalmente
facebook.com🚫 Deve ser bloqueado
instagram.com🚫 Deve ser bloqueado
youtube.com🚫 Deve ser bloqueado
Mensagem de bloqueio do Squid
ERROR - Access Denied "The requested URL could not be retrieved"

🎯 Desafio Interativo

Arraste cada conceito para seu par correto:

3128
squid.conf
dstdomain
http_access deny
8.8.8.8
Porta padrão do Squid
Arquivo de configuração principal
Tipo de ACL para bloquear domínios
Comando para negar acesso
DNS público do Google

🛠 Atividade Prática

💻 VirtualBox ⏱ ~30 min 🧑‍💻 Individual
1
Instalar o Squid
No servidor Ubuntu, atualize os repositórios e instale o pacote squid. Verifique com systemctl status squid.
2
Configurar rotas
Remova a rota padrão e adicione uma nova via 10.0.2.2 (interface NAT). Confirme com ip route.
3
Criar block.txt
Crie /etc/squid/block.txt com ao menos 5 domínios para bloquear, usando o ponto inicial (.facebook.com).
4
Configurar ACLs e DNS
No squid.conf, adicione as ACLs de bloqueio abaixo de "INSERT YOUR" e insira a linha dns_nameservers 8.8.8.8 8.8.4.4.
5
Reiniciar e testar
Reinicie o Squid, configure o proxy no Windows (192.168.0.1:3128) e teste acessar sites permitidos e bloqueados.
📋 Observe: O que aparece no navegador ao tentar acessar um site bloqueado? Verifique o log com sudo tail -f /var/log/squid/access.log.

❓ Verifique seu Conhecimento

Qual a principal função de um servidor proxy?

ADistribuir endereços IP na rede
BIntermediar e controlar o acesso à internet
CResolver nomes de domínio
DCompartilhar arquivos entre computadores
✓ O proxy age como intermediário: clientes conectam ao proxy, que faz as requisições em seu nome, filtrando e cacheando o tráfego.

Qual porta padrão usa o Squid?

A80
B8080
C3128
D443
✓ O Squid escuta por padrão na porta 3128. Configure os clientes para usar essa porta como proxy HTTP.

Qual diretiva no squid.conf bloqueia acesso a um site específico?

Aacl bloqueados dstdomain .site.com / http_access deny bloqueados
Bblock domain .site.com
Cdeny url .site.com
Drestrict access to .site.com
✓ Define uma ACL com acl bloqueados dstdomain .site.com e então aplica http_access deny bloqueados antes das regras de allow.

Qual comando verifica erros de configuração no Squid antes de reiniciá-lo?

Asquid --test
Bsquid -c check
Csquidcheck -f /etc/squid/squid.conf
Dsquid -k parse
squid -k parse valida o squid.conf e lista erros de sintaxe sem reiniciar o serviço.