segunda-feira, 2 de junho de 2014

Tutorial como configurar Proxy Squid basico Ou squid a dorê

Olá a todos a coisa andava meio abandonada aqui devido a boa e velha correria Faculdade, Filhos, emprego e etc.. Mas agora que sossegou um pouco vamos lá! 
Neste tutorial  vou ensinar como configurar uma proxy Squid básico nos próximo ensinarei a adicionar 
mas recursos a nosso proxy. no post de hoje será mais rápido e fácil que preparar Lula a Dorê.

Vamos partir do ponto que você já  o que é um servido proxy e para o que ele server e que só busca uma
receita para configuração rápida desta Lula ;)

A distribuição que vamos utilizar e o Debian Wheezy  versão 7.5 mas esse how-to vale para qualquer 
distribuição baseada em Debian como por exemplo Ubuntu, Linux Mint e etc...

O arquivo de configuração do Squid  e auto explicável ele vem todo comentado com suas 
5780 linhas  ai você  me pergunta 5780 LINHAS !??? Eu preciso disso tudo ???
E eu respondo calma gafanhoto a resposta e sim e não depende  do que  você precisa implementar
 não hoje em nosso tutorial  prometo que não vamos passar das 64 linhas contando com as linhas em branco
Mas não espere que nada de grandioso saia daqui. mas lembre-se  uma passo de cada vez.

A versão instalado servidor proxy squid  será a versão 3 (Licença GPL) com o comando:

# apt-get install squid3

Agora vamos gerar bacukp do arquivo de configuração original do squid com comando

 # cp /etc/squid3/squid.conf /etc/squid3/squid.conf_old

Lembra das 5780 linhas que eu falei que não íamos precisar de todas o squid tem um conceito chamado 
politicas padrões ou seja algumas ACLs sem as quais ele não funciona. essas vem descomentadas prontas para usar, as restantes vem todas comentadas vamos nos livrar delas por enquanto lembre-se de fazer um backup antes pois elas serão uteis futuramente.

geramos novo squid.conf com as politicas padrões

#  grep -v ^["#"] /etc/squid3/squid.conf_old > /etc/squid3/squid.conf

Com o comando acima geramos um novo squid.conf contendo somente as linhas sem comentários ou seja 
as ACLS basicas do squid.

Agora vamos visualizar abaixo nosso arquivo de configuração:

# cat /etc/squid3/squid.conf

acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1


acl SSL_ports port 443
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 CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
########################  FIM DO ARQUIVO #############

O seu arquivo de configuração terá esse conteúdo com  a diferença que ele terá muitas linha em branco a mais eu removi para dar maior clareza
Agora chegou a hora da verdade para termos um proxy funcional e com a função de cache precisamos de adicionar algumas linhas.
Para fins didáticos as linhas em vermelho são as que eu adicionei
e as linhas começadas com # em azul são comentários no arquivo de configuração, as linhas em preto fazem parte das ACLS padrão do squid.
O carácter cerquilha na frente dos comando indicam que eles devem ser aplicados como usuário root.
Decidi por comentar o máximo possível de opções no arquivo de configuração, por acreditar que dessa maneira facilite o entendimento e as alterações para a sua realidade.

Edite o arquivo de configuração com seu editor favorito no meu caso o VI.

Segue abaixo como ficou o arquivo de configuração.
você pode copiar e colar e alterar o exemplo abaixo ou pode simplesmente  baixar  o arquivo pronto a partir do link de download: squid.conf:

# vi /etc/squid3/squid.conf

 # porta padrão do squid onde o proxy escutará
http_port 192.168.101.1:3128
# No meu caso 192.168.101.1 a porta padrão do squid é a 3128 mas você pode substitui-la por qualquer # outra de sua preferência como por exemplo a 8080

# opções de cache e outras
coredump_dir /var/spool/squid3
cache_mem 1024 MB
# tamanho do cache de memoria RAM usado pelo squid lembrese quanto mais memoria para cache melhor # mas devemos respeitar os limites do hardware
cache_dir ufs /var/spool/squid3 5120 64 64
# diretório e quantidades de subdiretórios do squid
maximum_object_size_in_memory 64 KB
maximum_object_size 700 KB
minimum_object_size 0 kB
#  tamanhos máximo e mínimo de objetos no cache do squid
# limite minimo de ocupação do cache
cache_swap_low 85
# limite maximo de ocupação do cache
cache_swap_high 95
# opções diversas explico na próxima
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320

# definições da rede na qual o servidor proxy ira trabalhar
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

# Log de acesso a paginas
access_log /var/log/squid3/access.log

#Diretório de Paginas de erros
error_directory /usr/share/squid3/errors/Portuguese
# você pode personalizar as sua paginas de erro sempre uma ótima opção

#Portas consideradas seguras pelo servidor proxy
acl SSL_ports port 443
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 CONNECT method CONNECT
acl lan src 192.168.101.0/26


# acls Básicas do squid
# aqui vai uma dica muito importante  a ordem das ACLs é fundamental uma vez que o squid 
# interpreta as ACLs de cima para baixo ou seja se a anterior bloqueia um coisa não adianta embaixo #libera-la que ela ainda estará bloqueada

http_access allow manager localhost
http_access allow localhost
http_access deny CONNECT !SSL_ports
http_access deny !Safe_ports
http_access deny manager
http_access deny all
                                                                                                                                             #################### Fim do arquivo ###################

Agora que terminamos de editar o arquivo de configuração do squid só  falta reiniciarmos o serviço.
 com o comando abaixo:    

# service squid3 restart

OBS: Para o servidor proxy funcionar corretamente devemos habilitar o repasse de pacotes
através da maquina dos seguintes passos:

Editar o arquivo /etc/sysctl.conf:

# vi /etc/sysctl.conf

Encontrar e descomentar a linha contendo:

net.ipv4.ip_forward=1


Aqui lanço uma observação, para evitar que os usuários burlem seu proxy devemos usar regras de iptables.
Essas regras e suas explicações eu postareis mais a frente.




Agora configuramos nosso web Broswer para acessar a internet através do proxy.
No meu caso o navegador iceweasel.
Como vemos em figura abaixo:
No menu editar ---> preferências--> avançado --> Rede
Selecionar a opção configuração manual de proxy
Preencher com o endereço do seu servidor proxy
marcar a opção usar esse proxy para todo os protocolos.
Clicamos em OK e fechar



















Agora se você fez tudo certinho  e só testar em nosso navegador e navegar normalmente como vemos abaixo:















Referências:
 Linux  squid manpage
 Arquivo de configuração do squid

OBS: aqui temos uma configuração básica do Squid sem autenticação, filtro de URLs, proxy transparente e outros recursos suportados pelo mesmo. Nos próximos post usaremos esse arquivo de configuração como base para implantamos outros recursos.