Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Artigo

SquidGuard: o bloqueador de listas para o Squid
Linux user
eduardo
13/05/2009
SquidGuard é um redirecionador de URLs usado para a utilização de blacklists com o proxy Squid. Ele é bastante rápido e é uma boa alternativa para quem precisa bloquear muitos sites, mas não toda a rede de internet.
Por: Eduardo Paim Silveira | Blog: http://www.formspring.me/eddiethedrummer
[ Hits: 41856 ]
Conceito: 9.5   4 voto(s)4 voto(s)4 voto(s)4 voto(s)4 voto(s) + quero dar nota ao artigo

Introdução

Os sites não produtivos normalmente tendem a ser a dor de cabeça de todo gerente de TI. Sites de relacionamentos, pornografia, games, entre outros, muitas vezes tiram a atenção do funcionário, normalmente fazendo com que o administrador da rede coloque um proxy e bloqueie tudo, liberando somente o necessário.

Mas se sua empresa precisa acessar muitos sites, uma alternativa é utilizar blacklists (listas negras). As blacklists possuem muitos sites, mas é inviável para se utilizar no Squid (proxy mais utilizado), pois consome muito processamento - mas se for apenas uma lista, não há problemas em utilizar.

A saída é utilizar o Squid em conjunto com o squidGuard. Veremos adiante como instalá-lo e configurá-lo.

Para quem é bom de inglês, recomendo o manual oficial do squidGuard.

Aprendi a utilizar squidGuard por ele, pois não achei artigos bons sobre o assunto. Isso foi o que me fez tentar fazer um artigo decente. Bom, tentar pelo menos...

Os comandos e caminhos podem variar dependendo da sua distribuição e versão do Squid, bem como a maneira que o mesmo foi instalado. Para este artigo me baseei na distribuição Linux Fedora.

Requisitos básicos

Primeiramente você deve ter os Squid instalado. Relaciono alguns artigos que podem ajudá-lo:
Você deve ter também o pacote de compilação GCC para poder compilar o squidGuard. Caso não tenha e utilize o Fedora, utilize o seguinte comando:

# yum install gcc-c++ gcc gcc-gfortran

Para utilizar o squidGuard devemos ter também o Berkeley DB. Ele pode ser baixado no site da Oracle.

Se preferir, baixe-o com o comando:

$ wget http://download.oracle.com/berkeley-db/db-4.7.25.NC.tar.gz

Para instalar, siga os passos:

$ tar zfvx db-4.7.25.NC.tar.gz
$ cd db-4.7.25.NC/build_unix/
$ ../dist/configure
$ make
# make install


Pronto, Berkeley DB instalado.

Vamos aproveitar e baixar o pacotão de blacklists:

# wget http://urlblacklist.com/cgi-bin/commercialdownload.pl?type=download&file=bigblacklist

Você pode optar por alguma outra lista se você quiser, mas essa eu recomendo.

Próxima página >>




Páginas do artigo
   1. Introdução
   2. Instalando o squidGuard
   3. Configuração das regras
   4. Últimos retoques
   5. Conclusão

Outros artigos deste autor

Leitura recomendada

Comentários
[1] Comentário enviado por maran em 13/05/2009 - 12:46h:

Eu já usei e gosto muito deste software!
- Porem ele pode ser um pouco mais configurável, páginas de advertrencia personalizadas e outras coisinhas,
Mais o artigo está bom!
Parabéns!

[2] Comentário enviado por osmano807 em 13/05/2009 - 13:12h:

Poderia ter explicado como faz rewrite com ele, segue meu squidGuard.conf (Windows + Cygwin):

dbhome /usr/local/squidGuard/db
logdir /usr/local/squidGuard/log

src kids {
ip 192.168.0.0/24 # range 10.0.0.0 - 10.0.3.255
}

rew dmz {
s@http://www.altavista.com@http://www.google.com@iR
s@://img[2-9].orkut.com/@://img1.orkut.com/@iR
s@://static[2-9].orkut.com/@://static1.orkut.com/@iR
s@://i[2-9].ytimg.com/@://i1.ytimg.com/@iR
s@.css.int@.css@iR
s@://[2-9]-www.orkut@://1-www.orkut@iR
s@://lh[0-2|4-9].ggpht.com@://lh3.ggpht.com@iR
s@://photos[2-9].hi5.com@://photos1.hi5.com@iR
s@://www.youtube.com/get_video@://192.168.0.1/youtube_video.php@iR
s@://192.168.0.1/youtube_video.php_info@://208.65.153.238/get_video_info@iR
log anonymous rewrite.log
}

dest porn1 {
domainlist shalla/porn/domains
urllist shalla/porn/urls
expressionlist teste/expressions
log anonymous porn1_accesses.log
redirect http://192.168.0.1
}

dest proxy1 {
domainlist shalla/proxy/domains
urllist shalla/proxy/urls
log anonymous proxy1_accesses.log
redirect http://192.168.0.1
}

dest adv1 {
domainlist shalla/adv/domains
urllist shalla/adv/urls
log anonymous adv1_accesses.log
redirect http://192.168.0.1/blank.html
}

dest downloads1 {
domainlist shalla/downloads/domains
urllist shalla/downloads/urls
log anonymous downloads1_accesses.log
redirect http://192.168.0.1
}

dest tracker1 {
domainlist shalla/tracker/domains
urllist shalla/tracker/urls
log anonymous tracker1_accesses.log
redirect http://192.168.0.1
}

dest spyware1 {
domainlist shalla/spyware/domains
urllist shalla/spyware/urls
log anonymous spyware1_accesses.log
redirect http://192.168.0.1
}

dest warez1 {
domainlist shalla/warez/domains
urllist shalla/warez/urls
log anonymous warez1_accesses.log
redirect http://192.168.0.1
}

#################Comeco da URLBlacklist.com

dest adv2 {
domainlist urlblack/ads/domains
urllist urlblack/ads/urls
expressionlist urlblack/ads/expressions
log anonymous adv2_accesses.log
redirect http://192.168.0.1/blank.html
}

dest filehosting2 {
domainlist urlblack/filehosting/domains
urllist urlblack/filehosting/urls
log anonymous filehosting2_accesses.log
redirect http://192.168.0.1
}

dest porn2 {
domainlist urlblack/porn/domains
urllist urlblack/porn/urls
expressionlist urlblack/porn/expressions
log anonymous porn2_accesses.log
redirect http://192.168.0.1
}

dest proxy2 {
domainlist urlblack/proxy/domains
urllist urlblack/proxy/urls
log anonymous proxy2_accesses.log
redirect http://192.168.0.1
}

dest spyware2 {
domainlist urlblack/spyware/domains
log anonymous spyware2_accesses.log
redirect http://192.168.0.1
}

dest virusinfected2 {
domainlist urlblack/virusinfected/domains
urllist urlblack/virusinfected/urls
log anonymous virusinfected2_accesses.log
redirect http://192.168.0.1
}

dest warez2 {
domainlist urlblack/warez/domains
urllist urlblack/warez/urls
log anonymous warez2_accesses.log
redirect http://192.168.0.1
}

dest white {
domainlist urlblack/whitelist/domains
urllist urlblack/whitelist/urls
expressionlist white/expressions
}

dest youtube {
urllist youblock/urls2
}

dest orkut {
expressionlist orkut/orkut
redirect http://192.168.0.1/orkut_redir.php?url=%u
log anonymous orkut.log
}

dest adver {
expressionlist ads/squid.adservers
redirect http://192.168.0.1/blank.html
log anonymous adver.log
}

#########ACL Global

acl {

#default {
#pass !adv1 !adv2
#redirect http://192.168.0.1/blank.html
#}


default {
rewrite dmz
pass !adver !porn1 !proxy1 !downloads1 !spyware1 !warez1 !filehosting2 !proxy2 !spyware2 !virusinfected2 !warez2 all white youtube
}

}


Essas regras rewrite são muito boas
Exemplo:
s@://static[2-9].orkut.com/@://static1.orkut.com/@iR
Redireciona tudo static[2-9] para static1, ou seja, ajuda o squid a fazer o cache certo

[3] Comentário enviado por eduardo em 13/05/2009 - 14:57h:

A idéia era fazer algo mais básico, só para instalação mesmo. Depois acabei botando um exemplo de conf, para complementar. Mas obrigado pela dica. Quem sabe eu penso em algo e posto como dica.

Abraços.

[4] Comentário enviado por wagner_guitar em 08/07/2009 - 12:49h:

Gostaria de saber se tem como eu configurar uma lista de ip's para bloquear pelo squid...
Tipo assim, eu num posso fazer uma lista de url's para bnloquear ?!!


acl proibido url_regex "/etc/squid/proibido.cfg"
http_access deny proibido
E no arquivo proibido.cfg conter algumas url's, tipo : "www.orkut.com" "www.microsoft.com" ...

Gostaria de saber se posso criar um arquivo com uma lista de ip's a serem bloqueados.
Se sim como seria??
Qual o tipo de acl ?
E tem algum parametro?

Vlw.


[5] Comentário enviado por eduardo em 08/07/2009 - 14:19h:

@wagner_guitar

Sim cara, você pode bloquear antes. Dessa forma como você fez vai funcionar. Mas saiba que só funciona para bloquear. Entenda que o squid vai ler suas regras, vai chegar no http_access allow all, depois ele vai entrar no squidGuard. Mas caso tu bloqueie algo já no squid, ele bloqueia na hora.

Abraço

[6] Comentário enviado por guilx em 27/07/2009 - 12:24h:

Em qual lugar do squid.conf colocar a linha redirect_program /usr/bin/squidGuard -c /usr/local/squidGuard/squidGuard.conf ?


E eu removo todas as acl do squid ???? e deixo liberado tudo ?????


Valew




[7] Comentário enviado por eduardo em 27/07/2009 - 13:47h:

Você pode buscar pela linha, ou coloca no fim do arquivo mesmo. Ou até antes de começar as acls. Algumas versões do squid é rewrite_program. De acordo com o site do squidGuard, seria isso. No meu squid era redirect_program.


Sobre as acls, as default você deixa. Remove só as que talvez você havia criado. E deixa tudo liberado.

É bom entender o seguinte:
Quando o usuário acessar um site, e utilizar o proxy, ele vai passar primeiro pelo squid.conf. Se tiver alguma regra bloqueando, já para por ai. Se não tiver, cai na default que libera tudo e se tiver alguma regra de liberação ele libera. Porém, diferente da regra de bloqueio, ele continua adiante para passar pelo squidGuard, onde haverá as listas. Ou seja, você libera tudo com squid.conf e bloqueia (e faz eventuais bloqueios) com o squidGuard. E se há algo que você queira bloquear que não esteja bloqueando, você pode optar por criar uma acl debloqueio (antes da liberação total) no próprio squid.conf.

É meio confuso, mas quando você entender é barbada. Só entenda que o squidGuard é apenas um tipo de filtro que o squid manda antes de dizer se pode ou não tal site ser acessado.

Abraços

[8] Comentário enviado por hungaro em 21/09/2009 - 16:30h:

Boa tarde!

Galera depois de muitas tentativas desisti e resolvi pedir ajuda pra vcs, meu server é um ubuntu 9, olhando o log do squid (cache.log) diz:

ipcCreate: /var/lib/squidguard: (13) Permission denied

jah dei permissão ao usuario proxy: chown -R proxy:proxy /var/lib/squidguard
chmod 775 /var/lib/squidguard ( até o 777 eu jah tentei )

depois disso: squid -D
squid -z
squid -k reconfigure

e mesmo assim nda, alguem ja teve esse problema?



[9] Comentário enviado por alisonn em 19/11/2009 - 07:37h:

cara fiz o esquema de ficar sem usuario como no passo a passo porem quando dou o comando make install aparece o seguinte erro

Installing squidGuard
cp: cannot create regular file `/usr/local/bin/squidGuard': Text file busy
make: *** [install-build] Error 1

ja instalei outra versão e nada

pode ate ser coisa boba, porem sou novo em linux e nao consigo msm

Desde já obrigado...

[10] Comentário enviado por eduardo em 19/11/2009 - 08:20h:

Antes de dar o make install você deu o make, certo? Você dá um make, e depois o make install.
Se você não tem o usuário squid, ele vai dar erro, e é ai que você troca o dono da pasta.

[11] Comentário enviado por alisonn em 19/11/2009 - 09:04h:

isso mesmo, dei o make antes e depois make install ai deu o erro
ai fiz como no passo a passo

chown nobody:nobody /usr/local/squidGuard-1.4/ -R
em seguida o make install novamente..
msm assim dá o erro



[12] Comentário enviado por eduardo em 19/11/2009 - 09:38h:

A idéia é que ele tenta criar dois subdiretórios dentro do /usr/local/squidGuard, mas ele não tem permissão. Pra cada arquivo que ele tentar criar, vai dar erro, e é necessário trocar o dono dos diretórios. Se você olhar o erro, cada vez é mostrado para um arquivo/diretório diferente. É necessário fazer isso umas três vezes, se não me engano.
Mas coloque o erro para vermos se ele está chegando nessa parte.
Note que isso ocorre quase quando o make install está acabando.

[13] Comentário enviado por alisonn em 19/11/2009 - 10:30h:

quando eu dou o make aparece isso:

making all in squidGuard-1.4
make[1]: Entering directory `/etc/squidGuard-1.4/src'
making all in src
making squidGuard in src
make[1]: Leaving directory `/etc/squidGuard-1.4/src'
make[1]: Entering directory `/etc/squidGuard-1.4/test'
making all in test
making all in test
make[1]: Leaving directory `/etc/squidGuard-1.4/test'
make[1]: Entering directory `/etc/squidGuard-1.4/samples'
making all in samples
make[1]: Leaving directory `/etc/squidGuard-1.4/samples'
make[1]: Entering directory `/etc/squidGuard-1.4/contrib'
making all in contrib
make[1]: Leaving directory `/etc/squidGuard-1.4/contrib'

obs, mudei o local de instalação pra ver se tinha alguma coisa a ver mais msm coisa...



[14] Comentário enviado por eduardo em 19/11/2009 - 13:25h:

Certo, mas você tem problemas no make ou no make install? Não vi nenhum erro acima. Ou seja, o make funciona, certo? Mostra o make install.

[15] Comentário enviado por alisonn em 23/11/2009 - 07:55h:

o make install da o seguinte erro

oot@localhost squidGuard-1.4]# make install
Installing squidGuard
cp: cannot create regular file `/usr/local/bin/squidGuard': Text file busy
make: *** [install-build] Error 1



[16] Comentário enviado por eduardo em 23/11/2009 - 14:40h:

Verifique se existe os o diretório /usr/local/bin e se há permissões para escrever nele. O mesmo para o /usr/local/bin/squidGuard

[17] Comentário enviado por cesar em 25/08/2011 - 08:01h:

Muito bom,

Gostei, parabéns!

[]'s

[18] Comentário enviado por samusrt em 03/05/2012 - 19:18h:

Olá, estou voltando para a profissão após 2 anos.. gostaria de saber se o squidGuard ainda é a opção mais rápida e fácil para trabalhar com bloqueio de páginas.

Fiz um servidor com o Debian 6 e estou testando/atualizando alguns scripts.

[19] Comentário enviado por eduardo em 04/05/2012 - 08:29h:

@Samusrt Samuel, o squidGuard ainda é ótimo para ser utilizado. Mas ele é uma boa opção caso você utilize as "listas de sites". Caso contrário, acredito não valer a pena o trabalho, pois o squid por si só dá conta do recado.


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.