Você está na página 1de 8

Squid com Proxy transparente

cat /etc/squid/squid.conf | egrep -v #|^ *$ limpa comentrios squid.conf origianal

O que Squid?
O Squid um servidor proxy que suporta HTTP, HTTPS, FTP e outros. Ele reduz a utilizao da conexo e melhora os tempos de resposta fazendo cache de requisies freqentes de pginas web numa rede de computadores. Pode ser usado para controle de banda, restrio de sites, usurios, entre outros.

Instalando o Squid
Para fazer a instalao, basta digitar, como root, no terminal, o comando: apt-get install squid

Editando o "squid.conf"
O arquivo original do Squid gigantesco, devido ao seus inmeros comentrios. Nesse tutorial, vamos fazer uma configurao basica. Mas primeiro vamos conservar o arquivo original, renomeando-o com o comando: mv /etc/squid/squid.conf /etc/squid/squid.conf.backup Agora sim vamos comear a editar nosso arquivo com o comando: vi /etc/squid/squid.conf Obs.: Todas as linhas inseridas abaixo, devem estar dentro do squid.conf. Para inserir comentrios no seu arquivos de configurao, coloque o # seguido do comentrio.

Configurando o Idioma: possvel alterar as mensagens que o Squid


mostra quando um cliente tenta acessar um site, ou fizer um download bloqueado, por exemplo, bem como mensagens de erro de DNS, entre outras. Para isso, vamos criar a linha: error_directory /usr/share/squid/errors/Portuguese Obs.: Voc pode criar suas prprias paginas de mensagens de erro, ou ento editar as j existentes. Basta ir ao diretrio indicado acima e utilizar um editor de textos simples.

Configurando Cache.
Crie as linhas:

cache_mem 300 MB Esta linha define quanto da memria RAM (no caso 8MB) ser usada pelo cache: Em um servidor dedicado, recomendado reservar 1/3 da memria RAM para o cache. maximum_object_size_in_memory 32 KB Esta linha define o tamanho mximo dos objetos na RAM. Defina um tamanho pequeno, para que sejam salvos apenas paginas HTML na RAM, e no downloads por exemplo, que devem ser salvos no disco. maximum_object_size 1024 MB Define o tamanho mximo dos objetos no cache do disco. Aqui sero armazenados os downloads por exemplo. Se tiver costume de baixar arquivos grandes, coloque um tamanho grande. minimum_object_size 0 KB Tamanho mnimo dos objetos no cache cache_swap_low 90 cache_swap_high 95 Essas linhas indicam que a partir do momento em que o cache atingir 95%, sero descartados arquivos mais antigos at que a porcentagem volte para um numero abaixo de 90%. cache_dir ufs /var/spool/squid 100 16 256

Esta linha a que realmente define o tamanho total do cache em disco. O endereo refere a que diretrio se deseja utilizar como cache, seguido do tamanho mximo do cache no disco (em MB) e os dois ltimos nmeros da linha indicam a quantidade de pastas e subpastas que o Squid utilizar para se organizar ao gravar o cache; access_log /var/log/squid/access.log squid

Esta linha indica o caminho para onde devem ser exportados os logs que depois podero ser analisados, manualmente, com com algum gerador de relatrios como o SARG. Basta ento editar estas linhas de acordo com a capacidade do seu servidor e sua necessidade.

Limpar cache e recriar estrutura:


Sempre que alterar configuraes referentes ao cache, recomendvel limpa-lo e recri-lo. Basta executar os seguintes comandos: Apaga os arquivos: rm -rf /var/spool/squid/* Recria estrutura, pastas e subpastas: squid -z

Porta do Squid e nome do servidor:


Crie as seguintes linhas: http_port 3128 visible_hostname LinuxTotal 3128 porta padro do Squid, mas voc pode alter-la se desejar. LinuxTotal o nome do meu Servidor.

Configurando regras ACL.


O Squid l as regras de cima para baixo, ento se quer bloquear algo, primeiro bloqueie o que deseja, depois libere o restante. As acls so criadas no seguinte modelo: acl nome_da_acl parametros Primeiro, aproveitando o arquivo original do Squid vamos criar as regras que permitem o acesso apenas a algumas portas especficas e no a qualquer coisa, como no exemplo abaixo.

acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/24 acl acl acl acl acl acl acl acl acl acl acl acl SSL_ports port 443 Safe_ports port 80 # http Safe_ports port 21 # ftp Safe_ports port 443 # https Safe_ports port 70 # gopher Safe_ports port 210 # wais Safe_ports port 280 # http-mgmt Safe_ports port 488 # gss-http Safe_ports port 591 # filemakes Safe_ports port 777 # multiling http Safe_ports port 901 # swat Safe_ports port 1025-65535 #portas altas

acl CONNECT method CONNECT

http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access allow localhost http_access deny CONNECT !SSL_ports

Inserindo Regras de Bloqueio e Permisso:


Abaixo, criamos uma regra chamada "sites_proibidos" que bloquear as palavras, ou urls contidas no arquivo indicado no caminho: "/etc/squid/regras/sites_proibidos". No se esquea de criar este arquivo com as palavras proibidas, uma por linha. Em seguida, com a instruo deny proibimos o acesso aos sites listados na regra que criamos na linha cima. acl sites_proibidos url_regex -i "/etc/squid/regras/sites_proibidos" http_access deny sites_proibidos Na regra abaixo, bloqueamos o download de alguns tipos de extenses. Da mesma maneira, criamos a regra primeiro e bloqueamos depois.

acl downloads_proibidos url_regex -i \.exe \.torrent \.avi

http_access deny downloads_proibidos

Esta acl abaixo indica a nossa faixa de rede. Para que apenas os computadores nessa faixa possam usar o Proxy. Substitua os valores de acordo com sua rede. acl redelocal src 192.168.229.0/24 Por fim, vamos criar 3 linhas: http_access allow localhost http_access allow redelocal http_access deny all Na primeira linha, liberamos o acesso total para o Servidor onde est o Squid. Na segunda linha, liberamos o acesso aos computadores da rede local de acordo com a acl redelocal. E na terceira linha, proibimos o resto, ou seja, proibimos que pessoas fora da nossa rede usem o nosso Proxy. Abaixo vai um exemplo de Squid j configurado, com base no que foi explicado acima: # Configurao Squid # Configurado por: Eleandro S.A # Mensagens de erro em Portugus error_directory /usr/share/squid/errors/Portuguese

# Porta do Squid http_port 3128

# Nome do servidor visible_hostname LinuxTotal # Cache cache_mem 300 MB

maximum_object_size_in_memory 32 KB maximum_object_size 1024 MB minimum_object_size 0 KB cache_swap_low 90 cache_swap_high 95 cache_dir ufs /var/spool/squid 100 16 256 # Logs de acesso access_log /var/log/squid/access.log squid #coloque seu email cache_mgr eleandro_na@hotmail.com

# Regras acl padro acl manager proto cache_object acl localhost src 127.0.0.1/24 acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 901 # swat acl Safe_ports port 1025-65535 # portas altas acl CONNECT method CONNECT

# Permisses e bloqueios padro http_access allow manager localhost http_access deny manager http_access allow localhost http_access deny !Safe_ports http_access deny CONNECT !SSL_ports # Bloqueio de sites por URL acl sites_proibidos url_regex -i "/etc/squid/regras/sites_proibidos" http_access deny sites_proibidos

# Bloqueio de downloads por extenso acl downloads_proibidos url_regex -i \.exe \.torrent \.avi http_access deny downloads_proibidos # Permiso rede local e servidor acl redelocal src 192.168.229.0/24 http_access allow localhost http_access allow redelocal

# Bloqueio de usuarios fora da rede http_access deny all Pronto salve e saia e crie o diretrio onde irar conter as regras: mkdir /etc/squid/regras agora vamos criar o arquivo que vamos colocar os nomes e sites proibidos de acessos: touch /etc/squid/regras/sites_proibidos Dentro do sites_proibidos vamos colocar palavras e sites que iremos bloquear Exemplo: Sexo game hotmail orkut

Transformando seu Squid num Transparent Proxy


Uma das coisas mais cansativas ao configurar o Proxy ter que indica-lo em cada mquina da rede. Outro problema que fcil pra qualquer usurio simplesmente desabilitar seu proxy e navegar livremente.

O Squid soluciona estes problemas com a possibilidade de criar um proxy transparente. No proxy transparente o seu servidor Proxy deve funcionar tambm como gateway da rede, ou seja com o mesmo IP. Assim, qualquer requisio Internet, passar obrigatoriamente pelo Proxy, sem ter que configurar nada nos clientes. Com seu servidor gateway j configurado e a sua conexo j compartilhada, basta rodar o comando iptables abaixo. Ele direciona as requisies recebidas na porta 80 para o Squid: iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 O "eth0" no comando indica a placa da rede local, onde o proxy recebe as requisies dos outros micros da rede e o "3128" indica a porta usada pelo Squid.

Adicione este comando junto com os comandos que compartilham a conexo no final do arquivo "/etc/rc.d/rc.local" ou "/etc/init.d/bootmisc.sh" para que eles sejam executados durante o boot.

Ativado o modo transparente no squid.conf

A partir do Squid 2.6 a configurao de proxy transparente mudou, basta acessar o squid.conf e colocar o parmetro transparent na linha que indica a porta do Squid: http_port 3128 transparent Basta agora reiniciar o Squid e que ele j estar no modo transparent. /etc/init.d/squid restart Para squid no fazer cach de deterninado site acl NOCACHEDOMAIN dstdomain www.redhat.com no_cache deny NOCACHEDOMAIN