30/10/12
Mini Tutorial sobre as ACLs no Squid
Mini Tutorial Tutorial so bre as ACLs no Squid Prof. Agenor Prado 1 – Introdução: Introdução:
O objetivo deste documento é familiarizar os usuários a utilizar as Listas de Controle de Acesso (ACLs – Access Control Lists) no Squid. Este mini tutorial não tem pretensão de ser um curso sobre sob re Squid, nem mesmo um tutorial tutorial completo deste. Apenas Apenas um guia de referência para criação de regras de acesso/bloqueio a “Internet” através das ACLs do Squid. Parte dos do s exemplos exemplos aqui usados forma retirados retirados de tutorias tutorias de d e terceiros terceiros conforme podemos ver na referência no final deste. 2 – O Squid
O Squid é um Proxy (“procurador”) que extrapola a funcionalidade de armazenar páginas em “cache” para otimizar o acesso dos usuários a Internet. Suas funcionalidades atuais incluem bloqueios/permissões de acesso baseado em URLs, palavras palavras chaves, chaves, IPs da rede local, local, IPs de destino e etc... O Squid foi desenvolvido sob licença GNU/GPL, originalmente para sistemas operacionais tipo Unix (Unix Like), mas possui hoje versão estável também para Windows. Atualmente o Squid é mantido por um grupo independente de desenvolvedores que recebem donativos de diversas empresas para manter o projeto em funcionamento. O Squid suporta além do HTTP outros protocolos da camada de aplicação do modelo de referênci referênciaa TCP/IP tais tais como c omo HTTPS, HTTPS , FTP FT P entre outros. 3 - Configuração
A configuração do Squid é feita editando seu arquivo de configuração, o squid.conf .
Na instalação do RPM ele estará no /etc/squid/ (estamos baseando este mini tutorial em Linux). Use seu editor preferido para configurar o arquivo. O arquivo de configuração é muito bem explicado, as configurações padrão vêm comentadas facilitando facilitando o entendimento. entendimento. O Squid trabalha "Escutando" uma porta TCP determinada, os clientes que querem acessar uma pagina Web, FTP, SSL fazem requisições nesta porta informando o servidor e o proto colo co lo que querem utilizar utilizar e o squid faz a requisição na po porta rta certa. A porta padrão do Squid é a porta 3128 isto pode ser alterado com uma diretiva do squid.conf chamada http_port. Como o objetivo deste tutorial é apenas conceitos de ACLs não entraremos em detalhes desta configuração. Após a instalação instalação e a criação criação da cache cac he do Squid Sq uid (ver outros tutoriais a respeito resp eito destes processos) process os) podemos começar a configurar configurar as permições permições deste através através das ACLs que são as listas de controle de acesso.
dc363.4shared.com/doc/BztEKYiE/preview.html
1/5
30/10/12
Mini Tutorial sobre as ACLs no Squid
4 - Entendendo as ACLs.
As ACLs permitem especificar endereços de origem ou destino, domínios, horários, usuários, portas ou métodos de conexão ao Proxy, que servirão de base para permitir permitir ou negar negar o acesso baseando-se em conjuntos conjuntos dessas ACL's (isso (isso depende de cada tipo de ACL). Isto permite uma grande flexibilidade na configuração do Squid: podemos, pod emos, por exemplo, exemplo, especificar especificar quais quais endereços endereços pod podem em ser acessados, acessados , quais quais não podem pod em ser acessados, acessado s, que certo endereço endereço somente pod podee ser acessado em determin determinado ado horário, que um usuário somente pode acessar a partir de uma maquina especifica, que um protocolo pode ou não ser utilizado, ou qualquer combinação dessas permissõ permissões/restri es/restrições. ções. As ACLs devem ser configura configuradas das no arquivo squid.conf 4.1 – A Sintaxe da ACL acl NOME_DA_ACL TIPO_DA_ACL parâmetro Podemos colocar como exemplo da sintaxe a seguinte ACL: acl minharede src 192.168.0.0/255.255.255.0 | | | |_ > Domínio da ACL | | | | | | _ > Tipo de ACL | | | | _ > Nome da ACL | | _ > Comando de criação de ACL
(fonte: http: http://www.marc //www.marceloei eloeiras. ras.com.br/li com.br/linux/tuto nux/tutorial/squ rial/squid/squ id/squid.htm id.htm
)
Ou ainda: acl NOME_DA_ACL TIPO_DA_ACL "/caminho/completo/arquivo" 4.2 – Os tipos de ACLs
SRC :
DST : ACL do tipo dst (destino) ela trata o IP de destino da navegação.
DSTDOMAIN: ACL do tipo dstdomain (domínio de destino) ela trata o
ACL do tipo src (origem) ela trata o IP ou uma faixa de IP com que o cliente chega no Proxy.
domínio de destin d estinoo da d a navegação. navegação.
TIME: ACL
do tipo time (tempo) ela trata um determinado momento baseado em dia da semana semana e hora (ver tabela tabela de dias da semana semana em anexo). URL_REGEX: ACL do tipo url_regex (expressão regular na URL) uma
determinada entrada na URL.
dc363.4shared.com/doc/BztEKYiE/preview.html
2/5
30/10/12
Mini Tutorial sobre as ACLs no Squid
ACL do tipo port (porta) ela trata a porta de destino da navegação.
PROXY_AUTH:
PORT:
ACL do tipo proxy_auth (autenticação no Proxy) ela trata o Login com que o cliente se autentica no Proxy. Requer uma configuração de autenticação.
As ACLs são case sensitive caso vc queira queira que o Squid S quid não faça destinção destinção entre maiúsculas e minúsculas vc deverá colocar o opção –i antes da ACL (ver exemplo mais abaixo). 4.3 – Regras das ACLs: O acesso ou negação de uma ACL é dado pelo comando http_access seguido seguido da palavra palavra alow (em caso de d e permissão) permissão) ou o u deny (em caso de d e negação). negação). Ex: http_access deny ips_ ips_proibi proibidos dos |_ > Nome da ACL
Ex: http_access deny –i url_proibidas |_ > Nome da ACL
4.4 - O Funcionamento das ACLs Squid lê as ACLs de cima para baixo no arquivo squid.conf . Quando encontra uma regra ele para, analisa e qualquer regra desta ACL não entrará nas regras das ACLs seguintes. seguintes. Pode Pod e ser um pouco confuso, mas com um exemplo exemplo de confi co nfigura guração ção podemos p odemos esclarecer isto: Vamos criar três ACLs: primeira será acesso_total = IPs dos clientes que terão acesso total à internet. Não passarão por nenhuma restrição do Squid a segunda será acesso_restrito = IPs dos clientes que passarão pelo bloqueio de sites estabelecido na acl seguinte e finalmente a terceira será bloqueado = Lista de palavras que o Squid bloqueará se forem encontradas encontradas na URL. Elas serão declaradas da seguinte maneira no squid.conf : acl acesso_total src "/etc/squid/acesso_total" acl acesso_restrito src "/etc/squid/acesso_restrito" acl bloqueado url_regex -i "/etc/squid/bloqueado"
Isto significa que dentro do diretório /etc/squid teremos os arquivos acesso_total e acesso_restrito contento IPs de máquinas com acesso total e acesso restrito. E neste mesmo diretório o arquivo bloqueado contendo as palavras que não podem aparecer nas URLs dos cliente clientess com c om acesso restrito. restrito.
dc363.4shared.com/doc/BztEKYiE/preview.html
3/5
30/10/12
Mini Tutorial sobre as ACLs no Squid
Agora vamos ativar estas regras colocando os seguintes comando no squid.conf e nesta mesma ordem http_access allow allow acesso_total acesso_to tal http_access deny bloqueado http_access allow allow acesso_restrito http_access deny all
Como o Squid lê estes comandos: A primeira regra que o Squid lê (http_access allow acesso_total) diz que será LIBERADO acesso a quem estiver com o IP cadastrado no arquivo "/etc/squid/acesso_total". Então, quem ele encontra aqui já é liberado e não passa mais pelas pelas outras ACLs seguintes. seguintes. Por isso o acesso acess o é direto e total. total. A segunda regra que ele encontra (http_access deny bloqueado) diz que será NEGADO NEGADO o acesso às URLs que coincidirem coincidirem com as palavras palavras que estão no arquivo arquivo "/etc/squid/bloqueado". Se, por exemplo, neste arquivo tiver a palavra sexo, qualquer site que tenha esta palavra na sua URL não será acessado, como em www.uol.com.br/sexo, www.sexomais.com.br, etc. Mas atenção neste detalhe. O Squid vem lendo o arquivo de cima para baixo e só chegará a segunda regra quem não cair na primei primeira, ra, ou seja quem quem não não tiver tiver o IP cadastrado c adastrado no arquivo arquivo de acesso acess o total. A terceira regra que o Squid lê (http_access allow acesso_restrito) diz que será LIBERAD LIBERADO O acesso a quem tiver tiver com o IP cadastrado no arquivo arquivo "/etc/squid/acesso_restrito". Como na terceira regra só chega quem não caiu na regra anterior, o acesso pode ser liberado tranquilamente. A quarta e última regra (http_access deny all) nega o acesso a qualquer IP de qualquer máscara (0.0.0.0/0.0.0.0), pois ela já vem declarada no início das ACLs (acl all src 0.0.0.0/0.0.0.0). 0.0.0.0/0.0.0.0). Você deve estar se perguntando: Mas como pode negar acesso a todos os IPs se tenho que liberar o meu? A resposta é simples e está no que eu enfatizei até agora. O segredo está na seqüência seqüência como o Squi Sq uidd lê as ACLs. Se ele lê a primeira (acesso_total) e ninguém se aplica a ela, então passará para a segunda. Se nesta também ninguém se aplica, ele passará para a terceira. É óbvio concluir que se o cliente não está cadastrado no acesso_total, nem está no acesso_restrito, então ele não faz parte da rede e deve ser bloqueado. Só chegará a última quem não caiu em nenhuma das anteriores. Por isso, divida sua rede em quem pode pod e ter acess acessoo total e restrit restritoo e cadastre os cliente clientess em seus respectivos arquivos. arquivos.
dc363.4shared.com/doc/BztEKYiE/preview.html
4/5