Palavras compostas no squid (Ubuntu, RedHat e Opensuse)
Autor: Glauber Alexandre | Publicado: 2013-02-12T21:05:00-03:00

Antes de mais nada, nesse post terá palavras que algumas pessoas
possam achar "de baixo calão ou simplesmente palavrão",
para essas pessoas antecipadamente peço desculpas, mas a intenção
não é de propagar nenhuma forma de agressividade mas, sim de
mostrar de forma direta o uso de expressões regulares no squid.


Por muitas vezes temos que criar regras para fazer bloqueio de
palavras dentro do proxy, porém essas palavras podem compor outras
palavras.


Quando instalamos o squid na forma padrão o aplicativo já inicia
trabalhando, basicamente terá (sem os comentários) os seguintes
itens no arquivo /etc/squid3/squid.conf.
Nessa primeira parte do squid.conf teremos as configurações dos
“apelidos” das ACL's (Access Control List), essas regras definem
o comportamento do nosso servidor, irei comentar as linhas
importantes.



acl manager proto cache_object

## Essa acl abaixo informa ao squid que
o endereço IP 127.0.0.1/32 (ipv4) e o ::1 (ipv6) tem acesso ao
servidor

## o item src
é o responsável por definir um endereço ip ou de uma rede para
acesso ao servidor

##
pode-se criar uma acl, com a opção src
para definir por exemplo um computador da 

## gerencia ou direção
com a intenção livre dos
controles de acesso.

acl localhost src 127.0.0.1/32 ::1

acl to_localhost dst 127.0.0.0/8
0.0.0.0/32 ::1



## essas linhas são padrão do squid,
definindo as portas em que ele controlará.

acl SSL_ports port 443

acl Safe_ports port 80          # http

acl Safe_ports port 21          # ftp

acl Safe_ports port 443         # https

acl Safe_ports port 70          # gopher

acl Safe_ports port 210         # wais

acl Safe_ports port 1025-65535  #
unregistered ports

acl Safe_ports port 280         #
http-mgmt

acl Safe_ports port 488         #
gss-http

acl Safe_ports port 591         #
filemaker

acl Safe_ports port 777         #
multiling http

acl CONNECT method CONNECT







## Após as informações das ACL, é
necessário informar o que será feito com elas, é aonde se

## encontra as linhas abaixo, o
http_access definirá se o acesso será liberado (allow) ou negado
(deny)

## é aqui que devemos ter cuidado, pois
quando o squid encontra, o que ele conhece como MISMATCH, ele não
vai acessar o restante do arquivo.

http_access allow manager localhost

http_access deny manager

http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports




http_access allow localhost



## Todas as regras que você for incluir
deverá ser antes dessa linha, por padrão o squid fecha toda a

##  internet, se chegar aqui as regras
anteriores não tiveram controle. A opção http_access
deny all&nbsp; bloqueia
tudo, para liberar toda a internet e fazer bloqueios anteriores mude
essa linha para&nbsp;http_access
allow all



http_access deny all




http_port 3128



coredump_dir /var/spool/squid3




refresh_pattern ^ftp:           1440   
20%     10080

refresh_pattern ^gopher:        1440   
0%      1440

refresh_pattern -i (/cgi-bin/|\?) 0    
0%      0

refresh_pattern
(Release|Packages(.gz)*)$      0       20%     2880

refresh_pattern .               0      
20%     4320




Pronto, com o arquivo padrão em uso
podemos fazer nossas mudanças, vamos trabalhar com toda a internet
bloqueada e vamos fazer liberações de determinados sites. Nossa
mudança será bastante simples, criaremos uma ACL, e depois vamos
fazer um http_access para fazer nossa liberação.

Por recomendação devemos colocar
nossas ACL's após essa linha



acl CONNECT method CONNECT

## nova acl

acl sitesLiberados dstdomain
.google.com.br



## observe que nessa regra usamos o
dstdomain para definir que
esse site esta liberado (existe um

##
“ponto” antes do nome do google.com.br informando que todo o
domínio será controlado, neste

##
caso liberado.




Ao
colocar uma acl devemos informar ao http_access que essa acl deverá
ser permitida, mais uma vez por recomendação devemos colocar essa
regra deve estar antes da linha.http_access deny all.



http_access
allow sitesLiberados

http_access
deny all



neste
formato temos um pequeno problema, se desejamos liberar mais de um
site alem do google.com.br, devemos duplicar a linha, conforme o
exemplo abaixo.

acl sitesLiberados dstdomain
.google.com.br

acl sitesLiberados dstdomain
.terra.com.br

acl sitesLiberados dstdomain
.uol.com.br



o que
pode tornar o arquivo muito grande e de difícil leitura para
posterior manutenção, para resolver isso o squid aceita que esses
domínios possam ficar
dentro de um arquivo, conforme abaixo:



acl
sitesLiberados dstdomain “/etc/squid3/sitesLivres.txt”





o http_access que
já foi definido não precisa modificar, porem o arquivo deverá ser
criado.



vi
/etc/squid3/sitesLivres.txt

dentro desse
arquivo simplesmente colocamos os domínios que devemos liberar

.google.com.br

.terra.com.br

.uol.com.br



Pronto, para
liberar outros domínios simplesmente adicione mais domínios dentro
do arquivo /etc/squid3/sitesLivres.txt e re-inicie o squid. (squid3
-k reconfigure é mais rápido).




Seguindo a mesma ideia podemos fazer
controle de palavras, mãos a obra.



acl palavras url_regex
-i “/etc/squid3/palavrasPriobidas.txt”



neste
caso usamos a opção url_regex
que informa ao squid que se a palavra aparecer na url deve ser tomada
uma ação definida no http_access.



Já no
http_access deve ficar assim.



http_access deny palavras

http_access
allow sitesLiberados

http_access
deny all




Exatamente
como você esta vendo o bloqueio antes da liberação, lembre-se do
MISMATCH que falei acima.




temos
também que criar o arquivo palavrasProibidas.txt,

vi
/etc/squid3/palavrasPriobidas.txt

e
dentro as palavras que você não quer que seja consultada.

sex

sexo

rola




Agora
estamos prontos, para irmos ao tópico principal as palavras
compostas.




Exemplo:
rola → rolamento



Agora vamos a uma situação, você controla a palavra “rola”
evitando assim que um usuário possa pesquisar na rede o seguinte:



o que rola na minha cidade
no google por exemplo.



essas palavras podem conter dentro de uma outra palavra
(composta), vamos agora por "a mão na massa". Para
isso o squid também aceita que as palavras dentro do arquivo tenha
também expressões regulares, neste caso devemos fazer algumas
modificações dentro do arquivo palavrasProibidas e colocar as
palavras assim


sex

sexo


.rola[/?/&amp;]


Neste caso a palavra “rola” será bloqueada somente se ele
vier sozinha e não composta como “rolamento” (essa dica foi
passada pelo nosso amigo Ney
para entrar em contato com ele manda uma e-mail para
vtj@vtjinformatica.com)

IMPORTANTE: TODA VEZ QUE FOR MODIFICADA OS ARQUIVOS (sitesLiberados.txt ou palavrasProibidas.txt) O SQUID DEVERÁ SER RE-INICIADO (squid3 -k reconfigure), essas informações também funcionam no squid versão 2)


bom, como tive problemas de
encontrar algum lugar que me fornecesse essas informações de uma
forma direta passo essa dica para vocês que tem esse tipo de
problema.
Não deixem de comentar se
gostaram
ate a próxima.