Este artigo mostra como configurar um proxy com um potente controle de conteúdo. URLs, sites, palavras ou conjunto de palavras e até vírus dentro de um site podem ser filtrados. A melhor maneira de proteger seus usuários é protegê-los deles mesmos, não os deixando trazer vírus e materiais danosos à sua rede.
Claro que você deve adaptar para suas necessidades.
$ make
$ su
# make install
OBS: O Squid estará preparado para fazer autenticação NTLM,
Basic e Basic via Samba/winbind, que no próximo artigo eu falo
como utilizar com o DansGuardian.
Diretorios da instalação:
Configuração -> /etc/squid
Shared -> /usr/local/share/squid
Bin dir -> /usr/local/bin
Sbin dir -> /usr/local/sbin
Libexec (helpers) -> /usr/local/libexec
Man -> /usr/share/man
Não vou falar da configuração do Squid.
Verifique se o Squid está funcionando corretamente.
Depois altere o seguinte parâmetro no squid.conf:
http_port
para:
http_port 127.0.0.1:3128
Isso fará o Squid escutar apenas no loopback, ou seja,
ninguém conseguirá acessar o Squid, apenas o DansGuardian
fará isso.
O parâmetros mais importantes são (dansguardian.conf):
filterport = 8080 (a porta que o DansGuardian irá escutar)
proxyip = 127.0.0.1 (ip do Squid, no nosso caso o loopback)
proxyport = 3128 (a porta do seu Squid, no nosso caso 3128)
Agora que temos tudo instalado, vou explicar o que cada arquivo
no diretório do DansGuardian faz.
Nota: Tudo o que começar com "banned" são arquivos de negação e
tudo que começar com "exception" são arquivos de exceções.
bannedextensionlist -> Lista de extensões de arquivos bloqueados;
bannediplist -> Lista de ips (da sua rede) bloqueados (ips sem acesso a internet);
bannedmimetypelist -> Tipo MIME bloqueados (download bloqueado);
bannedphraselist -> Lista de frases banidas dentro da página (e não na URL);
bannedregexpurllist -> Lista de expressões regulares bloqueadas*;
bannedsitelist -> Lista de sites bloqueados**;
bannedurllist -> Lista de URLs bloqueados**;
banneduserlist -> Lista de usuários (da sua rede) bloqueados;
contentregexplist -> Conteúdo baseado em expressões regulares que serão substituídos***;
dansguardian.conf -> Arquivo de configuração principal;
dansguardianf1.conf -> Arquivo de configuração de grupos de usuários;
exceptioniplist -> Exceção de ips filtrados (ips da sua rede que não serão filtrados);
exceptionphraselist -> Lista frases que são exceção;
exceptionsitelist -> Lista de sites que são exceção;
exceptionurllist -> Lista de urls que são exceção;
exceptionuserlist -> Lista de usuários (da sua rede) que são exceção;
filtergroupslist -> Definição dos grupos de usuários;
greysitelist -> Sites que estão na lista cinza;
greyurllist -> URLs que estão na lista cinza;
pics -> Definição do PICS Labeling;
weightedphraselist -> Lista de frases/palavras e seus "pesos" (os pesos podem ser positivos ou negativos).
Não pense duas vezes, LEIA TODOS OS ARQUIVOS DE CONFIGURAÇÃO.
Isso ajudará a entender melhor a lógica de funcionamento do
DansGuardian.
* Mantenha este arquivo pequeno, com o mínimo de regras possíveis,
se você não sabe o que é regex (expressões regulares),
aconselho a manter este arquivo vazio. Ele bloqueia URLs da seguinte
maneira:
No arquivo existe a expressão "anal", então ele bloqueia tudo que
tenha "anal", como analítico, canal, sexoanal, etc.
A possibilidade de ter um falso-positivo é enorme, por isso use o
mínimo de regras aqui.
** Sites e URLs são tratados de maneiras completamente diferentes,
observe os exemplos:
http://www.playboy.com.br --> Site: Isto é, qualquer coisa dentro
deste site será bloqueado (até as piadas!)
http://www.terra.com.br/sexo --> URL: Isto é, apenas esta parte
do site (URL) será bloqueada.
*** Isso é interessante para barrar popups, ActiveX, músicas de
fundo (AAAARRRG!), etc.
Sabendo disso, basta editar o arquivo dansguardian.conf e
ajustá-lo para sua realidade.
Uma dica: Para colocar vários "perfis" de acesso, basta editar o
arquivo filtergroupslist e criar um dansguardianfx.conf,
onde "x" representa o grupo dos usuários.
Exemplo:
Tenho 400 pessoas na empresa, 2 delas precisam fazer download, 1
precisa acessar páginas de sexo(???) e o restante não pode fazer
nada de diferente.
No arquivo filtergroupslist coloco o seguinte:
huguinho=filter2
zezinho=filter2
luizinho=filter3
E crio 3 arquivos dansguardianfx.conf
dansguardianf1.conf -> Restrição geral;
dansguardianf2.conf -> Permito download;
dansguardianf3.conf -> Permito páginas de sexo.
Vale lembrar: O DANSGUARDIAN NÃO FAZ AUTENTICAÇÃO DE USUÁRIO,
este é um papel do SQUID!!!!
Ele apenas utiliza a autenticação do Squid OK?
Não vou me aprofundar nos arquivos de configuração, estão
todos muito bem documentados e comentados linha-a-linha.
Os parâmetros mais interessantes são:
reportinglevel = 3 (manda o usuário barrado para a URL
abaixo e explica o por quê da negação, usando um template)
[1] Comentário enviado por fabio em 15/01/2005 - 01:00h
Excelente artigo Allan, meus parabéns.
Agora uma curiosidade, seguindo a linha das cores, whitelist, blacklist, o correto não seria GRAYlist ao invés de greylist? Pior que procurei no Google e realmente todas as referências são de grey com E.
Se tiver algum expert em inglês, grey também é correto ou foi falha do pessoal do DansGuardian ao dar nomenclatura mesmo?
[3] Comentário enviado por allangood em 17/01/2005 - 10:18h
Obrigado pelo elogio.
Referente ao grey, ele significa cinzento, e está correto sim. O autor original do DG, Daniel Barron, é americano, não acredito que ele tenha escrito errado! rsrsrs. :)
Até mais.
P.S.: Umá dúvida que me foi reportada: Para habilitar a filtragem de vírus é necessário aplicar o patch do AV (DGAV) que se encontra no site do Aecio f. Neto, em: http://www.harvest.com.br/asp/afn/dg.nsf
Obs.: Lá existe o patch e o tar.gz com o patch já aplicado. Para quem gosta de evitar stress, baixe o tar.gz completo.
[4] Comentário enviado por junior_87 em 17/01/2005 - 11:42h
Olá, estou tendo um erro na hora de rodar o make install eu uso uma distribuição pouco conhecida o trustix ver 2.0, vejam o erro que ocorre:
chmod u+wrx /var/log/dansguardian/
if [ -f /sbin/chkconfig ]; then /sbin/chkconfig --add dansguardian; fi
error reading information on service dansguardian: No such file or directory
make: *** [install] Error 1
Alguém pode me ajudar?
[5] Comentário enviado por flipe em 17/01/2005 - 12:20h
você disse que o squid não é 100% eficiente em fazer filtragem pq se o usuario colocar ao invés de '.zip' colocar '%122ip' ele fara o download normalmente....
o dansguardian consegui reconhecer essa diferença?
e outro coisa...
me parece, como tu mesmo disse, isso é para evitar que os própios usuarios destruam a rede :D, mas quantos 'usuarios' sabem que %122 na tabela ASCii é equivalente a letra 'z'.
contando o restante do artigo, excelente!!!
e ficarei no aguardo da outra parte do documento!!
[6] Comentário enviado por allangood em 17/01/2005 - 12:38h
Obrigado pelo elogio flipe.
Respondendo: o DG verifica não só a URL (como o Squid e os redirecionadres, tipo o squidGuard) ele verifica o conteúdo (MIME inclusive). Por exemplo, se você falou que não pode baixar .ZIP e alguem renomear de .ZIP para .XXX ele verificará pela tipo do arquivo (quase como o comando file faz) e não apenas pelo seu nome.
Exatamente, filtros servem para proteger os usuários deles mesmos... O perigo não são os que não conhecem os segredos e artimanhas, o perigo são aqueles que sabem... A pior forma de segurança é a obscuridade (não revelar suas falhas), porque cedo ou tarde elas vão aparecer. Exemplo vivo disso é a própria MicroSoft... :) que joga seu lixo para debaixo do tapete.
Lembre-se que aprender é muito fácil. Um usuário quando quer alguma coisa... ele dá um jeito!
[12] Comentário enviado por sk em 28/02/2005 - 21:52h
Para configurarar o dansguardian com o squid em modo transparente substitua a regra similar a esta : iptables -t nat -A PREROUTING -i eth1 -s 192.168.13.0/24 -d any/0 -p tcp --dport 80 -j REDIRECT --to 3128 ( eth1 é a iface da rede interna) por: iptables -t nat -A PREROUTING -i eth1 -s 192.168.13.0/24 -d any/0 -p tcp --dport 80 -j REDIRECT --to 8080
[13] Comentário enviado por reimassupilami em 10/03/2005 - 11:14h
cara, bom o artigo hein... esse dansguardian tem funcionalidade pra caramba... estou implementando aki aquele outro artigo seu sobre o p3scan, e em seguida vou partir pra esse aki...
me diga uma coisa, no artigo você não fala nada sobre a configuração do antivirus... pq?
[14] Comentário enviado por reimassupilami em 10/03/2005 - 11:33h
tive o mesmo problema que o junior_87:
if [ -f /sbin/chkconfig ]; then /sbin/chkconfig --add dansguardian; fi
error reading information on service dansguardian: No such file or directory
make: *** [install] Error 1
[15] Comentário enviado por allangood em 10/03/2005 - 14:59h
reimassupilami:
O junior_87 teve este problema por ter usado EXATAMENTE as mesmas configurações que eu postei aqui como exemplo. Este erro acontece na hora de instalar os scripts de inicialização (no arqtigo eu apontei para o /tmp) e isso eralmente gera erro, aponta pro /etc/rc.d/ ou /etc/init.d/ (depende da sua distro)
Eu não falei nada sobre o antivírus por não ter muita coisa a dizer. A configuração é super simples e os arquivos de configuração são auto-explicativos. A única diferença (real) é um parâmetro a mais no dansguardian.conf.
Mas está saindo uma nova versão do DG (2.9) com algumas funcionalidades a mais. Prometo que quando ela estiver pronta, faço um artigo mais detalhado Ok? Até mais.
[16] Comentário enviado por aura em 17/03/2005 - 21:59h
Olá
Artigo legal em...
Eu realizei a implementação do dansguardian, mas não estou conseguindo configurar uma maquina para fazer download...
Apenas consigo se coloco o ip da mesma no arquivo exceptioniplist.
mas desta forma estou liberando todo o acesso desta maquina para a internet.
Sabe como posso fazer isso?
Obrigado
[17] Comentário enviado por allangood em 18/03/2005 - 10:06h
O DG não implementa ACLs como o Squid... tratar este tipo de excessão é mais complicado. Você pode configurar grupos com configurações diferentes para resolver o seu problema. Tanto no artigo como nos arquivos de configuração do DG mostra como fazer isso. Procure por grupos ok?
[18] Comentário enviado por kakaroto em 14/06/2006 - 19:43h
Ola allangood,
Muito bom seu artigo, parabéns! instalei usando seu tutorial e funcionou perfeitamente soh estou com uma dúvida, em relação a configuração pelo que percebi o dansguardian para fazer um filtro mais minuscioso precisaria que meu squid fosse autenticado, ai fiz alguns teste no arquivo filtergroup coloquei o ip da minha maquina e o "perfil" filter2
192.168.1.167=filter2
aparentemente funcionou, agora para o dansguardian me atender com completo queria saber se dah para fazer por rede tipo
[19] Comentário enviado por allangood em 15/06/2006 - 02:08h
Olá kakaroto, a versão "stable" do DG (2.8) não implementa isso, mas se quiser ver um monte de funcionalidades novas (a que procura inclusive) baixe a versão "alpha" mais nova em http://www.dansguardian.org
[20] Comentário enviado por rilen em 07/07/2006 - 15:25h
Qual a melhor solução usando Squid com DG, caso o usuário venha baixar músicas ou programas, que seja mostrada a autenticação para prosseguir download.
Foi aplicados vários filtros (1 = Enxuto sem downloads; 2 = Enxuto com downloads de documentos; 3 = Enxuto com downloads; 4 = liberado), o DG demonstrou sua eficiência e versatilidade, porém penou ao descobrir que tinha que instalar XForward para que os dois (Squid e DG) possa tornar se em "uma carne só"!
Mesmo configurado XForward, o Squid somente trabalha na rede "localhost", dando mais resultados negativo sobre autenticação por downloads e também foi dificultado fazer controle por banda, afinal de contas, como vai limitar vários ip's se o Squid só existe um "localhost"?
Tenho esperança pela luz há bastante tempo, abraços galera!
[21] Comentário enviado por allangood em 07/07/2006 - 15:58h
Hehehe... legal essa de "uma carne só"...
Bem, com patch xff o Squid reconhece o endereço do usuário e não mais "localhost". Para isso, seu DG deve habilitar o envio do x-forwarded-for, verifique dentro do arquivo de configurações ok?
Dentro do dansguardian.conf coloque "forwardedfor = on". Se o patch tiver sido aplicado de forma correta, o Squid irá funcionar exatamente como você espera!
[22] Comentário enviado por freitasrdf em 11/08/2006 - 15:03h
O dansguardian não esta identificando os usuarios como eu resolvo isso??
Obs.: O programa é excelente, só tive que fazer uma alteraçoes para rodar no Mandriva ( '-user-' )
[26] Comentário enviado por memaster em 21/08/2006 - 23:42h
Opa seu artigo ficou realmente bom, mais estou com um problema de novato na área q naum consigo destrinxar... olha soh, estou testando o Squid+DG+CLamav no slack 10.2 com kernel 2.4.31, o porem eh que quando vou acessar uma página ele me retorna a página de teste do apache... (putz q mico) bom sei que eh rateio meu, pois quando naum se acha em lugar algum como resolver um erro, tem-se 2 motivos ou o erro eh muito dificil de ser contornado, ou eh taum babaca q ninguem tem corajem de perguntar e acaba resolvendo de cabeça fria.... hehe, mais como ainda naum tive sucesso e eh minha primeira implementação tando de squid quando de DG, decidi dar a cara a tapas e perguntar... alguem sabe o pq disso???
[27] Comentário enviado por freitasrdf em 23/08/2006 - 10:43h
Voce esta direcionando a pagina de erro do dansguardian, para a do apache, esta pagina que normalmente fica em ../dansguardian/languages/Portuguese/template, mexe la no dansguardian.conf procure esta opção ela deve estar apontando para o seu ip ou o localhost
[28] Comentário enviado por jgama em 28/08/2006 - 23:19h
olá galera, realmente o artigo foi muito bem feito, mas como ainda sou inexperiente, e cada dia procuro melhorar o meu aprendizado, regarcei as mangas.
Tenho um problema
Quando starto o squid não aparece nenhuma menssagem de erro no console, mas também não estarta, verificando nos log, tem este erro:
2006/08/28 23:11:55| WARNING: basicauthenticator #2 (FD 13) exited
2006/08/28 23:11:55| Too few basicauthenticator processes are running
2006/08/28 23:11:55| storeDirWriteCleanLogs: Starting...
2006/08/28 23:11:55| Finished. Wrote 0 entries.
2006/08/28 23:11:55| Took 0.0 seconds ( 0.0 entries/sec).
FATAL: The basicauthenticator helpers are crashing too rapidly, need help!
Squid Cache (Version 2.5.STABLE14): Terminated abnormally.
CPU Usage: 0.080 seconds = 0.060 user + 0.020 sys
Maximum Resident Size: 0 KB
Page faults with physical i/o: 408
Memory usage for squid via mallinfo():
total space in arena: 2125 KB
Ordinary blocks: 2093 KB 5 blks
Small blocks: 0 KB 0 blks
Holding blocks: 200 KB 1 blks
Free Small blocks: 0 KB
Free Ordinary blocks: 32 KB
Total in use: 2293 KB 108%
Total free: 32 KB 2%
unknown helper protocol []
[29] Comentário enviado por freitasrdf em 29/08/2006 - 08:24h
Bem quanto ao /etc/dansguardian voce deveria compilar com isso aqui --sysconfdir=/etc/dansguardian/
E sobre o NTLM_auth, parece estar faltando este modulo no squid, ele devera estar em /etc/squid/ntlm_auth
É o que eu posso dizer sem ver seu squid.conf.
O meu está desta forma, se puder me ajudar fico agradecido, ele está rodando numa boa, sem erros, mais não faz nada hehe.. Se puder ajudar, fico agradecido.