Modelos de acl no Squid

Atualizado em: 25/05/2007



Sobre este documento

Alguns modelos de ACL no Squid.

Os modelos, comandos ou dicas podem não atender as suas necessidades, não ser compatível com sua instalação, use como referencia, tente adaptar ao seu ambiente.

  acl ipinterno dst 192.168.1.3/32
  http_access allow ipinterno all

Como criar ACL

filtro e regras com regex - expressões regulares

regex = (expressão regular = regular expression).

O ponto sozinho é um coringa e pode ser interpretado como qualquer carcter no lugar dele, para identificar arquivos .exe tem que usar a barra invertida para escapar da interpretação, em lugar de .exe use \.exe para indicar que se trata de .exe

url_regex pesquisa com palavras-chave na URL, modo genérico.

urlpath_regex

dstdom_regex

^ inicio de linha

$ final de linha.

\.exe$ procura somente .exe no final de linha

\.exe($|\?) procura no final de linha e também as ocorrencias exe?qualquercaracter em qualquer parte da da linha.

\.scr[\?\&] procura scr mais um caracter qualquer, neste caso não tem sentido usar \&, não entendi mas já encontrei ocorrencias com scr&, achei melhor testar com este exemplo mas ainda não cheguei a conclusão se é necessário ou não.

Falta testar também com .* neste formato \.scr[\?].*

impedir download de .exe - ACL url_regex

ACL do tipo url_regex, as regras tem que ser em formato regex.

ACL para negar download de qualquer .exe, executável do windows.

Exemplo de ACL para bloquear URL que termina em .exe ou contenha .exe? em qualquer parte da URL.

  acl exetodos urlpath_regex \.exe($|\?)
  acl exelivre urlpath_regex "/etc/squid/exelivre.txt"
  
  http_access allow all exelivre
  http access deny all exetodos

Considere tambem como executáveis para windows .bat .scr .com .pif e vbscript que não sei qual a terminação.

Muito comum aquelas proteção de tela (malware) .scr, para bloquear todos deve usar algo como: \.scr$ \.scr[\?\&]

Para demais extensões, use espaço como separador, exemplo para diversas extensões.

  acl download urlpath_regex \.exe \.arj \.zip \.mp3 \.bat \.pif \.scr \.src
  http_acces allow download ips_liberados
  http access deny all download

Exemplo de ACL que pega somente o .exe no final da URL, não é grande coisa mas ajuda, não funciona em muitos sites que insere codigos na URL.

  acl negaexe url_regex -i ^http://.*\.exe$ 
  http_access deny negaexe

Utilizo FreeNX no servidor Samba, também servidor web interno, assim todo dowload é feito pelo Linux e salva no diretório do servidor web.

Mesmo assim tem situações que precisa liberar alguns micros, neste caso crie ACL liberando sites que deseja liberar, Windows update, atualização do anti-virus, sites do governo e etc..

ACL permitindo download de alguns executáveis do Windows.

acl liberaexe url_regex "/etc/squid/liberaexe.txt"

http_access allow liberaexe

Onde /etc/squid/liberaexe.txt tem a lista dos .exe sites liberados para download, liberar dowanload do site da Receita Federal, acrescente no arquivo /etc/squid/liberaexe.txt

^http://www.receita.fazenda.gov.br/.*\.*$.

mime_type

Barrar por tipo de arquivo, ACL do tipo mime_type, formato da acl para barrar arquivos pelo tipo de aplicação, um exemplo para barrar arquivos do tipo pdf.

  acl minhaacl rep_mime_type ^application/pdf$
  http_reply_access deny minhaacl

Outro exemplo para barrar videos do tipo asf, não confundir aplication com aplicativo, com sendo a finalidade do programa, aqui se refere a destinação do tipo de arquivo. radio online pode econtrar no formato de Real Player, midia player e muitos outros, acho que deve existir diversos streaming para radio online, a seguir um exemplo de acl barrando streaming, logo em seguida outro exemplo complementar usando ERP (urlpath_regex).

  # Barrar streaming radio online
  acl streaming rep_mime_type ^video/x-ms-asf
  http_reply_access deny streaming

ACL mais abrangente, definindo varios mime_time, para facilitar a organização e manutenção, use arquivo externo.

acl mimeaplicativo rep_mime_type -i "/etc/squid/mimeaplicativo.txt"

Onde /etc/squid/mimeaplicativo.txt contém a lista de aplicações a serem negadas, um exemplo de conteúdo deste arquivo

  ^application/x-msn-messenger$
  ^application/x-mms-framed$
  ^application/vnd.ms.wms-hdr.asfv1$
  ^video/x-ms-asf$
  ^audio/x-pn-realaudio$
  ^audio/x-ms-wma$
  ^video/x-msvideo$
  ^video/mpeg$
  ^application/vnd.rn-realmedia$
  ^video/x-ms-wmv$
  ^audio/x-realaudio$
  ^video/x-ms-asx$
  ^video/x-ms-wvx$ 
  ^application/x-mplayer2$
  ^application/x-oleobject$
  ^application/x-pncmd$

Considerando a existenciado arquivo acima, esta ACL tem este formato.

  acl mimeaplicativo rep_mime_type -i "/etc/squid/mimeaplicativo.txt"
  http_reply_access deny mimeaplicativo
  
  Também pode usar esta lista para liberar a um grupo especifico de IP,
  neste caso precisa criar um arquivo com a lista de IP a liberar, 
  
  acl mime-ip src 192.168.1.205 192.168.1.211 192.168.1.212 
  
  No squid.conf esta ACL tem que ficar antes da ACL de bloqueio, exemplo desta ACL.
  
  acl mimeaplicativo rep_mime_type -i "/etc/squid/mimeaplicativo.txt"
  http_reply_access allow mimeaplicativo mime-ip

Os exemplos acima não barra tudo, pode implementar uma acl completar do tipo urlpath_regex, nesta acl usa expressão regular no filtro, assim podemos barrar diversos tipos de arquivos, no exemplo a seguir, pega as terminações quando ocorre no final da URL, embora seja muito eficiente por barrar os formatos mais comum, pode falhar em programas ou sites que mascaram o formato.

Barrando radio e video online.

Pesquisando no Google encontrei diversos formatos de som e video, algumas páginas em outros idiomas não entendi o significado, alguns nem conheço, pode nem ser sobre audio, abaixo um acl para barrar alguns tipos, caso tenha problema com algum ou descubra mais algum, é só acrescentar ou remover, cuidado com a quebra de linha, a acl com todos os formatos estão em uma única linha.

  # Barrar arquivos de som e video em geral
  acl websom urlpath_regex -i  \.asf$ \.asx$ \.avi$ \.au$  \.mid$ \.midi$ \.mov$  \.mpeg$ \.mpg$ \.mp3$  \.mp2$ \.mp2v$  \.ogg$ \.pls$  \.ra$ \.ram$ \.rmi$ \.snd$ \.wav$ \.wma$ \.wmv$ \.wvx$ 
  
  http_access deny websom

Ainda não testei, mas deve funcionar e fica mais fácil administrar em aquivo, a mesma acl acima modificada para pegar os tipos de arquivo em um arquivo texto, ficaria assim.

  # Barrar arquivos de som em geral
  acl websom urlpath_regex -i "/etc/squid/arqsom.txt"
  http_access deny websom

Onde /etc/squid/arqsom.txt é um arquivo texto contendo um tipo por linha, como neste exemplo.

  \.asf$ 
  \.asx$ 
  \.avi$ 
  \.au$  
  \.mp3$
  \.ra$ 
  \.ram$ 

ACL mime_type texto

acl testemime req_mime_type texto

Este tipo de ACL não tem relação com a aplicação, procura o "texto" no endereço solicitado, qualquer dia coloco exemplos aqui.

Alguns modelos de ACL para barrar radios e videos.

http://www.fedora.org.br/post13917.html
http://www.izhal.com/phpBB/viewtopic.php?p=5137&sid=784a776ed2cce141322d4c2cd0eaede6

sem cache

Exemplos de ACL para trabalhar sem cache.

  acl semcache urlpath_regex "/etc/squid/semcache.txt" \?
  no_cache deny semcache

No arquivo semcache.txt coloque a lista dos arquivos que não quer fazer cache, neste formato.

  .jpg
  .mp3
  .exe

Indicações

Página principal sobre Squid
http://www.zago.eti.br/squid/A-menu-squid.html

Página principal deste site (FAQ)
http://www.zago.eti.br/menu.html