entendendo as acl's do squid

Download entendendo as acl's do squid

If you can't read please download the document

Upload: sergio-luiz-araujo-silva

Post on 06-Jun-2015

2.866 views

Category:

Documents


30 download

DESCRIPTION

Um bom manual sobre o squid que peguei no site:http://www.squid-cache.org.br

TRANSCRIPT

Entendendo como o squid l as ACLsFonte: http://www.squid-cache.org.br/index.php?option=com_content&task=view&id=91&Itemid=27

SumrioMontando uma rede baseada numa lista de bloqueios........................3 Montando uma rede baseada numa lista de excees.........................5 Redirecionando.....................................................................................7 Final......................................................................................................7

A cada caractere inserido no squid.conf lembre-se que o squid l as acls de cima para baixo e quando encontra alguma que se aplique ele pra. Parece meio complicado mas funciona assim: Vou criar trs acls. acesso_total, acesso_restrito e bloqueado. Estes arquivos tero os seguintes contedos:acesso_total = IPs dos clientes que tero acesso total internet. No passaro por nenhuma restrio do squid. acesso_rstrito = IPs dos clientes que passaro pelo bloqueio de sites estabelecido na acl seguinte. bloqueado = Lista de palavras que o squid bloquear se forem encontradas na URL.

De posse detas trs acls, vamos declar-las no squid.conf desta maneira:

acl acesso_total src "/etc/squid/acesso_total" acl acesso_restrito src "/etc/squid/acesso_restrito" acl bloqueado url_regex -i "/etc/squid/bloqueado"

OBS.: A opo -i encontrada na linha que declara o bloqueio serve para NO fazer distino entre maisculas e minsculas. Agora que as regras foram declaradas vamos ativ-las dessa maneira:http_access allow acesso_total http_access deny bloqueado http_access allow acesso_restrito http_access deny all

Como o squid as l: 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". Ento, quem ele encontra aqui j liberado e no passa mais pelas outras acls seguintes. Por isso o acesso direto e total. A segunda regra que ele encontra (http_access deny bloqueado) diz que ser NEGADO o acesso s URLs que coincidirem com as palavras que esto no arquivo "/etc/squid/bloqueado". Se, por exemplo, neste arquivo tiver a palavra sexo qualquer site que tenha esta palavra na sua URL no ser acessado, como em www.uol.com.br/sexo, www.sexomais.com.br, etc. Mas ateno neste detalhe. O squid vem lendo o arquivo de cima para baixo e s chegar a segunda regra quem no cair na primeira, ou seja quem no tiver o ip cadastrado no arquivo de acesso total.

A terceira regra que o squid l (http_access allow acesso_restrito) diz que ser LIBERADO acesso a quem tiver com o ip cadastrado no arquivo "/etc/squid/acesso_restrito". Como na terceira regra s chega quem no 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 mscara (0.0.0.0/0.0.0.0), pois ela j vem declarada no incio das acls (acl all src 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 sequncia como o squid l as acls. Se ele l a primeira (acesso_total) e ningum se aplicar a ela, ento passar para a segunda. Se nesta tb ningum se aplicar ele passar para a terceira. bvio concluir que se o cliente no est cadastrado no acesso_total, nem est no acesso_restrito ento ele no faz parte da rede e deve ser bloqueado. (Deve ser algum espertinho mudando de ip, hehehe!!!). S chegar a ltima quem no caiu em nenhuma das anteriores. Por issso, divida sua rede em quem pode ter acesso tota e restrito e cadastre os clientes em seus respectivos arquivos.

Montando uma rede baseada numa lista de bloqueiosAgora que voc j entendeu como funcionam as acls, vamos a um exemplo um mais complexo do que o anterior, mas no complicado entender. Neste exemplo vamos montar uma rede baseada numa lista de bloqueios e excees. Ou seja, o cliente s ter o seu acesso bloqueado se o site estiver previamente cadastrado na lista de bloqueios. A desvantegem desta montagem de acesso que se o cliente conhecer sites semelhantes aos bloqueados (com URLs diferentes) poder acessar. Fica ento a critrio do administrador da rede ter uma vasta lista do que no pode acesar. A regra deste tipo de restrio : QUALQUER SITE PERMITIDO, DESDE QUE NO ESTEJA NA LISTA. Veja um exemplo de uma rede funcionando assim:

Arquivo: /etc/squid/acesso_total Contedo: 192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5

Descrio: Mquinas que tero acesso total internet.

Arquivo: /etc/squid/acesso_restrito Contedo: 192.168.1.6 192.168.1.7 192.168.1.8 192.168.1.9

Descrio: Mquinas que tero acesso restrito internet. Passaro por bloqueios.

Arquivo: /etc/squid/download Contedo: .exe$ .iso$ .avi$ .mp3$ .wmv$ .mpeg$

Descrio: Extenses de arquivos que tero download bloqueado.

Arquivo: /etc/squid/bloqueado Contedo: sexo hardcore ninfeta penis suruba playboy revistasexy

Descrio: Palavras para restrio de urls.

Arquivo: /etc/squid/liberado Contedo: abcdasaude sexoesaude medicinanatural uol.com.br/sexo

Descrio: Excees aos bloqueios. O que for colocado aqui, mesmo que esteja na lista de bloqueios ser liberado. Agora vamos prtica: Declare as acls:

acl acesso_total src "/etc/squid/acesso_total" acl acesso_restrito src "/etc/squid/acesso_restrito" acl liberado url_regex -i "/etc/squid/liberado" acl download url_regex -i "/etc/squid/download" acl bloqueado url_regex -i "/etc/squid/blouqeado"

Depois de declarar, ative as acls na mesma sequncia doexemplo abaixo:

http_access allow acesso_total http_access allow liberado http_access deny download http_access deny bloqueado http_access alow aceso_restrito http_access deny all

Agora vamos s explicaes e as anlises dos casos. Caso 1 - O cliente com ip 192.168.1.2 vai acessar o site www.uol.com.br. Por estar cadastrado no acesso total ele cair logo na primiera regra e ser LIBERADO o acesso a qualque site. Nenhuma das regras seguintes sero aplicadas a elee tanto o uol.com.br como qualquer outra pgina estar liberada. Caso 2 - O cliente com ip 192.168.1.6 vai acessar o site www.uol.com.br.

Por estar no acesso restrito, ele "passar ileso" pela primeira regra. Encontrar ento a segunda (liberado), que so as excees dos bloqueios. Como o site www.uol.com.br no est na lista de excees ele tambm passar ileso por esta regra. Chegar ento, terceira regra (download) que limita os downloads. Nesta tambm no encontrar nada, pois no estamos fazendo download de nenhum arquivo. Chegar ento a quarta (bloqueado) e mais perigosa regra, mas como nela no tem nehuma restrio para o site uol ele tambm passar ileso. Cair ento na quinta regra, onde o acesso ao seu ip (192.168.1.6) est LIBERADO (allow) podendo assim acessar o site www.uol.com.br. Caso 3 - O cliente com ip 192.168.1.6 vai acessr o site www.sexomais.com.br. Por estar no acesso restrito, ele passa pela primeira regra. Encontrar a segunda, na qual h excees para os bloqueios, mas noh nenhuma exceo para o site sexomais.com.br. Ento ele prossegue, passando ileso pelo download e caindo na regra bloqueado, pois o site sexomais.com.br contm uma palavra (sexo) que est na lista de bloqueios. Mesmo estando cadastrado no acesso_restrito este cliente no chegar a acl que lhe d permisso de acesso, pois antes ele j caiu no bloqueio de sites e (como j disse) o squid pra de ler quando aplica alguma regra. Caso 4 - O cliente com ip 192.168.1.6 vai acessar o site www.medicinanatural.com.br/sexo. (Mas que cara teimoso...) J sabemos que este cliente pular a primeira regra, pois sei ip do acesso restrito, mas cair logo na segunda, onde h uma exceo para acessar todo o contedo do site medicinanatural. Mesmo que em sua url (www.medicinanatural.com.br/sexo) tenha a palavra sexo, a regra de bloqueio no ser aplicada, pois antes mesmo de chegar nela foi encontrada uma adequao na regra de excees e o squid parou de ler o resto das regras para este ip. Caso 5 - O cliente com ip 192.168.1.6 (coitado dese cara...) vai acessar o site www.superdownloads.com.br. Ele pular a primeira regra. No se enquadrar na segunda, mas cair na terceira se tentar fazer qualquer download de arquivos com extenses definidas na lista /etc/squid/download. Se no tentar fazer downloads, poder navegar tranquilamente pelo site, afinal, no h nenhuma restrio para a URL dele. Espero que este exemplo tenha ficado claro. Na pgina seguinte montaremos um outro tipo de restries de acesso.

Montando uma rede baseada numa lista de exceesEste tipo de rede bem mais fcil montar que a antrior. NELA, TUDO BLOQUEADO, EXCETO O QUE VOC DEFINIR COMO EXCEO, ao contrrio da outra que tudo liberado, exceto o que voc definir nos bloqueios. Sua vantagem que o administrador da rede no precisa de uma enorme lista do

que "no pode ser acessado". Em alguns casos mais fcil liberar apenas o que pode ser acessado do que bloquear tudo o que no poder ser acessado. A grande jogada esta a! Vamos ento a um exemplo prtico.

Arquivo: /etc/squid/acesso_total Contedo: 192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5

Descrio: Mquinas que tero acesso total internet.

Arquivo: /etc/squid/acesso_restrito Contedo: 192.168.1.6 192.168.1.7 192.168.1.8 192.168.1.9

Descrio: Mquinas que tero acesso restrito internet. Passaro por bloqueios.

Arquivo: /etc/squid/liberado Contedo: .gov. .edu. .org. ufc uece unifor minhaempresa.com.br bb.com.br bradesco.com.br

Descrio: Excees aos bloqueios. Declare as acls:

acl acesso_total src "/etc/squid/acesso_total" acl acesso_restrito src "/etc/squid/acesso_restrito" acl liberado url_regex -i "/etc/squid/liberado" Ative as acls: http_access allow acesso_total http_access allow liberado http_access deny acesso_restrito http_access deny all

Agora vamos ao estudo dos casos. A primeira regra LIBERA o acesso dos ips cadastrados no acesso_total. A segunda regra libera o acesso apenas aos contedos do arquivo /etc/squid/liberado. E as demias negam os acessos da rede local e de todos os outros ips tambm. Caso 1 - O cliente com ip 192.168.1.2 vai acessar o site www.uol.com.br. Por estar cadastrado no acesso total ele cair logo na primiera regra e ser LIBERADO o acesso a qualque site. Nenhuma das regras seguintes sero aplicadas a elee tanto o uol.com.br como qualquer outra pgina estar liberada. Caso 2 - O cliente com ip 192.168.1.6 vai acessar o site www.uol.com.br. Por no estar no acesso total, ele pular esta regra. Como no h nehuma exceo para o site www.uol.com.br ele tambm passar ileso pela segunda regra. Da terceira em diante ele no faz mais nada, pois elas negam qualquer tipode acesso. O site www.uol.com.br ser bloqueado para este ip. Caso 3 - O cliente com ip 192.168.1.6 vai acessar o site www.detran.ce.gov.br. J sabemos que ele pular a primeira regra. Encontrar ento a segunda, que em sua lista possui (.gov.) uma referncia URL que ele est tentando acessar. Como a regra est liberando (allow) o acesso a qualquer URL que contenha .gov. o cliente poder acessar normalmente todo o site www.detran.ce.gov.br. Como vimos este exemplo bem mais simples que o anterior e a abrangncia dos bloqueios bem maior. ideal para escolas, bancos e instituies pblicas, onde o contedo da internet altamente restrito. Na ltima pgina mostrarei como redirecionar as pginas (para um aviso por exemplo) quando o cliente cair em algum bloqueio.

RedirecionandoDepois de montada a rede com o modelo de sua preferncia, falta apenas redirecionar as mensagens, afinal havero inmeras reclamaes de clientes dizendo que esto sem internet e na verdde esto tendo seus sites blouqeados. Nada mais bvio do que colocar um aviso informando isso, concorda? bem simples. Vamos ento prtica. Procure no seu squid.conf a linha error_directory. Ela informa o doretrio onde o squid vai buscar os arquivos html de erro. No meu conectiva, por exemplo, o referido diretrio fica em /usr/share/squid/errors/Portuguese. 1. Crie ento uma pgina html comum informando que o usurio est tentando acessar um site proibido. 2. Salve-a dentro do diretrio informado acima para que o squid a encontre quando algum for bloqueado. Procure no squid.conf a linha deny_info. Nesta linha voc define qual erro vai acionar qual pgina. Veja um exemplo: deny_info block.html bloqueado Neste exemplo o cliente ser redirecionado para a pgina block.html quando ocorrer algum bloqueio de sites. Voc pode tambm acrescentar outras pginas de acordo com a quantidade de bloqueios que voc possui. Para isso basta repetir as linhas, como no exemplo abaixo:

deny_info block.html bloqueado deny_info down.html download deny_info all.html all

Se quiser tambm pode redirecionar para umdeny_info http://www.google.com.br bloqueado.

site:

FinalEspero que este artigo possa ajudar algum de alguma forma. Escrevi pensando no que eu queria ter encontrado quando estava aprendendo a usar as acls, por isso acho que deva ter alguma utilidade. Procurei exemplificar nos mnimos detalhes para no deixar nenhuma dvida. Se mesmo assim, houverem dvidas, dicas ou sugestes estarei inteira disposio.