|
O artigo está dividido em 5 partes, onde são abordados os bloqueios de sites e downloads, cadastro de usuários e redirecionamentos para páginas de aviso quando um site for bloqueado.
1. Entendendo como o squid lê as ACLsA 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 pára. Parece meio complicado mas funciona assim: Vou criar três acls. acesso_total, acesso_restrito e bloqueado. Estes arquivos terão os seguintes conteúdos:
acesso_total = IPs dos clientes que terão acesso total à internet. Não passarão por nenhuma restrição do squid.
acesso_rstrito = IPs dos clientes que passarão pelo bloqueio de sites estabelecido na acl seguinte.
bloqueado = Lista de palavras que o squid bloqueará se forem encontradas na URL.
De posse detas três 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 opção -i encontrada na linha que declara o bloqueio serve para NÃO fazer distinção entre maiúsculas e minúsculas.
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". Então, quem ele encontra aqui já é liberado e não 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 estão no 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 primeira, ou seja quem não 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 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). 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 sequência como o squid lê as acls. Se ele lê a primeira (acesso_total) e ninguém se aplicar a ela, então passará para a segunda. Se nesta tb ninguém se aplicar 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. (Deve ser algum espertinho mudando de ip, hehehe!!!). Só chegará a última quem não 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.
2. 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 não é complicado entender. Neste exemplo vamos montar uma rede baseada numa lista de bloqueios e exceções. 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 então a critério do administrador da rede ter uma vasta lista do que não pode acesar. A regra deste tipo de restrição é: QUALQUER SITE É PERMITIDO, DESDE QUE NÃO ESTEJA NA LISTA. Veja um exemplo de uma rede funcionando assim:
Arquivo: /etc/squid/acesso_total
Conteúdo: 192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5
Descrição: Máquinas que terão acesso total à internet.
Arquivo: /etc/squid/acesso_restrito
Conteúdo: 192.168.1.6 192.168.1.7 192.168.1.8 192.168.1.9
Descrição: Máquinas que terão acesso restrito à internet. Passarão por bloqueios.
Arquivo: /etc/squid/download
Conteúdo: .exe$ .iso$ .avi$ .mp3$ .wmv$ .mpeg$
Descrição: Extensões de arquivos que terão download bloqueado.
Arquivo: /etc/squid/bloqueado
Conteúdo: sexo hardcore ninfeta penis suruba playboy revistasexy
Descrição: Palavras para restrição de urls.
Arquivo: /etc/squid/liberado
Conteúdo: abcdasaude sexoesaude medicinanatural uol.com.br/sexo
Descrição: Exceções aos bloqueios. O que for colocado aqui, mesmo que esteja na lista de bloqueios será liberado.
Agora vamos à prática:
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 sequência 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 explicações e as análises 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 serão aplicadas a elee tanto o uol.com.br como qualquer outra página 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á então a segunda (liberado), que são as exceções dos bloqueios. Como o site www.uol.com.br não está na lista de exceções ele também passará ileso por esta regra. Chegará então, à terceira regra (download) que limita os downloads. Nesta também não encontrará nada, pois não estamos fazendo download de nenhum arquivo. Chegará então a quarta (bloqueado) e mais perigosa regra, mas como nela não tem nehuma restrição para o site uol ele também passará ileso. Cairá então 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á exceções para os bloqueios, mas nãohá nenhuma exceção para o site sexomais.com.br. Então ele prossegue, passando ileso pelo download e caindo na regra bloqueado, pois o site sexomais.com.br contém uma palavra (sexo) que está na lista de bloqueios. Mesmo estando cadastrado no acesso_restrito este cliente não chegará a acl que lhe dá permissão de acesso, pois antes ele já caiu no bloqueio de sites e (como já disse) o squid pára 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 exceção para acessar todo o conteúdo do site medicinanatural. Mesmo que em sua url (www.medicinanatural.com.br/sexo) tenha a palavra sexo, a regra de bloqueio não será aplicada, pois antes mesmo de chegar nela foi encontrada uma adequação na regra de exceções 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. Não se enquadrará na segunda, mas cairá na terceira se tentar fazer qualquer download de arquivos com extensões definidas na lista /etc/squid/download. Se não tentar fazer downloads, poderá navegar tranquilamente pelo site, afinal, não há nenhuma restrição para a URL dele.
Espero que este exemplo tenha ficado claro. Na página seguinte montaremos um outro tipo de restrições de acesso.
3. Montando uma rede baseada numa lista de exceções Este tipo de rede é bem mais fácil montar que a antrior. NELA, TUDO É BLOQUEADO, EXCETO O QUE VOCÊ DEFINIR COMO EXCEÇÃO, ao contrário da outra que tudo é liberado, exceto o que você definir nos bloqueios. Sua vantagem é que o administrador da rede não precisa de uma enorme lista do que "não pode ser acessado". Em alguns casos é mais fácil liberar apenas o que pode ser acessado do que bloquear tudo o que não poder ser acessado. A grande jogada esta aí!
Vamos então a um exemplo prático.
Arquivo: /etc/squid/acesso_total
Conteúdo: 192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5
Descrição: Máquinas que terão acesso total à internet.
Arquivo: /etc/squid/acesso_restrito
Conteúdo: 192.168.1.6 192.168.1.7 192.168.1.8 192.168.1.9
Descrição: Máquinas que terão acesso restrito à internet. Passarão por bloqueios.
Arquivo: /etc/squid/liberado
Conteúdo: .gov. .edu. .org. ufc uece unifor minhaempresa.com.br bb.com.br bradesco.com.br
Descrição: Exceções 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 conteúdos do arquivo /etc/squid/liberado. E as demias negam os acessos da rede local e de todos os outros ips também.
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 serão aplicadas a elee tanto o uol.com.br como qualquer outra página estará liberada.
Caso 2 - O cliente com ip 192.168.1.6 vai acessar o site www.uol.com.br. Por não estar no acesso total, ele pulará esta regra. Como não hé nehuma exceção para o site www.uol.com.br ele também passará ileso pela segunda regra. Da terceira em diante ele não 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á então a segunda, que em sua lista possui (.gov.) uma referência à 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 abrangência dos bloqueios é bem maior. É ideal para escolas, bancos e instituições públicas, onde o conteúdo da internet é altamente restrito.
Na última página mostrarei como redirecionar as páginas (para um aviso por exemplo) quando o cliente cair em algum bloqueio.
4. Redirecionando Depois de montada a rede com o modelo de sua preferência, falta apenas redirecionar as mensagens, afinal haverão inúmeras reclamações de clientes dizendo que estão sem internet e na verdde estão tendo seus sites blouqeados. Nada mais óbvio do que colocar um aviso informando isso, concorda? É bem simples. Vamos então à prática.
Procure no seu squid.conf a linha error_directory. Ela informa o doretório onde o squid vai buscar os arquivos html de erro. No meu conectiva, por exemplo, o referido diretório fica em /usr/share/squid/errors/Portuguese. 1. Crie então uma página html comum informando que o usuário está tentando acessar um site proibido. 2. Salve-a dentro do diretório informado acima para que o squid a encontre quando alguém for bloqueado. Procure no squid.conf a linha deny_info. Nesta linha você define qual erro vai acionar qual página. Veja um exemplo:
deny_info block.html bloqueado
Neste exemplo o cliente será redirecionado para a página block.html quando ocorrer algum bloqueio de sites. Você pode também acrescentar outras páginas 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 também pode redirecionar para um site:
deny_info http://www.google.com.br bloqueado.
5. FinalEspero que este artigo possa ajudar alguém 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 mínimos detalhes para não deixar nenhuma dúvida. Se mesmo assim, houverem dúvidas, dicas ou sugestões estarei à inteira disposição.
|
excelente Escrito por Visitante em 2006-05-15 09:19:17 Parabéns pelo artigo. Muito esclarecedor e realmente fácil. era isso que eu estava procurando. | excelente Escrito por Visitante em 2006-05-20 00:07:52 Parabéns. O artigo foi muito bem recebido... | Leandro Escrito por Visitante em 2006-05-26 10:26:10 Otimo artigo muito bem explicado, Parabens | Muito bom. Escrito por marcelloconti em 2006-07-03 20:10:46 Legal, bem fácil de compreender. Vale a pena adicionar no futuro o proxy_auth (autenticação de usuários). | Excelente Escrito por gresslerbwg em 2006-08-04 14:05:52 Matou a cobra! | Assim ficou fácil! Escrito por jgilberto1701 em 2006-08-17 10:37:27 Esclarecedor! Show de bola!!! | Excelente! Escrito por justiceiro_df em 2006-12-07 12:39:25 Ótimo pra dar 1 noção geral: Só 1 correção: Ative as acls: http_access allow acesso_total http_access allow liberado http_access deny !acesso_restrito http_access deny all Faltou a negação: Proibe tudo, desde que naum esteja dentro do arquivo | Excelente!!!! Escrito por brunokino em 2007-10-19 09:34:19 Muito bom o artigo, parabéns... Abraços... |
Somente usuários registrados podem escrever comentários. Por favor faça o login ou registre-se. Powered by AkoComment 2.0! |