Instalação e configuração do Squid com TProxy no Debian

Quando se tem na rede um Mikrotik e precisa-se fazer controle do que os usuários acessam, existem algumas formas, uma delas é o proxy em paralelo com o Mikrotik e a outra o proxy em uma bridge no meio do caminho. Nesse artigo demonstro como configurar o Squid em bridge, assim como a aplicação dos patches necessários.

[ Hits: 51.967 ]

Por: Leandro Moreira em 11/07/2009


Configurando o proxy e modo bridge



Essa configuração é algo muito peculiar, temos que colocar o servidor onde encontra-se o proxy em modo bridge, conforme a figura abaixo:
Linux: Instalação e Configuração do Squid com Tproxy no Debian
Podemos observar que nosso servidor é a ponte entre a rede local e a internet, dessa forma ele estará "snifando" todo o tráfego de rede, tudo que for destinado a internet (porta 80) será redirecionado para a porta 3128 (Squid) para ser tratado e em seguida encaminhado ou não para a internet. Para isso precisamos instalar o pacote:

# apt-get install bridge-utils

Antes de começarmos, vamos definir o que é uma bridge:

"Uma bridge é uma interface de rede lógica composta por uma ou mais interfaces de rede física operando em nível 2."

Com o pacote de bridge instalado, temos agora que configurar as interfaces de rede para funcionarem como tal. O mais importante é manter a interface que será conectada ao firewall (cross) sem IP.

Vamos substituir na primeira linha da configuração das interfaces de rede o eth0 por br0 e embaixo da linha iface, adicionar as seguintes configurações:

bridge_ports eth0 eth1

Exemplo:

# vi /etc/network/interfaces

auto br0
iface br0 inet static
    bridge_ports eth0 eth1
    address 192.168.0.101
    netmask 255.255.255.0
    gateway 192.168.0.1

Salve o arquivo e saia.

Reinicie o serviço de rede, nesse ponto temos que tomar um cuidado importantíssimo, a máquina não pode estar na rede (quando digo estar na rede me refiro a estar em um ponto de rede como um host qualquer da rede), uma vez que a bridge coloca as interfaces em modo promíscuo, sendo assim o tráfego gerado por ela causará problemas na rede interna.

Podemos criar mais de uma bridge na máquina apenas replicando as configurações acima e tendo cuidado em substituir br0 por br1 e assim por diante.

Agora vamos linkar a rede interna na eth1 (192.168.0.101) e linkar a bridge (eth0) via cabo crossover direto no firewall (192.168.0.100), dessa forma todo o tráfego de rede passará pela bridge, que filtrará apenas o tráfego com destino a porta 80, o redirecionando para o Squid (porta 3128).

Agora precisamos alterar o arquivo /etc/sysctl adicionando as seguintes entradas:

## Ativa proteção contra ip/mac spoofing
net.ipv4.conf.default.rp_filter=1

## Ativa o roteamento de pacotes
net.ipv4.conf.default.forwarding=1

## Ativa o redirecionamento de porta
net.ipv4.conf.all.forwarding=1

Referências


Página anterior    

Páginas do artigo
   1. Introdução
   2. Aplicando os patches e compilando
   3. Squid - Compilando, instalando e configurando
   4. Configurando o proxy e modo bridge
Outros artigos deste autor

Monitorando Host via IPMI no Zabbix

Instalando e configurando o Nagios com e sem MySQL

Integrando Apache 2 com Tomcat 5

Recuperando RouterOS na RouterBOARD 450

Integrando autenticação do Squid ao Active Directory

Leitura recomendada

Instalando kernel otimizado do Ubuntu no Asus eeepc

Compilação do Kernel Linux para máquinas locais Debian

Mitigação - O que é e quando é "seguro" desabilitar

Instalando o Slackware com suporte HT - SMP

O kernel do Linux: A definição, importância e funcionalidades

  
Comentários
[1] Comentário enviado por lopan em 12/07/2009 - 08:57h

Leandro, essa solução de TProxy é velha e complexa!
O Kernel do Linux já tem suporte nativo ao TProxy, sem a necessidade de Patch (versões >= 2.6.28).
O TProxy também evoluiu para a versão 4.1, a versão do Squid 3.1 já conta com isso e a configuração é extremamente simples, como pode ser visto no link: http://wiki.squid-cache.org/Features/Tproxy4

Abraços,

[2] Comentário enviado por leandromoreirati em 13/07/2009 - 15:06h

lopan,
Me desculpa pelo artigo então, ja o escrevi a um ano e meio e so publiquei pois nas listas que frequento tenho percebido que muitas pessoas pedem documentação sobre o tproxy, a proposito quem usa a versão estable do debian (kernel 2.6.26) não tem esse modulo embracado no kernel, portando e uma escolha que a pessoa tera de fazer, ou aplica o patch e recompila o kernel, ou usa o kernel nao disponível, mas sua observação é valida pois nao consegui aplicar de forma alguma o tproxy no squid3, vou olhar o seu link e testar a versção 3.1, obrigado pela dica.

Att.

Leandro Moreira.

[3] Comentário enviado por josefilhobr em 14/08/2009 - 10:17h

Precisei da solução neste momento e tentei a configuração a partir da versão mais nova disponível no site do SQUID enviada por lopan. Até agora não obtive sucesso. O IP SPOOFING está acontecendo, porém não está fazendo cache, nem o access.log é gravado.

As permissões dos arquivos estão ok e a configuração dos parâmetros do access_log no squid.conf está direcionada também ok, bem como o diretório do cache.

Vcs têm alguma luz?

Obg

[4] Comentário enviado por Rafaelmcosta em 26/08/2009 - 00:49h

LEandro,

muito bom artigo,

uma dúvida...vc nao usou tcp_outgoing_address?

Como ficou a saída dos endereços dos clientes? Estão saindo independentes, ou seja, sai cada um com seu IP e nao com o do proxy, evitando problemas com Rapidshare e afins.

Abraços

[5] Comentário enviado por leandromoreirati em 26/08/2009 - 11:31h

Ramc,
Nao usei o tcp_outgoin, na verdade eles saem com o ip do gateway da rede, pois o gateway-tproxy, fica entre a rede o gateway da rede. Com relaçao ao rapidshare e afins, os problemas que tem e os problemas corriqueiros de multiplos acessos de um mesmo IP, creio eu pois os meus clientes pedem o bloqueio de acesso a esses serviços. Com relacao a saida, fica listado o ip de origem. Pra evitar problemas, eu restinjo acesso a porta 3128 a apenas a minha(s) rede (s) interna(s).
Qualquer duvida estou a disposiçao.

Att.

Leandro Moreira.

[6] Comentário enviado por Rafaelmcosta em 30/08/2009 - 09:57h

eu preciso que os ips dos clientes saiam livremente...
de forma realmente transparente.
Alguma dica?

Abraço ;)

[7] Comentário enviado por modesto916 em 28/04/2010 - 17:15h

Cara, otima atitude de postar sobre o que voce ja teve experiencia, mas sinceramente, na minha opinião, o TPROXY no linux continua uma gambiarra, uso essa solução com FreeBSD, nas versões do FreeBSD inferiores à 8.0, é necessario aplicar um patch e recompilar o kernel, mesmo assim, é muito simples, agora ja no 8.0 ja tem o suporte nativo e 100% funcional.

[8] Comentário enviado por leandromoreirati em 29/04/2010 - 10:43h

Modesto,
No linux no kernel acima de 2.6.28 ele também é nativo, mas infelizmente ainda nao pude testar por falta de tempo, acredido que seja necessário apenas complila-lo sem a necessidade de aplicar o patch.

Att.

Leandro Moreira.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts