Configuração básica do Squid no Fedora

5 de out de 2013 - Paulo Dias


Eae pessoal, dessa vez quero mostrar como configurar rapidamente um servidor de proxy Squid. Vou mostrar o básico para o Squid funcionar, no final deixo alguns links para quem quiser se aprofundar no assunto, beleza? Dessa vez vou utilizar o Fedora.

Um servidor de proxy tem basicamente duas funções: Agilizar o processo de entrega de requisições web e filtrar o conteúdo que os usuários tem acesso. Existem duas maneiras de configurar o servidor Squid, manualmente e transparente.

Quando você usa configuração manual é necessário especificar para todos os clientes(geralmente navegadores) que eles devem fazer uso do proxy. Já quando você faz a configuração de forma transparente não existe a necessidade de especificar que os clientes utilizem o proxy. Na verdade, os clientes não sabem da existência dele.

Em um proxy configurado de forma manual e tendo como cliente um navegador o processo de requisição seria (+ ou -) assim:

NAVEGADOR > SERVIDOR_PROXY > SITE V

NAVEGADOR < SERVIDOR_PROXY < SITE

Ou seja, o navegador faz a requisição da página para o servidor proxy, esse realiza a filtragem e se for o caso( se for aprovado ) requisita a página para o site e devolve para o navegador.

E se proxy for transparente o processo de requisição de uma página é o seguinte:

NAVEGADOR > FIREWALL > SERVIDOR_PROXY > SITE V

NAVEGADOR < SERVIDOR_PROXY < SITE

Nesse caso o navegador não sabe da existência do proxy, então faz a requisição normalmente para o roteador padrão( por isso não é necessário configurar o navegador), o firewall da rede então identifica essa operação e desvia o fluxo para o proxy para que ele faça a filtragem e se for o caso a requisição para o site.

Nesse tutorial vou mostrar como fazer a configuração manual. O ideal é que você instale e configure o servidor em uma máquina e use outra como cliente, se você não tiver outra máquina disponível utilize o virtualbox para criar uma máquina virtual. (Nunca usou o virtual box? aqui têm um tutorial).

Na máquina que vai ser o servidor use o seguinte comando para instalar o Squid: ( O servidor deve ser Fedora, o cliente pode se qualquer sistema, ok?)

 
sudo yum install squid -y
 

Com o Squid instalado no servidor abra com um editor de texto o arquivo "/etc/squid/squid.conf" :

 
sudo nano /etc/squid/squid.conf
 

Veja que já existe bastante conteúdo nesse arquivo, mas não se preocupe a maior parte dele não será alterada. A idéia é ser simples e rápido, então não vou fazer muitas configurações, vou mudar somente o necessário. A configuração completa para colocar o proxy em 'produção' fica para um próximo artigo.

Vou iniciar configurando o cache, para isso altere a seguinte linha no arquivo squid.conf:

 
#cache_dir ufs /var/spool/squid 100 16 256 

Essa linha faz o ajuste do cache em disco: O 100 especifca o tamanho do cache em MB, o 16 a quantidade de diretórios e o 256 a quantidade de subdiretórios que o Squid pode criar. Você pode alterar os valores conforme achar necessário, apenas se certifique de tirar o '#' do inicio da linha. Este '#' comenta a linha, com ele essa instrução não é avaliada pelo Squid.

Em seguida coloque essa linha abaixo da anterior( em baixo da cache_dir...):

 
visible_hostname nome_do_seu_servidor_aqui

Essa linha especifica o hostname do Squid e também vai aparecer nas páginas de informação.

Pronto, salve o arquivo e você já têm o cache do seu Squid configurado. O próximo passo é configurar as regras de filtragem. Essas regras são definidas através dos comandos 'acl' e 'http_access'. Veja a documentação para encontrar todas as 'acls' possíveis. http://www.squid-cache.org/

As 'acls' são escritas da seguinte forma:

 
acl < nome_da_acl > < tipo_acl > < parâmetro >

Veja alguns exemplos de 'acls':

 

# acl de origem, representa o ip do cliente que acessa o proxy
acl rede_local src 192.168.0.0/24

# acl de destino, representa o destino da requisição
acl meu_blog dstdomain .prmjuniorblog.blogspot.com.br

# acl de expressão regular, verifica se a palavra jogo esta na url
acl words url_regex jogo

Para iniciar a configuração da filtragem coloque um '#' (comentar) as seguintes linhas: (Elas estão permitindo acesso total para a rede local e para o próprio servidor, vamos tirar esse acesso.)

 
#No seu elas devem estar sem o '#' na frente, coloque. 
#http_access allow localnet
#http_access allow localhost

Agora é possível criar regras personalizadas. A configuração que vou utilizar vai estabelecer algumas palavras proibidas e se o Squid encontrar alguma delas o acesso será negado, para isso procure no arquivo "/etc/squid/squid.conf" a seguinte linha:

 
http_access deny all
 

Digite os comando abaixo antes dela:

 

# a sua rede, -ALTERE- para a faixa de IP que você usa. Use o comando ifconfig para ter essa informação
acl rede_local src 192.168.0.0/24
#as palavras proibidas
acl proibidas url_regex -i "/etc/squid/proibidas"

Criei duas 'acls', a primeira representa o IP da sua rede local, ou seja a faixa de ip dos computadores clientes e a segunda representa as palavras proibidas. O "-i" garante que a busca pelas palavras não vai considerar diferença entre maiusculas e minusculas, e o endereço "/etc/squid/proibidas" é o arquivo onde as palavras serão armazenadas( uma por linha ). Para testar crie o arquivo "/etc/squid/proibidas" e coloque a palavra baixaki dentro dele. Salve as modificações no "/etc/squid/squid.conf", abra um terminal e execute o comando abaixo:

 

sudo echo "baixaki" > /etc/squid/proibidas

Depois de executar esse comando o arquivo das palavras proibidas já estará criado e contendo a palavra baixaki. Volte a abrir o arquivo "squid.conf" e digite o seguinte logo abaixo das linhas anteriores:

 

#nega que a rede acesse requisições que tenham as palavras proibidas em qualquer lugar da url
http_access deny rede proibidas
#permite que a rede acesse o restante
http_access allow rede

OBS: Se uma regra bloquear o acesso, esse vai ficar bloqueado, mesmo que uma regra abaixo libere

Com isso a filtragem está pronta, use o seguinte comando para verificar erros de digitação na configuração:


squid -k parse

Se for mostrado algum erro tente corrigi-lo( se não souber arrumar deixe um comentário :) .Quando a configuração estiver ok, inicie o Squid com o comando:

 

sudo service squid start

OBS: para que o Squid inicie sempre com o Fedora, use o comando "sudo chkconfig squid on"

Agora é necessário configurar o navegador do cliente para usar o proxy. Aqui têm tutorial explicando como fazer isso em vários navegadores. Você vai precisar do ip do servidor, se não souber, use o comando ifconfig.

Segue uma imagem de como ficou no meu Firefox

Feito, tente navegar... o Baixaki deve ser o único site bloqueado. Se quiser fazer outros bloqueios não é necessário alterar o "/etc/squid/squid.conf", basta alterar o arquivo das palavras proibidas.

Se você preferir ter um arquivo com palavras liberadas, ou seja, acessa somente os sites que tiverem uma das palavras na url, crie o arquivo liberadas e altere as seguintes linhas no "/etc/squid/squid.conf":

 
# cria a acl
acl liberadas url_regex -i "/etc/squid/liberadas"
#nega acesso a qualquer url que não tenha uma das palavras liberadas
http_access deny rede !liberadas
Saiba mais...
http://pt.wikipedia.org/wiki/Proxy
http://www.sourcebrasil.org/tutoriais/visualizar/instalacao-e-configuracao-do-servidor-proxy-squid.html
http://www.youtube.com/watch?v=fgOw-3PV_sQ

Paulo Dias

Graduado no curso tecnólogo em análise e desenvolvimento de sistemas. Defensor do Software Livre e da democratização da informação. Possui as certificações Linux LPIC-1 e Java OCA. Atualmente exerce a função de coordenador técnico na área de telecomunicações.

Siga-me no Twitter


Tags: Linux