Linux - Configurando O Squid Como Proxy Transparente

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Linux - Configurando O Squid Como Proxy Transparente as PDF for free.

More details

  • Words: 1,163
  • Pages: 5
Linux: Configurando o SQUID como Proxy Transparente

Este tutorial não pretende ser um guia completo para uma configuração avançada de Squid, ele apenas vai mostrar como fazer algumas configurações simples mas que permitirão que se tenha um servidor atuando como gateway de uma rede fazendo cache de http.

1. Algumas convenções usadas neste tutorial: •

Sempre que uma linha começar com um "#", significa que ela contém um (ou mais) comando(s) e que ela deverá ser executada como usuário root.



Sempre que uma linha começar com um "$", significa que ela contém um (ou mais) comando(s) e que ela deverá ser executada como qualquer usuário, comum ou root.

2. O que é um servidor proxy ? Podemos resumir o significado de servidor proxy como uma espécie de "cache comunitário", onde toda página que um usuário visualizar ficará armazenada e quando outro (ou o mesmo) usuário requisitar a mesma página, ela não será trazida da Internet novamente, simplesmente será lida do disco e entregue, economizando tráfego de rede (isso se a página não tiver sido modificada na origem, caso isto tenha acontecido, ela será trazida da Internet novamente). Um proxy pode, além disso, fazer o controle de conteúdo, barrando o acesso a certos sites, por exemplo.

3. O que é o Squid ? Squid nada mais é que um software para servidor proxy que vem na maioria das distribuições Linux.

Como sei se o Squid está instalado na minha máquina ?

Se seu Linux for RedHat ou equivalente (Fedora, Conectiva, etc), digite num terminal: $rpm -q squid Se a resposta for algo do tipo: squid-2.4.STABLE7-4 significa que você tem o Squid instalado na sua máquina. Se a resposta for algo do tipo: package squid is not installed significa que você não tem o Squid instalado na sua máquina e terá que instalá-lo. Não tenho Squid instalado na máquina, como instalar ? Para RedHat ou equivalente, o meio mais fácil é acessar http://rpmfind.net, fazer uma busca por "squid", encontrar a versão disponível para sua distribuição, baixar e executar: #rpm -ivh squid* (para um RedHat 8.0, o download direto é ftp://rpmfind.net/linux/redhat/8.0/en/os/i386/RedHat/RPMS/squid-2.4.STABLE74.i386.rpm) Neste passo, pode acontecer do sistema reclamar da falta de algum pacote, neste caso, copie o nome de cada arquivo que foi reclamado, volte ao rpmfind.net e faça uma busca por este arquivo, baixe o pacote rpm que o contém, instale e refaça este passo até que não tenhamos mais pendências. Para facilitar a vida, pode usar o apt (http://apt.freshrpms.net). Com ele instalado, simplesmente execute: #apt-get update #apt-get install squid Com isto, você terá a última versão do squid instalada no seu sistema e todas as dependências terão sido resolvidas "automagicamente" :)

Como configurar minha máquina para atuar como gateway da rede ? A primeira coisa a fazer, é permitir que todos os pacotes possam ser reencaminhados (forward de pacotes) pela máquina:

#echo 1 > /proc/sys/net/ipv4/ip_forward Ou, numa maneira mais "elegante": #sysctl -w net.ipv4.ip_forward=1 Após um boot, esta configuração se perde, para torná-la permanente, coloque este comando para ser executado após cada boot (pode colocar, por exemplo, no final do /etc/rc.d/rc.local) ou, numa maneira mais "elegante", edite /etc/sysctl.conf e procure por "net.ipv4.ip_forward = 0", substitua o "0" por "1" e esta alteração já estará permanente. Após isto, configure o gateway das estações para apontar para o IP desta máquina. Se as estações navegarem normalmente, seu gateway está funcionando :) Como configurar o Squid ? A configuração do Squid, por padrão é toda feita dentro do arquivo /etc/squid/squid.conf. Tudo o que for exemplificado nesta seção estará neste arquivo. As principais alterações a serem feitas para o Squid atuar como proxy transparente, são: Descomentar (eu digitar) as linhas (no arquivo original, do RedHat 8, estão próximas a linha 1680 do squid.conf. Para se deslocar até esta linha, no "vi", digite ":1680" no modo de comandos.): httpd_accel_port 80 httpd_accel_host virtual httpd_accel_uses_host_header on httpd_accel_with_proxy on Além disso, é bom colocarmos alguma segurança no proxy, algo para evitar que pessoas de outras redes acessem nosso servidor, consumindo nossa banda. Próximo a linha 1460 estão definidas as "acls" (Access Control List). Nelas definimos algumas regras que posteriormente serão usadas para liberar ou bloquear acesso. Ex: acl minharede src 192.168.0.0/255.255.255.0 acl minhamaquina src 192.168.0.1/255.255.255.255 acl umsite dstdomain .sitequalquer.com.br

Aqui criamos três acls, uma para a rede, outra para uma máquina e por último, uma para um site qualquer. Usamos o comando "http_access" para negar ou permitir o acesso a uma rede. Por padrão, o Squid já vem com uma acl para todas as redes do mundo (acl all src 0.0.0.0/0.0.0.0) e nega o acesso desta rede ao nosso proxy (http_access deny all). Vamos supor que na nossa rede (acl minharede), todo mundo pode navegar em qualquer site, exceto em "sitequalquer.com.br", mas uma máquina desta rede (acl minhamaquina) poderá navegar em qualquer site, inclusive em sitequalquer.com.br. Teríamos que colocar as regras da seguinte maneira: http_access allow minhamaquina http_access deny umsite http_access allow minharede http_access deny all Observe que "deny all" sempre terá que ser por último. O Squid por padrão, vai seguindo as regras uma a uma, até encontrar uma regra que satisfaça sua condição, aí ele permite ou não o acesso, dependendo do que foi colocado em http_access. Por exemplo, se eu estiver na máquina com IP 192.168.0.1 e quiser acessar qualquer site, o Squid irá ler a primeira regra e verá que este IP pertence a acl "minhamaquina" e existe uma regra "allow minhamaquina", então ele permitirá o acesso a qualquer site. Se eu estivesse numa máquina com IP 192.168.0.2 e quisesse acessar um site A, o Squid irá ler a primeira regra e verá que esta máquina não pertence a "minhamaquina", lerá a segunda regra e verá que o site A não tem o domínio de destino (dstdomain) igual a "sitequalquer.com.br", então por fim irá ler a última regra e verá que este IP pertence a "minharede" e que ele está autorizado (allow) a navegar. Se esta mesma máquina tentasse acessar "sitequalquer.com.br", o Squid iria bloquear o acesso na segunda regra, pois existe um "deny umsite". Se qualquer máquina fora da rede 192.168.0.0/24 tentasse acessar este proxy, o acesso seria negado devido a última regra ser "deny all".

Como configurar o sistema para fazer Proxy transparente ? Tendo configurados o Squid e o reencaminhamento de pacotes, precisamos apenas fazer com que todos os pacotes que chegam ao gateway pela porta 80 sejam redirecionados para a porta 3128 (a porta padrão do Squid). Para isto, vamos usar uma regra de firewall extremamente simples: #iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 Esta regra simplesmente faz com que todo o tráfego da porta 80 (http padrão) e que vier pela interface

eth0,

seja

redirecionado

para

o

Squid

(porta

3128).

Para deixar esta regra permanente, adicione no final de /etc/rc.d/rc.local (ou crie um /etc/rc.d/rc.firewall, adicione todas as regras de firewall que tiver nele e adicione apenas uma chamada a este arquivo em /etc/rc.d/rc.local, na prática terá o mesmo efeito, mas ficará muito mais "legível" :)

Related Documents