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
Nenhum comentário foi encontrado.