Proxy transparente, SQUID + Iptables

O escopo deste tutorial não abrange a instalação e configuração do squid, se quiser saber como configurar o squid acesse esse tutorial: configurando o squid, o objetivo deste artigo é a configuração do servidor proxy squid de modo transparente, evitando assim que seja necessário informar no navegador o endereço do servidor e a porta.

De maneira básica, para funcionar o squid precisa apenas declarar a http_port e a acl all, assim:

http_port 3128 transparent
acl all src all

Observe que a frente do http_port 3128 acrescentamos a palavra transparent, indicando que o Squid irá primeiro procurar a regra de redirecionamento no iptables para somente depois, caso não encontre nada no firewall, verificar o navegador. A palavra transparent indica que o servidor proxy irá funcionar de maneira transparente para o usuário, mas antes são necessárias algumas configurações no iptables, conforme pode ser visto a seguir:

Configurando o iptables para o proxy transparente

Acesse o arquivo firewall.sh dentro da pasta /etc, utilizamos esse mesmo arquivo em um artigo anterior para configurarmos um servidor de internet. Iremos adicionar algumas regras para fazer funcionar o proxy transparente.

#!/bin/bash
#Declaração das variáveis que irão armazenar a interface WAN e a interface LAN
IF_WAN=eth0
LAN=192.168.3.0/24

#definição das regras do firewall e em seguida apago todas.
iptables -F
iptables -t nat -F

#Ativa o roteamento de pacotes
echo 1 > /proc/sys/net/ipv4/ip_forward

#Regra de mascaramento
iptables -t nat -A POSTROUTING -O $IF_WAN -j MASQUERADE
#a partir daqui temos a criação de uma nova regra que no arquivo anterior não tinhamos
#Regra de redirecionamento do tráfego da tabela nat da porta 80 para a porta 3128 
iptables -t nat -A PREROUTING -p tcp -m tcp -–dport 80 -s $LAN -j REDIRECT --to  3128
Não se esqueça de acrescentar a palavra transparent no arquivo de configuração do squid, se você fizer apenas a mudança no firewall possivelmente você terá o seguinte erro ao tentar acessar uma página:
Erro no proxy transparente squid

Erro no proxy transparente squid


Para testar o proxy, desative-o no navegador, pode colocar sem proxy, ele deverá funcionar mesmo assim e deverá funcionar em qualquer navegador. Veja o exemplo:
Proxy transparente funcionando

Proxy transparente funcionando


Lembre-se que somente será redirecionado para a porta 3128 (porta do squid) o tráfego que entrar pela porta 80, logo, sites que usam protocolo https que roda na porta 443, como o site do facebook, não serão afetados, para corrigir esse problema basta acrescentar a porta 443 no arquivo de configuração do firewall, criando uma nova regra.
Também já haviamos definido que o arquivo de firewall seria executado automaticamente assim que iniciado o sistema, caso não se lembre como fazer, seguem os passos:

Automatizando a execução do firewall

edite o seguinte arquivo:

pico /etc/rc.local

antes da última linha digite:

sh /etc/firewal.sh
Esse é o mecanismo básico para o proxy transparente funcionar, contudo, é importante observar a estrutura da rede para o correto funcionamento do firewall, como mostrado no segundo artigo desta série: configurando a infraestrutura de rede, o ambiente de rede que estou utilizando neste exemplo funciona da seguinte forma:
Servidor Debian Wheezy 7.6
Interfaces
auto eth0 (configurada como NAT no virtual box)
iface eth0 inet dhcp

auto eth1
iface eth1 inet static (configurada como bridge no dhcp)
address 192.168.3.10
netmask 255.255.255.0
Ao configurar o servidor dhcp indique na diretiva option routers o mesmo endereço de sua interface eth1: 192.168.3.10

A estação cliente utilizada neste exemplo é uma máquina virtual debian wheezy contendo uma interface de rede configurada em modo bridge no virtual box e utiliza dhcp.


Leituras recomendadas:
http://www.vivaolinux.com.br/artigo/Entendendo-a-teoria-do-iptables?pagina=4
http://www.websolutti.com.br/artigos/fw_debian.pdf

Compartilhe com seus amigosShare on Google+Share on FacebookTweet about this on Twitter

2 ideias sobre “Proxy transparente, SQUID + Iptables

  1. Pingback: Configuração de Servidores Linux | Concursos de TI

  2. Pingback: Instalando e Configurando o Sarg

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *