Tutorial de Instalação do SQUID

Configurando o ambiente de rede

Squid Reports
Este artigo faz parte de uma série de textos, que tem por missão mostrar como configurar um servidor de rede linux operando com os principais serviços de rede, para o pontapé inicial acesse os seguintes links: Configuração Geral, Configurando a Infraestrutura de Redes
Neste artigo em específico, iremos abordar a instalação e configuração de um servidor proxy, que no caso, será o Squid

Instalando o SQUID

Essa parte é bastante simples, para baixar o nosso servidor proxy Squid, acesse a máquina debian-server e faça:
apt-get install squid3
Pronto, o servidor proxy Squid 3 já está instalado e funcionando, para ativá-lo você precisa acessar a máquina cliente abrir o navegador e dizer a ele que antes de acessar a internet, ele deverá passar por um servidor proxy (Squid 3), para fazer isso é preciso editar as configurações do navegador, essa configuração varia de navegador para navegador, mas basicamente, você precisa acessar as configurações de rede do navegador e procurar por servidor proxy, para o firefox do debian fica assim: Editar > Preferências > Rede > Configurar Conexão >  Configuração manual de proxy > informar valores HTTP e Porta.

configuração do squid no navegadorindiquei o endereço do meu servidor proxy, e indiquei também a porta onde ele irá funcionar. Em um contexto prático a configuração do servidor proxy no navegador é morosa e insegura, imaginemos que tenhamos que configurar um parque computacional de uma empresa com centenas de computadores, ir de computador a computador e fazer essa alteração em todos os navegadores demanda bastante tempo, além disso, é um procedimento falho, pois qualquer usuário que tenha um pouco de conhecimento conseguirá retirar a configuração do navegador e sairá do alcance do proxy. Se quiser saber como configurar o proxy de maneira transparente continue lendo este artigo até o final.
Feita a configuração no navegador, tente acessar uma página qualquer, você deverá receber como resposta a seguinte página

Erro ao acessar a página squid

Configurando o squid 3

Como você pode observar ao abrir uma página no navegador, o Squid está bloqueando todas as páginas, precisamos criar algumas regras para que o proxy bloqueie e permita páginas de acordo com o que indicarmos nas regras que iremos informar no arquivo de configuração do Squid.
Para isso, precisamos acessar o arquivo de configuração do nosso servidor proxy, esse arquivo de configuração é gigantesco e sua leitura pode ser algo bastante demorado, então iremos resumir aqui as principais funções encontradas dentro do arquivo. Para editar o arquivo de configuração do squid abra a pasta /etc/squid3/ e através do editor de textos de sua preferência modifique o arquivo squid.conf
importante: é aconselhável fazer uma cópia de segurança do arquivo antes de modificá-lo.

mv squid.conf backup_squid.conf

Abra o squid.conf recém criado (documento vazio), vamos começar a criar nossa configuração, a primeira diretiva a ser informada é a porta onde o servidor proxy irá funcionar, a porta padrão é a 3128, embora ele possa rodar em outras portas, lembre-se que definimos no navegador a porta 3128, essa diretiva já é suficiente para que o squid funcione. Sugiro que faça um teste

 

http_port 3128 
Arquivo alterado e salvo! sempre que alterar o squid.conf reinicie o serviço e teste abrindo o navegador. Segue o comando para reiniciar o squid
service squid3 reload
Na configuração original, não conseguíamos acessar nenhuma página, e agora que temos apenas uma linha no nosso arquivo continua da mesma forma, vamos criar uma regra para que possamos acessar todas as páginas, mas para isso primeiro precisamos entender o que é uma regra dentro do Squid. As regras do SQUID são identificadas pelo acrônimo ACL (Access Control List), utilizamos ACL’s em outros tipos de serviços além do squid, temos ACL’s no iptables por exemplo, como o nome bem diz são listas de controle de acesso e existem nas mais diversas configurações.
A primeira acl que iremos criar é a acl all que serve para bloquear ou permitir o acesso a todos os endereços. Se baseia no parâmetro src e precede os endereços alvo. Sua declaração fica assim:
acl all src all
Pronto! a regra foi criada, mas o que fazer com essa regra? não basta criá-la é preciso definir se ela irá ser restritiva ou permissiva, para isso utilizaremos a diretiva http_access, os valores para http_access podem ser allow (permitir) ou deny (negar), como o objetivo é permitir acesso a qualquer site vamos utilizar o allow, o arquivo completo fica assim:
http_port 3128
acl all src all
http_access allow all

Está configuração foi a mais básica possível, a partir dela podemos partir para outras regras de maior complexidade:

a segunda acl que criaremos irá estabelecer uma regra para a rede local, que no meu caso é a faixa de ip’s 192.168.3.0⁄24

acl localnet src 192.168.3.0/24 

Detalhando as regras ACL do Squid

A estrutura padrão de uma ACL é a seguinte: primeiro a declaração de que se trata de uma acl, logo em seguida o nome da acl, depois temos o tipo e em seguida um valor que irá depender do tipo. Veja alguns exemplos:

acl do tipo dstdomain

	
acl proibir_sites dstdomain "⁄etc⁄squid3⁄sites" 
Esse tipo de ACL busca por nomes de domínios, no exemplo a seguir, criei um arquivo com o nome “sites” (sem as aspas) dentro da pasta /etc/squid3/, dentro do arquivo sites, digitei o nome do seguinte site: www.globo.com, e depois através do http_access proibi o acesso ao mesmo, ao tentar acessá-lo obtive a seguinte resposta do servidor proxy:
página proibida squid
A acl proibir_sites é do tipo dstdomain e aponta para o endereço “/etc/squid/sites” que contém uma lista dos sites que deverão ser recusados conforme haja tentativa de acesso a eles.
Um outro exemplo de acl é a acl url_regex que funciona de maneira semelhante a dstdomain, com o diferencial de que esta se baseia nas palavras digitadas na barra de endereço, é um recurso bastante poderoso. Através do arquivo criado “palavras” (lembrando que o nome do arquivo pode ser qualquer um) é possível por exemplo evitar que qualquer site que contenha em sua url a palavra jogos seja acessado.
acl palavras_bloqueadas url_regex -i "⁄etc⁄squid3⁄palavras"
A próxima ACL que iremos ver será a acl time, esta acl irá definir horários de acesso para determinadas regras, no caso exemplificativo vamos permitir que o usuário acesse as palavras_bloqueadas (jogos, por exemplo) em um horário específico, escolhi o intervalo entre às 12h e 13h que seria o horário de almoço
acl horario_permitido time 15:00-16:00	

Algumas portas de conexão precisam estar livres para que os clientes possam acessar, nessas portas funcionam importantes serviços de rede, para isso foram criadas as seguintes regras.

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 1025-65535 # unregistered ports
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 631 # cups		
acl Safe_ports port 873 # rsync			
acl Safe_ports port 901 # SWAT			
acl purge method PURGE		
acl CONNECT method CONNECT

Configurando as regras criadas através do http_access

É importante observar a ordem dos http_access, em caso de regras conflitantes ele irá considerar como válida a primeira que encontrar, caso a primeira regra não possa ser aplicada ele partirá para a segunda regra, veja como ficou a minha configuração:
http_access allow palavras_bloqueadas horario_permitido		
http_access deny proibir_sites			
http_access deny palavras_bloqueadas
http_access allow all		
http_access deny !Safe_ports		
http_access allow localnet

Configurando o cache do Squid

Além de fornecer controle dos acessos dos usuários, o squid possui também uma outra ferramenta bastante útil, o cache, suponha que você tenha um provedor de internet a rádio e queira criar um cache para que seus clientes consigam acesso mais rápido a determinadas páginas web, as mais acessadas por exemplo, portais como UOL, globo.com, terra, etc. Para isso você pode configurar um cache dentro do squid, segue o exemplo:

cache_mem 256 MB
maximum_object_size_in_memory 512 KB
cache_dir ufs ⁄var⁄spool⁄squid3 5120 16 256
minimum_object_size 0 KB
maximum_object_size 4 MB
cache_swap_low 90
cache_swap_high 95
Fazendo essas alterações e reiniciando o servidor proxy, ele irá criar uma série de pastas dentro do endereço informado na diretiva /var/spool/squid3/ dentro dessas pastas serão salvas as páginas mais visitadas, gerando assim um cache de páginas web.

customizando a página de proibido o acesso do squid

Para modificar a página de erro do squid, primeiro precisamos saber onde essa página se encontra e qual a diretiva precisamos associar a página. A diretiva que aponta o caminho das páginas de erro é a seguinte:
error_directory /usr/share/squid/errors/Portuguese

 

Mesmo com a configuração da diretiva error_directory apontando para a pasta Portuguese você pode querer modificar as mensagens de erro, podemos personalizar a página, colocar imagens, ícones e estilizá-la conforme nossa preferência, basta acessar o arquivo original.

Entre na pasta:

cd /usr/share/squid/errors/Portuguese

Agora edite o arquivo: ERR_ACCESS_DENIED, existem vários tipos de erro, mas essa é a página mais comum, em todo caso, você pode estilizar cada uma das páginas a sua própria maneira.

No próximo artigo irei ensinar a tornar o proxy transparente, para que não seja necessário setarmos o IP do servidor proxy no navegador, em outra ocasião iremos implementar o SARG que é um visualizador de relatórios do squid.
Compartilhe com seus amigosShare on Google+Share on FacebookTweet about this on Twitter

6 ideias sobre “Tutorial de Instalação do SQUID

  1. Pingback: Configurando um Servidor Linux

  2. Pingback: Proxy transparente Squid + Iptables

  3. Marcos Paulo

    Ola, meu nome é Marcos, tudo bem com você(s)?
    Estou querendo aprender a trabalhar com servidores, e gostaria de ajuda de vc(s)!
    tenho uma rede com 7 computadores que utiliza um servidor com server 2003 e eu gostaria de utilizar o squid para bloquear toda a internet e ir liberando os sites que eu julgar necessario, e tambem gostaria de saber se tem como o squid fazer e salvar uma copia dos emaisl que entram e saem da rede para que eu possa ter controle de documentos. Qual o primeiro passo que devo tomar para que eu possa criar esses procedimentos? Eu preciso recriar a rede em um outro servidor? ou posso continuar com o server 2003 mantendo a rede como está? Eu gostaria que todos os usuarios precisassem logar na rede para terem acesso a pastas determinadas no servidor? Eu crio as diretrizes no server 2003 ou pelo squid? Espero que nao pensem que sou preguiçoso, eu procurei muito pela internet sobre isso, mas sem ter uma luz para iniciar eu estou completamente perdido, não procuro nada pronto, como eu disse eu quero aprender, agradeço a vc(s) desde já.

    Responder
    1. wosh1ngton Autor do post

      Olá, Marcos.
      Primeiramente, obrigado por participar do site. Fique tranquilo, não penso que você é preguiçoso, apenas está buscando informação, mas já aviso que não tenho todas as respostas e você ainda terá que pesquisar bastante, a respeito de suas indagações posso dizer o seguinte:
      O seu servidor de serviços de rede é uma plataforma Windows, e o Squid funciona no Linux, me lembro que criaram o WinSquid pra funcionar no Windows, não sei se você está utilizando ele. Então, a primeira dica seria procurar pelo WinSquid, caso já não tenha feito.
      Quanto a cópia dos e-mails que entram e saem, não conheço funcionalidade do Squid que faça tal serviço, esses e-mails normalmente são criptografados e protegidos.
      Quanto à necessidade que você possui do usuário logar na rede para ter acesso a pastas no servidor, acredito que isso possa ser feito através da criação de grupos e objetos no “Active Directory”.
      É importante que você perceba cada serviço como um módulo diferente, todos rodam no mesmo servidor de redes (seu Windows Server 2003). WinSquid para serviço de proxy, Active Directory para serviço de autenticação e compartilhamento de arquivos.

      Responder

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *