Início Executando Proxy Squid Transparente em Bridge no Linux
André Stato 11 de fevereiro de 2016 4 comentários Firewall, Proxy
Neste Post iremos abordar como configurar o Linux em Bridge Mode. O que é isso?
O Bridge no Linux, trabalhará como uma ponte entre o roteador e a rede, se colocando entre ambos, mas não sendo o Gateway de saída. Todos pacotes destinados ao Roteador, antes terão que passar pelo Proxy, que fará sua filtragem normalmente.
O Bridge é uma forma de conectar dois seguimentos de rede Ethernet de uma maneira independente de protocolo. Os pacotes são encaminhados com base no endereço Ethernet, ao invés do endereço IP.
Este procedimento é interessante, quando já temos toda infraestrutura pronta e gostaríamos de usar um proxy para acelerar e filtrar o conteúdo que vai para WEB de nossos clientes.
É muito comum chamarmos de Linux Box, veja abaixo o diagrama de como será esse ambiente:
Alguns fatores são interessantes quanto ao uso do esquema acima, entre eles temos que podemos utilizar com tecnologias diferentes, ou seja, meios físicos diferentes, com equipamentos diferentes. Pode-se ter um cisco switch Gigabit de uma lado e um router 100 Base TX , sem nenhum problema.
A infraestrutura de rede não precisa ser alterada, baste ter o Linux com duas interfaces de redes e muito importante se caso seu Linux tiver um shutdown, basta reconectar os cabos e está tudo bem novamente. Muito simples!!!
Ainda assim, podemos aplicar algumas regras de firewall que funcionária perfeitamente.
É necessário ter um kernel superior ao 2.4, com duas interfaces de rede, como por exemplo eth0 e eth1.
Obviamente, é possível criar mais de um ponto, como novas interfaces.
É necessário o pacotes "bridge-utils", e a ferramenta ebtables.
O pacotes bridge-utils contém as principais ferramentas necessárias para instalar e configurar o Bridge no Linux. Um dos comandos que utilizaremos dessa ferramenta é o btctl, para configurar o bridge.
Já o ebtables é utilizado para (Linux Ethernet bridge firewalling), como o nome diz, utilizado para filtragem Ethernet no Bridge.
O programa ebtables é uma ferramenta de filtragem para um firewall ponte. A filtragem é focado em campos de quadro Ethernet da Camada de Enlace. Também nos dá a capacidade de alterar os endereços MAC Ethernet.
Também é necessário a instalação do Squid. Da mesma forma que anteriormente, podemos usar o apt-get para instalar:
Depois de instalarmos podemos dar uma limpada no arquivo de configuração:
mv squid.conf squid.conf.bkp
cat squid.conf.bkp | grep –v –E "^#" | uniq > squid.conf
Obviamente é necessário configura-lo de forma que atenda suas necessidade. Bem no mínimo liberar sua rede. Como foco aqui não é o Squid, e sim o bridge, irei deixar aqui somente a liberação da rede internet, supondo que essa seja 192.168.0.0/24.
Posteriormente você poderá implementar suas políticas de acesso para uso do proxy.
Agora vamos a configuração efetivamente do nosso brigde.
Usaremos o comando brctl para criação de nossa bridge que responderá ao nome br0, que terá como base a eth0 e eth1.
Parte 1: Criar a bridge
No primeiro comando criamos nossa bridge, sem vínculo ainda com nenhuma interface.
Já no segundo e terceiro estamos verificando o status da bridge e os endereços de MAC associados respectivamente.
Parte 2: Adicionar interfaces à bridge
Esses comandos irão adicionar a interface eth0 e eth1 no bridge br0. Provavelmente qualquer link que possa ter nesse momento com a máquina irá cair.
Parte 3: Zerando as interfaces
Esses comandos além de zerar as configurações de rede, sobem ela no modo promiscuo, ou seja, receberá qualquer pacote, de qualquer host, mesmo que não seja destinada à mesma. É necessário para que posso receber todo tráfego e repassar.
Parte 4 – Configurar endereço IP para o Bridge
Iremos configurar endereços IP no Bridge, de forma que você possa administrar posteriormente de forma remota.
ifconfig br0 192.168.0.7 netmask 255.255.255.0 up
Parte 5 – Configurar Rota de saída
É importante configurar também a rota de saída para a br0, para que possa acessar remotamente.
Com isso finalizamos as configurações do Bridge, o próximo passo é criar rotas e regras para que o proxy trabalhe com nossa interface.
A primeira coisa a ser feita é redirecionar o tráfego da LAN para o Brigde Transparente, vejamos abaixo:
iptables -t nat -A PREROUTING -i br0 -p tcp –dport 80 -j REDIRECT –to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-ports 3128
iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 80 -j REDIRECT –to-ports 3128
Finalizando esse processo devemos reiniciar no Proxy Squid.
Com isso finalizamos a configuração do nosso Bridbge Proxy Transparente.
Logicamente no próximo boot, tudo será perdido, então será necessário que crie um script e coloque na inicialização.
Então crie um script, com todos os comandos que colocamos, e adicione ainda um "servisse squid restart" . Você pode colocar no rc.local, ou se preferir criar um script com os padrões start, stop, restart no /etc/init.d.
Bom isso ai pessoal, espere que aproveitem.
Artigo anterior Enviando Alerta Zabbix via Email Autenticado
Próximo artigo Controlando permissões com ACL
Veja se pode me ajudar, estou tentando um cenário com squid onde recebo uma copia do trafégo do meu router na eth0 e quero fazer o squid logar este trafego espelhado.
Coloquei a eth0 em modo promiscuo, e consigo ver via tcpdump as conexões chegando. Criei a bridge adicionado a eth0 e fiz o redirect com Iptables.. chega a contabilizar nas estatisticas do Iptables o redirect, mais no access_log do squid não chega, e se tento também analisar com tcpdump na porta 3128 do squid não ta chegando nada.. alguma ideia?
router port mirror-> ether0 squid -> bridge br0 -> squid 3128
O Maior problema é que o trafego realmente não está passando pelo squid, e sim pelo router, ai não tem como o squid logar.
O ideal é que o trafego fosse realmente pro squid.
Desta forma que está fazendo acredito não funcionar.
Outro possibilidade, e tratar esse log de entrada com script e expressões regulares, para transforma no padrão do access.log e depois adicionar realmente ao access.log, com isso poderá gerar grafico de uso e etc com squidGuard.
Bom dia… Muito útil esse proxy bridge, mas, essa instalação bridge funcionaria com o Squid compilado e capturando requisições https?
Outra questão… não seria necessário ativar o ip_forward ( "echo 1 > /proc/sys/net/ipv4/ip_forward ") para o tráfego de pacotes entre as placas físicas?
Hoje em dia o Squid captura bem, mas é trabalhoso o processo. Além da configuração do prórpio squid, tem que gerar certificados, instalar nos clientes, e etc.