Você está na página 1de 6

COMO CRIAR UM SERVIDOR PROXY COM SQUID E TER TOTAL

CONTROLE SOBRE O USO DA SUA INTERNET


SOBRE PEDRO DELFINO
Pedro Delfino é o fundador do PROFISSIONAIS LINUX (http://profissionaislinux.com.br) que
tem como principal objetivo formar novos profissionais para atuar na área de administração
de servidores LINUX assim como soluções opensource, é autor do E-tinet, (http://e-tinet. com)
um blog sobre soluções LINUX que já ajudou milhares de leitores com seus Ebooks e
treinamentos On-line.
Utiliza Linux como ferramenta de trabalho a mais de 14 anos, e a mais de 3 anos vem
ajudando milhares de pessoas a aprender Linux de forma fácil e rápida, através de artigos em
seu Blog.
SUMÁRIO
introdução................................................................................................................... 4
Onde colocar o servidor Proxy?.................................................................................. 6
Analisando o diagrama de rede para implantação do servidor Proxy com Squid ...... 9
vantagens de usar um servidor proxy....................................................................... 13
Configuração básica do servidor proxy com squid.................................................15
Configuração do Squid............................................................................................. 22
Criando regras no squid.conf ................................................................................... 26
Criando regras com restrição de acesso no squid................................................... 35
Como bloquear/liberar sites ......................................................................................41

INTRODUÇÃO
Vamos começar vendo como configurar um servidor proxy com Squid.
Você pode achar mais informação no squid-cache.org, que é simplesmente o principal
servidor de Proxy que roda hoje sobre Linux.
Quando você ouvir alguém falar sobre proxy com Linux, com certeza a pessoa que está
falando estará se referindo ao Squid.
Um servidor proxy é uma das principais dúvidas do pessoal que começa a trabalhar com
Linux, pois é um serviço muito solicitado nas empresas.
Toda empresa que tem mais de 3 funcionários, vai precisar de um proxy. Pois hoje controlar
a banda e controlar o acesso dos usuários é um assunto bem importante, principalmente por
questões de segurança.

ONDE COLOCAR O SERVIDOR PROXY?


ONDE COLOCAR O SERVIDOR PROXY?
É sem dúvida uma das principais perguntas.
Surgem várias questões sobre qual o melhor local da rede para instalar um proxy, são
perguntas do tipo:
Onde colocar o cabo da internet? Onde colocar o cabo da interface de rede interna?
E minha sugestão é o você observar o diagrama ao lado:
Talvez esta seja a parte mais importante de criar o seu servidor proxy, pois se você errar na
parte lógica da rede, pode ser um erro fatal para a segurança das suas informações, se não
definir muito bem isso com certeza terá problemas com uso indevido da internet.

COMO CRIAR UM SERVIDOR PROXY COM SQUID


ANALISANDO O DIAGRAMA DE REDE PARA IMPLANTAÇÃO DO
SERVIDOR PROXY COM SQUID
ANALISANDO O DIAGRAMA DE REDE PARA IMPLANTAÇÃO DO SERVIDOR PROXY
COM SQUID
Então vamos analisar um pouco mais esse diagrama.
Temos aqui o Servidor Proxy, que tem duas placas de rede.
Uma pergunta que sempre surge:
Tem como fazer com uma única placa de rede? A Resposta é: Sim, mas não vai ficar
igual, é 100% recomendado o uso de duas placas de rede.
A primeira placa de rede chamamos de eth0, irei chamar ela de internet, nessa placa
vamos ligar um cabo de rede até o nosso modem de internet, conforme o diagrama.
Já na rede interna (rede eth1), você vai precisar colocá-la no endereçamento interno
da sua rede. Em nosso diagrama de exemplo, você pode observar que temos dois
computadores, dois clientes. Inclusive eu trouxe esses dois clientes justamente para
um teste, podemos por exemplo rodar um cliente do proxy com Linux e no outro
Windows.
Vamos acessar a internet passando pelo proxy, utilizando esse dois cliente na nossa
rede de exemplo.
O Endereço interno do meu proxy é o IP: 10.10.10.1 e na Máscara 255.255.255.0
classe C de rede. Sua rede não precisa necessariamente ser igual.
Então essa é a infraestrutura necessária para se montar um proxy de internet.
Uma pergunta que pode estar em sua cabeça agora: “Mas se eu pegar o cabo de rede
do modem de internet, e ligar direto no switch da rede, vai funcionar?:
Sim, vai funcionar, mas você terá um problema sério de segurança, por que um dos
clientes pode simplesmente descobrir qual o endereçamento IP do seu modem,
configurar a rota dele, e acessar sua internet sem passar pelo proxy.
E desta forma que estamos vendo no diagrama, os dois clientes não tem outra forma
de acessar a internet a não ser que seja passando pelo proxy.
Essa é a principal dica de você começar sua infraestrutura de rede para trabalhar
com proxy.

VANTAGENS DE USAR UM SERVIDOR PROXY


COMO CRIAR UM SERVIDOR PROXY COM SQUID
VANTAGENS DE USAR UM SERVIDOR PROXY
-Restrições de acesso -Baseada em horário -Login -Endereço IP da máquina, etc.
-Bloquear páginas com conteúdo indesejado -Funciona como um cache de páginas já
acessadas. -Economia de banda de internet, tornando o acesso mais rápido como o
uso do cache. -Pode servir como cache de arquivos: Exemplo: Atualização do
Windows Update, Downloads, pacotes do apt-get -Podemos usar o Sarg como
gerador de relatórios, para gerar arquivos html com os acessos feitos pelo Squid. -
Podemos usar proxy transparente, é muito parecido com o compartilhamento via nat,
mas com o squid trabalhando como cache.

CONFIGURAÇÃO BÁSICA DO SERVIDOR PROXY COM SQUID


CONFIGURAÇÃO BÁSICA DO SERVIDOR PROXY COM SQUID
Infraestrutura básica para implantação do servidor proxy
Essa configuração é para quem já sabe fazer a instalação de um servidor Linux, pois
eu vou simplesmente entrar na configuração do servidor squid.
Não vamos tratar aqui, assuntos como instalar pacotes, particionamentos e sim vamos
tratar aqui a instalação e configuração deste servidor proxy com squid.
Voltando ao diagrama de rede, para entender melhor, irei descrever um poucos os 3
computadores rodando nessa rede, sendo 1 o servidor proxy com squid, e 2 clientes
da rede, que podem ser um computador com Linux ou Windows.
O primeiro servidor proxy tem o IP interno 10.10.10.1, ele já tem o IP externo que está
utilizando para acessar a internet.
O meu segundo computador, que é um dos dois computadores ligados ao meu switch,
tem o IP 10.10.10.113, ele está rodando o Ubuntu.
Depois temos ainda o cliente 3, que está rodando Windows 7 com o endereço IP
10.10.10.114
Instalação do squid
Para fazer a instalação do squid, vamos usar o comando abaixo.
#apt-get install squid3
Com este comando, acabamos de fazer a instalação do nosso servidor squid, que
está na versão 3.
É somente este comando para instalar o squid. Toda sua configuração está inserida
dentro do diretório /etc/squid3

CONFIGURAÇÃO DO SQUID
CONFIGURAÇÃO DO SQUID
E o arquivo principal da configuração, é o arquivo squid.conf (não se assuste, mas é
um arquivo muito extenso, pois ele tem vários comentários e várias configurações).
Nesse arquivo, você tem por exemplo a configuração do tamanho do cache, onde o
cache vai ser guardado, o tipo de autenticação, etc.
Edite o arquivo de configuração, squid.conf assim:
# vim/etc/squid3/squid.conf
E encontre a linha abaixo dentro do arquivo:
http_access allow localhost
Conforme imagem:
Abaixo dessa linha, colocaremos nossas regras do squid.
E quais são as essas regras?
Primeiramente eu irei liberar a minha rede para acessar pelo proxy.
Então meu objetivo agora é liberar a internet para aqueles dois computadores da
minha rede.

CRIANDO REGRAS NO SQUID.CONF


COMO CRIAR UM SERVIDOR PROXY COM SQUID
Agora que você já sabe onde vamos inserir nossas regras de configuração vamos
iniciar.
# vim/etc/squid3/squid.conf
Então primeiro você irá criar uma acl, e dizer do que se trata, em nosso exemplo
abaixo está tratando do endereçamento IP com origem dos computadores, ou seja,
da minha rede interna, conforme abaixo:
acl rede_interna src 10.10.10.0/24
COMO CRIAR UM SERVIDOR PROXY COM SQUID
Já com o a linha abaixo, iniciando um http_access, iremos ativar ou desativar essa
nova acl criada acima, irei dizer o que para o squid o que ele deve fazer com essa
nova acl.
Eu poderia negar ou poderia liberar. Nesse caso estou liberando, conforme abaixo:
http_access allow rede_interna
OBS: colocar essa liberação da rede interna acima da entrada do http_access deny all
Com isso eu já tenho a configuração do meu squid concluída, já consigo liberar
internet para os computadores da minha rede interna.
Agora preciso apenas fechar meu arquivo e já salvar essa configuração do squid.conf.
COMO CRIAR UM SERVIDOR PROXY COM SQUID
Próximo passo é inicializar o serviço do squid, assim:
# /etc/init.d/squid3 restart
Ao reiniciar o serviço do squid com esse processo acima, o sistema derruba o squid e
inicia o serviço novamente, então se tiver muitos usuários acessando a internet pelo
squid neste momento, esse usuários irão sentir que a internet vai cair e voltar
rapidamente.
Com este tipo de restart do squid, estamos parando o serviço que estabiliza e guarda
todos os caches que estão em memória ram, e precisamos aguardar que o serviço do
squid grave esses caches em disco, por isso esse processo poderá demorar um pouco
dependendo da quantidade de acessos simultâneos.
Agora já posso ir no computador do meu cliente e tentar acessar a um site qualquer,
e você já irá perceber que agora está carregando o site normalmente. Iso para ambos
os clientes, tanto utilizando o Linux como Windows.
Se você quiser saber onde estão os logs do squid, é só digitar:
# cd /var/log/squid3
Dentro do diretório /var/log/squid3 você vai encontrar vários logs, o log de acesso do
proxy está no arquivo access. log, digite assim:
# cd /var/log/squid3 # tail -f access.log
Neste arquivo podemos ver exatamente o que seus clientes estão tentando acessar
neste momento, inclusive com o endereço do computador cliente.
Então essa é a configuração mais básica para colocar um proxy rodando em sua rede,
funcionando como cache.
Claro que aqui não estamos fazendo nenhum tipo de restrição de acesso, mas você
já tem aqui a facilidade de ter um cache na sua rede.
Voltando para o console, irei utilizar as teclas ctrl+c para sair desse log, vou entrar
novamente no squid.conf e procurar minhas regras, irei pesquisar por #regras dentro
do arquivo utilizando o editor vim, assim:
# vim/etc/squid3/squid.conf
Dentro do vim, eu uso a opção abaixo para fazer a pesquisa.
ESC + : + /regras
Irei fazer alguns comentários no arquivo, assim: #libera rede interna
Com essas duas regras, a acl e http_access, liberaram a rede interna através do meu
proxy, conforme já analisamos acima.

COMO CRIAR UM SERVIDOR PROXY COM SQUID


CRIANDO REGRAS COM RESTRIÇÃO DE ACESSO NO SQUID
Nós já temos o servidor proxy rodando como o squid, e os dois computadores
acessando a internet através deles.
Desta forma então, qualquer computador que estiver plugado nessa rede e que
configure o proxy manualmente no navegador, vai conseguir acessar a internet.
A configuração do manual do proxy no navegador deve utilizar o endereço IP do nosso
servidor proxy, que em nosso exemplo tem o endereço 10.10.10.1 e deve utilizar a
porta 3128, que é o padrão do squid.
Não importa o número de computadores desde que todos estejam configurados com
o mesmo proxy, que em nosso exemplo de diagrama é o servidor com o endereço IP
10.10.10.1.
Agora, você pode precisar fazer o bloqueio de algum computador em específico.
Então para resolver isso podemos fazer o bloqueio de um determinado computador
somente, utilizando o endereço de IP, para que não tenha o acesso a internet.
Vamos ver um exemplo.
Vamos precisar criar outra acl vou chamar ela também de:
acl pc1 src 10.10.10.113/32 #(você irá indicar o endereço de IP da máquina que deseja
bloquear).
Depois disso já posso criar uma regra que irá realmente bloquear o acesso a internet
do computador com o endereço ip 10.10.10.113 assim:
http_access deny pc1
Com isso você está dizendo para o squid bloquear qualquer acesso que tenha origem
do computador 10.10.10.113.
As regras abaixo desta irão continuar praticamente da mesma forma, a não ser na
ultima regra em que eu liberei a rede interna, irei fazer mais um inserção de !pc1.
Então fica assim:
http_access allow rede_interna !pc1
Com isso porque vou liberar a rede interna exceto para o pc1.
Você vai ver que com essa regra, o computador escolhido não terá mais acesso
liberado a internet através do proxy.
Meu arquivo squid.conf ficou assim:
#regras # bloqueia o pc1 acl pc1 src 10.10.10.113/32 http_access deny pc1
# libera rede interna acl rede_interna src 10.10.10.0/24 http_access allow rede_interna !pc1
Então essas duas regras são bem tranquilas, com uma variação dessa configuração
você poderá criar um servidor proxy muito poderoso.
Qualquer acl criada, como esse nosso exemplo foi:
acl pc1 src 10.10.10.113/32
Você deve usar o http_access para utilizar essa nova acl, sempre com duas opções
de controle de acesso, então poderá utilizar o deny ou o allow.
Utilize o deny para bloquear e o allow para liberar, como o exemplo abaixo: http_access
deny pc1

COMO CRIAR UM SERVIDOR PROXY COM SQUID


COMO BLOQUEAR/ LIBERAR SITES
Então você pode bloquear e liberar somente os sites desejados. Se for de seu
interesse bloquear um site específico, preste atenção nesses exemplos.
# vim /etc/squid3/squid.conf
Vamos utilizar essa acl chamada SITE_NEGADO, assim:
acl SITE_NEGADO dstdomain .globo.com .r7.com
Ela tem o tipo dstdomain, onde podemos identificar o domínio de destino, e o terceiro
parâmetro indicamos o endereço do site que será negado, nossa função será bloquear
alguém que tentar acessar um destes dois sites.
Por enquanto só criamos a acl ( lista de acesso ), agora vamos para o próximo passo
que é informar ao squid o que ele irá fazer com a nossa acl SITE_NEGADO.
Então para ativar essa acl vamos usar novamente o http_access, podemos ativar ela
em qualquer local do arquivos squid.conf, mas o local mais indicado é ativar
exatamente onde está ilustrado abaixo.
#regras # bloqueia o pc1 acl pc1 src 10.10.10.113/32 http_access deny pc1
# libera rede interna acl rede_interna src 10.10.10.0/24 http_access allow rede_interna !pc1
!SITE_NEGADO
Vamos lá, eu irei explicar agora com mais detalhes.
Vamos começar editando o squid.conf que está dentro do /etc/squid3 vou pesquisar
por regras, e vou criar a acl a seguir.
acl SITE_NEGADO dstdomain .globo.com .r7.com
Estes dois sites não poderão serem acessados, veja na imagem a seguir a regra onde
estou liberando a minha rede interna, exceto a acl SITE_NEGADO, utilizando o ! para
indicar essa exceção.
Ou seja, eu disse ao squid qual computador tem o acesso internet, mas deve negar a
acl SITE_NEGADO.
Resultado esse laboratório, nenhum computador da rede poderá acessar o site do
globo.com ou do r7.com.
Lembrando que essa instrução de vários sites, é separado por um espaço. Agora é só
salvar o squid.conf e utilizar o comando abaixo para o squid reconhecer a nova
configuração.
Você pode estar se perguntando: Então o que vai acontecer agora?
É simples, a rede interna pode acessar qualquer site, menos aqueles definidos
anteriormente na acl SITE_NEGADO.
Eu posso dizer também que eu tenho uma lista de sites liberados, isso é bem utilizado
em empresas em que eu já configurei o squid, é comum se fazer uma lista de sites
liberados para empresa toda, como por exemplo bancos e sites institucionais.
Abaixo o exemplo de uma acl para resolver esse problema.
acl SITE_LIBERADO dstomain .bradesco.com.br .caixa.gov.br
Podemos ver com esse conteúdo algumas das funcionalidades do squid, é claro que
existem muitas outras, mas isso foi de uma maneira simples, uma breve explicação
de como utilizar o proxy para liberar e bloquear sites, e principalmente para que você
entenda a lógica do arquivo de configuração do squid e principalmente a lógica da acl
e do http_access.