segunda-feira, 9 de fevereiro de 2009

Squid - parte 2

Filtrando acessos com Squid


Uma das obrigações de um Administrador de Sistemas em alguns ambientes é controlar o que deve ou não deve ser acessível na internet a partir da rede interna.


Criando as acl's (access control list's)


As acl's são listas de controle de acesso onde pode facilitar muito a administração do arquivo de configuração, por exemplo, imagina o administrador tendo que escrever 1000 palavras que serão bloqueadas, url's que surgem a cada dia, liberar novas url's que por ventura venham ser bloqueadas, conhecidas como falso positivo. As acl's neste caso facilitam muito na administração, pois basta criar uma arquivo, inserir o que se deseja bloquear ou liberar e indicar o mesmo no arquivo de configuração.


# mkdir acl

# cd acl

# touch palavras_bloqueadas.acl

# touch extensoes_bloqueadas.acl

# touch url_bloqueadas.acl

# touch url_liberadas.acl

# touch url_trabalho.acl

# touch url_horario.acl


Com um editor de texto de sua escolha insira as seguintes linhas


# vi squid.conf


acl rede src 192.168.0.0/24

acl url_bloqueadas dstdomain "/etc/squid/acl/url_bloqueadas.acl"

acl url_liberadas dstdomain "/etc/squid/acl/url_liberadas.acl"

acl url_trabalho dstdomain "/etc/squid/acl/url_trabalho.acl"

acl palavras_bloqueadas dstdom_regex -i "/etc/squid/acl/palavras_bloqueadas.acl"

acl extensoes_bloqueadas url_regex -i "/etc/squid/acl/extensoes_bloqueadas.acl"


dstdomain e url_regex - Quanto ao dstdomain e url_regex, o dstdomain vc bloqueia um domínio (.orkut.com), e o url_regex você bloqueia por pedaços da URL. Por exemplo se vc quer bloquear o dominio todo do terra, você pode usar o dstdomain colocando ".terra.com.br". Mas se vc quiser bloquear todos os portais que tenham CHAT, você bloqueia no URL_REGEX a palavra chat, aí ele bloqueia o chat do Terra, do Uol, da Globo, etc.. (Terra Chat, Bate-papo UOL, etc.)
Em suma, dstdomain bloqueia DOMINIOS, url_regex bloqueia PALAVRAS contidas na url toda.


dstdom_regex - O uso desta regra é um pouco mais problemático, pois bloqueará todas páginas que contenham qualquer uma das palavras listadas na URL. Esta opção sempre levará a alguns falsos positivos e por isso deve ser usada com mais cuidado.

Uma vantagem é que ela permite bloquear facilmente páginas dinâmicas, onde a palavra é passada como parâmetro da URL. Um exemplo é o Orkut, onde, depois da transferência para o Google, os domínios principais passaram a encaminhar para URLs dinâmicas dentro do domínio do Google, como em:

https://www.google.com/accounts/ServiceLogin?service=orkut&continue=http%3A%2F%2Fwww.orkut.com%2FRedirLogin.aspx%3Fmsg%3D0%26page%3Dhttp%253A%252F%252Fwww.orkut.com%252FHome.aspx&hl=pt-BR&rm=false&passive=true

Você não poderia simplesmente bloquear o domínio "google.com" usando uma regra url_regex, mas poderia muito bem usar o dstdom_regex para bloquear a palavra "orkut" e assim bloquear o acesso ao site sem bloquear o acesso a outros serviços do Google.


-i - Indica que não será respeitado o case-sensitive.


http_access deny !rede

http_access deny rede url_bloqueadas

http_access deny rede palavras_bloqueadas

http_access deny rede extensoes_bloqueadas

http_access allow rede url_trabalho

# libera tudo pra rede exceto as url_bloqueadas e palavras_bloqueadas

http_access allow rede !url_bloqueadas !palavras_bloqueadas

http_access allow rede url_liberadas

http_access allow rede

http_access deny all

icp_access allow all



Salve e saia do arquivo de configuração


É necessário preencher as acl's antes de reiniciar o squid, use um editor de texto de sua preferencia e preencha cada arquivo antes criado.


# echo “.jpeg$” > extensoes_bloqueadas.acl

# echo “.microsoft.com” > url_bloqueadas.acl

# echo “.orkut.com” > url_horario.acl

# echo “.bb.com.br” > url_trabalho.acl

# echo “.caixa.com.br” >> url_trabalho.acl

# echo “sexo” > palavras_bloqueadas.acl

# echo “sexy” >> palavras_bloqueadas.acl


A mensagem abaixo é mostrada quando é encontrado uma acl vazia.


# squid -k parse

2009/02/05 00:19:39| aclParseAclLine: WARNING: empty ACL: acl url_liberadas dstdomain "/etc/squid/acl/url_liberadas.acl"

2009/02/05 00:19:39| ACL name 'autenticados' not defined!

FATAL: Bungled squid.conf line 48: http_access allow autenticados

Squid Cache (Version 2.6.STABLE18): Terminated abnormally.


Preencha a acl e reconfigure o squid.


# squid -k parse

# squid -k reconfigure

0 comentários: