Tutorial de Squid - CentOS 6.5

Publicado por Alvaro Alves em 11/06/2014

[ Hits: 20.126 ]

 


Tutorial de Squid - CentOS 6.5



Neste tutorial, iremos passar as dicas iniciais para a configuração de um proxy em nossa rede ( GNU/Linux) usando CentOS 6.5. Esperamos ajudar aos técnicos, que têm um pouco de preguiça de ler aqueles grandes tutoriais e ir diretamente ao ponto que interessa!

Sistema operacional utilizado: CentOS 6.5.

O Squid (proxy) é uma ferramenta muito poderosa utilizada para controle de navegação, entre outros. Com ela, é possível fazer cache de navegação onde o usuário chega a economizar até 30% de banda em uma empresa. Este controle de navegação pode ser feito de diversas maneiras e serão descritas neste material.

Primeiramente, precisamos instalar o mesmo, segue comandos de instalação no CentOS:

# yum install squid

Após instalado o Squid, vamos renomear o arquivo conf para termos um backup do mesmo e iremos limpar os comentários e linhas em vazio, com os comandos abaixo:

# mv /etc/squid/squid.conf /etc/squid/squid.ori
# cat /etc/squid/squid.ori | egrep -vi '^#|^$' > /etc/squid/squid.conf


Agora, já possuímos o arquivo /etc/squid/squid.conf limpo. Vamos ao funcionamento do Squid.

Tudo é definido por ACL, segue primeiro exemplo básico onde teremos um nome de ACL com seu respectivo valor:
  • acl nome_da_acl syntax valor

Exemplo:
  • acl marcelo src 192.168.0.1
  • acl rede src 192.168.0.0/24
  • acl TI src 192.168.0.1 192.168.0.2

Onde:
  • acl = como se fosse o comando.
  • marcelo = nome da ACL.
  • src = argumento para o comando ACL.
  • 192.168.0.1 = este é o valor que o nome da ACL terá.

Vamos aos tipos de ACL mais utilizados por administradores, sendo eles:
  • src :: significa origem, utilizado para regras que queiram ter um controle sobre uma origem.
  • dst :: significa destino, utilizado para regras que queiram ter um controle sobre um destino.
  • url_regex -i :: significa expressão regular, pode ser um site, IP, somente um nome etc.

Vamos aos exemplos:

acl ip_origem src 192.168.0.20
acl ip_destino dst 200.160.2.3
acl expressão_regular url_regex -i www.mundoopen.com.br mundoopen.com.br mundoopen porno sexo

Estas são as principais ACLs utilizadas no Squid. Após a definição das ACLs, precisamos definir o que serão feitas com elas e é aí que entra a sintaxe http_access, que pode ter como ação tanto allow (permitir), como deny (negar).

Seguem alguns exemplos:

acl marcelo src 192.168.0.20
http_access allow marcelo

Neste caso acima, liberamos o IP 192.168.0.20 totalmente para navegação.

acl marcelo src 192.168.0.20
acl sites_marcelo .mundoopen. .uol. .terra.
http_access allow marcelo sites_marcelo
http_access deny all

No caso acima, estamos liberando o IP 192.168.0.20 somente para os sites contidos em sites_marcelo e após isso, estamos bloqueando tudo.

Quando quisermos definir o que será feito com a ACL, utilizamos a sintaxe http_access "valor" acl, onde valor pode ser allow e deny. E acl, é o nome de uma ACL que tem que estar criada anteriormente.

Segue algumas explicações sobre o conf e depois mais exemplos de configuração:
  • acl manager proto cache_object :: o campo "proto" nesta linha significa que a ACL bloqueia um protocolo específico, neste caso o protocolo cache_object. Poderiam ser os protocolos FTP ou HTTP. Se você não conhece o protocolo cache_object, não se preocupe é um protocolo do Squid que apenas retorna informação para o servidor de como o cache está configurado, ou como ele está rodando.
  • acl localhost src 127.0.0.1/32 :: esta ACL está definindo o próprio servidor localhost como origem.
  • acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 :: esta ACL está definindo o próprio servidor localhost como destino.
  • acl localnet src 10.0.0.0/8 # RFC1918 possible internal network :: define o rede 10.0.0.0/8 com o nome localnet.
  • acl localnet src 172.16.0.0/12 # RFC1918 possible internal network :: adiciona a rede 172.16.0.0/12 ao nome localnet.
  • acl localnet src 192.168.0.0/16 # RFC1918 possible internal network :: adiciona a rede 192.168.0.0/16 ao nome localnet.
  • acl SSL_ports port 443 :: aqui temos um tipo de ACL que ainda não comentamos que é a "port", esta é definida para declararmos regras utilizando portas de acesso.
  • acl Safe_ports port 80 # http :: mesma coisa, porém, colocou outro nome para identificar melhor.
  • acl Safe_ports port 21 # ftp :: adicionou a porta 21 à ACL Safe_ports.
  • acl Safe_ports port 443 # https :: adicionou a porta 443 à ACL Safe_ports.
  • acl Safe_ports port 70 # gopher :: adicionou a porta 70 à ACL Safe_ports.
  • acl Safe_ports port 210 # wais :: adicionou a porta 210 à ACL Safe_ports.
  • acl Safe_ports port 1025-65535 # unregistered ports :: adicionou as portas 1025-65535 à ACL Safe_ports.
  • acl Safe_ports port 280 # http-mgmt :: adicionou a porta 280 à ACL Safe_ports.
  • acl Safe_ports port 488 # gss-http :: adicionou a porta 488 à ACL Safe_ports.
  • acl Safe_ports port 591 # filemaker :: adicionou a porta 591 à ACL Safe_ports.
  • acl Safe_ports port 777 # multiling http :: adicionou a porta 777 à ACL Safe_ports.
  • acl CONNECT method CONNECT :: esta ACL contém o método de acesso aos arquivos na rede (GET/POST). O método CONNECT vale tanto por GET como por POST.

A partir de agora, serão as ações tomadas em cima das ACLs (permitir ou negar):
  • http_access allow manager localhost :: permite que a ACL manager criada lá em cima seja utilizada somente pela outra ACL localhost.
  • http_access deny manager :: bloqueia a ACL manager para toda rede.
  • http_access deny !Safe_ports :: bloqueia qualquer tipo de acesso a portas que não sejam as definidas na ACL Safe_ports.
  • http_access deny CONNECT !SSL_ports :: bloqueia qualquer tipo de método de acesso definido na ACL CONNECT que não sejam para portas seguras que estão na ACL SSL_ports.
  • http_access allow localnet :: libera totalmente a ACL localnet (no caso todas as redes lá em cima).
  • http_access allow localhost :: libera totalmente a ACL localhost.
  • http_access deny all :: bloqueia tudo que não estiver definido em alguma ACL neste arquivo.
  • http_port 3128 :: define a porta utilizada pelo Squid (no caso default, 3128).
  • coredump_dir /var/spool/squid :: diretório de spool do Squid (onde armazenará o cache).

Com isso, todas as linhas do conf foram comentadas. Agora, vamos às conclusões sobre como esse conf vem por padrão.

Por padrão, o conf vem liberando acesso total a todas as redes privadas conhecidas (10.0.0.0 172.16.0.0 192.168.0.0) e também para o próprio servidor localhost.

No final do arquivo, existe uma regra que bloqueia tudo que for diferente a estas redes:
  • A porta configurada é a 3120.
  • O diretório de spool do Squid que vem por default é /var/spool/squid.
  • Os acessos permitidos são as portas mais conhecidas: 80, 21, 443 etc.

Creio que, com a leitura de todo o conteúdo acima, já dá para ter uma boa ideia sobre como funciona a configuração do Squid.

Dicas gerais

Segue mais alguns exemplos que é possível fazer no Squid, apenas para que os leitores fiquem um pouco mais craques do assunto.

É possível criar ACLs e, ao invés de colocarmos o conteúdo diretamente na linha do Squid, criamos um arquivo e dentro deste, colocamos o conteúdo um após o outro, exemplo:

acl IP_DIRETORES src /etc/squid/IP_DIRETORES
http_access allow IP_DIRETORES

Onde, dentro do arquivo IP_DIRETORES, está o conteúdo abaixo:

10.0.0.1
10.0.0.2
10.0.0.3
10.0.0.4
10.0.0.5

É possível fazer bloqueio de tudo, "exceto" algum conteúdo utilizando o simbolo "!". Segue exemplo:
  • acl alvaro src 192.168.0.1
  • acl sites_alvaro url_regex -i www.mundoopen.com.br www.uol.com.br www.terra.com.br
  • http_access deny alvaro !sites_alvaro (Repare que está sendo feito o bloqueio de tudo para a ACL alvaro menos os sites contidos na outra ACL chamada sites_alvaro)

É possível utilizar alguns caracteres chave para fazer um bloqueio geral que contenha determinado domínio, exemplo:

acl dominio_bloqueado url_regex -i .uol. .terra.
http_access deny dominio_bloqueado

Neste caso acima, quando utilizamos o "." entre a palavra, significa a mesma coisa que estivesse bloqueando qualquer domínio que tenha no meio "uol" ou "terra", exemplo:
  • www.uol.com.br
  • batepapo.uol.com.br
  • jogos.uol.com.br
  • www.uol.net.br
  • www.uol.org.br
  • Qualquer coisa que tenha .uol. ou .terra.

Utilizamos isso, quando queremos realmente bloquear tudo referente à um determinado domínio.

Bloqueio utilizando palavra, exemplo:

acl dominio_bloqueado url_regex -i uol terra
http_access deny dominio_bloqueado

Neste caso acima, quando bloqueamos um nome sem o "." antes ou depois, estamos bloqueando TUDO que contenha esta parte da palavra no domínio, exemplo:
  • uol.com.br
  • uolmania.com.br
  • logicauol.com.br
  • mandaterra.com.br
  • terramania.com.br

Repare que está sendo bloqueado tudo que contenha a palavra uol ou terra e não os domínios propriamente ditos, precisamos tomar cuidado com isso.

Após cada alteração, podemos utilizar o comando service squid reload para que tenham efeito.

Conclusão

Bom pessoal, com estes exemplos, já podemos começar a configurar um proxy para início de estudos, porém, há mais algumas configurações que são possíveis utilizando o Squid.

E são muito interessantes, como tcp_outgoing_access, proxy transparente e autenticação de usuário, fora a ferramenta de geração de gráficos de acesso, chamada Sarg, porém, em outro momento iremos complementar com todos estes assuntos.

Veja: Servidor DHCP Linux

Esperamos ter ajudado.
Equipe Mundo Open

Outras dicas deste autor

Antivírus com Samba - Servidor de Arquivos

Gerenciamento de processos no GNU/Linux

Controlador de domínios: Acelere tráfico de dados da rede com servidor Linux com Samba em PDC

Syslog - Gerenciamento de logs do sistema

Arquivando e comprimindo arquivos

Leitura recomendada

ZeroBrane Studio - Mais uma opção de IDE para quem deseja programar em LUA

Receba o OpenSolaris gratuitamente

Ferramentas de compactação / descompactação de arquivos

Consiga gratuitamente os CDs do Ubuntu Linux

Kurumin 2.0 já disponivel para download

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts