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.