Filtro de conteúdo e vírus: Slackware 10.2 + Squid + Dansguardian + Clamav
Neste artigo será abordada a implementação de um sistema de filtro de conteúdo de modo a proteger os usuários de páginas maliciosas, com vírus ou conteúdo impróprio. Será tratada a instalação em um Slackware 10.2, mas como instalaremos todos os pacotes necessários a partir do fonte, esse artigo pode ser facilmente adaptado à outras distribuições.
Foi utilizado como distro o Slackware 10.2 com kernel 2.4.31 (original), como ambiente de testes foram "montadas" duas máquinas virtuais usando vmware, para que pudesse ter uma "rede" a parte da rede da empresa para testes antes da implementação real da solução.
Este tipo de implementação é ideal para empresas, escolas, e demais instituições, onde o acesso a internet deve ser restrito a conteúdo adequado, não permitindo o acesso a páginas de pornografia, cracks, hackers, chats e o que mais for necessário. O Dansguardian (software responsável pela filtragem de conteúdo) tem uma bela blacklist padrão, detalhe, esta é configurável como veremos mais adiante, assim podemos classificar com facilidade o que terá passagem livre e o que será barrado.
Softwares utilizados:
Foram todos baixados na última versão estável na data de instalação, se quando você for implementar essa solução algum pacote já estiver disponível em outra versão mais nova e estável, opte pela mais nova.
#1Comentário enviado por herloncamargo em 27/09/2006 - 09:35h
Oi Márcio,
Muito bom seu artigo.
Pessoal, alguém já usou ou testou o Dansguardian e o Squidguard, e que poderia fazer um paralelo dos dois, principalmente em termos de desempenho? Tenho que implantar um dos dois numa rede. Eu só testei o Squidguard e funcionou normalmente, com bom desempenho. Mas o projeto dele parece que está meio parado, além dele ter menos recursos extras do que o Dansguardian.
#2Comentário enviado por removido em 27/09/2006 - 10:25h
Uso o squid e Dansguardian num celeron 466 com 188MB de RAM e não senti nada de anormal até hoje.
Se vc terá um computador com um processador decente e boa quantidade de RAM, não terá problemas também...
=======================
Só uma pequena correção: o squid deverá ser iniciado com a string squid -D pois se esquecerem do "-D" ele ficará procurando servidor de DNS e nãoinicializa (pelo que me recordo do slack que usei como servidor) e a opção -D justamente permitirá a inicialização do squid semconexão à internet.
#3Comentário enviado por mateusk em 27/09/2006 - 11:48h
Parabéns Márcio, o artigo foi providencial para mim... ainda não implementei o meu filtro aqui, mas as suas dicas com certeza me serão úteis.
Tinha lido sobre o Dansguard dois dias, ainda não o conhecia... então o artigo veio em ótima hora :)
#4Comentário enviado por memaster em 27/09/2006 - 12:58h
Obrigado a todos pelo crédito ao artigo, estou disposto a sanar quaisquer dúvidas com relação ao mesmo. Quando ao comentário do nosso amigo acvsilva, gostaria de que desse mais uma olhada no arquivo rc.squid, o qual passo no artigo como sendo o responsável pela inicialização do squid, e no qual é utilizada a opção "-D", mesmo assim agradeço a observação. vlw a todos.
#5Comentário enviado por jcg.gava em 27/09/2006 - 22:51h
Boa noite Galera.
Cara você fez um how-to muito excelente !... adorei, e vou implementa-lo a um servidor da empresa que estou trabalhando. Obrigado. E continuemos assim =) ...
#6Comentário enviado por tpramos em 28/09/2006 - 11:28h
Nussa até que enfim achei outra pessoa que usa o dansguardian...
Esse software é muito bom para controle de conteudo.. e a cada mês eles acrescentam novas funcionalidades...
Parabéns pelo artigo...
#7Comentário enviado por nick em 28/09/2006 - 14:40h
OI Marcio!
Tudo correeu normalmente aki, até a hora de compilar o Dansguardian. POrem, na hora do "make", deu esse pau doido aki.
g++ -o dansguardian -O2 -DPROXYUSER=\"squid\" -DCONFFILELOCATION=\"/etc/dansguardian/dansguardian.conf\" -lz -I/usr/local/include -pthread ClamAV.o VirusEngine.o VirusScanner.o TrickleHandler.o String.o OptionContainer.o FDTunnel.o ConnectionHandler.o DataBuffer.o HTTPHeader.o NaughtyFilter.o RegExp.o Socket.o FatController.o UDSocket.o SysV.o ListContainer.o Ident.o HTMLTemplate.o LanguageContainer.o DynamicURLList.o ImageContainer.o FOptionContainer.o ListManager.o md5.o -pthread -L/usr/local/lib -lesmtp -ldl /usr/lib/libz.a dansguardian.cpp
ClamAV.o(.text+0x14): In function `ClamEngine::loadEngine()':
: undefined reference to `cl_retdbdir'
ClamAV.o(.text+0x30): In function `ClamEngine::loadEngine()':
: undefined reference to `cl_loaddbdir'
ClamAV.o(.text+0x42): In function `ClamEngine::loadEngine()':
: undefined reference to `cl_perror'
ClamAV.o(.text+0x78): In function `ClamEngine::loadEngine()':
: undefined reference to `cl_build'
ClamAV.o(.text+0x80): In function `ClamEngine::loadEngine()':
: undefined reference to `cl_statfree'
ClamAV.o(.text+0x89): In function `ClamEngine::loadEngine()':
: undefined reference to `cl_statinidir'
ClamAV.o(.text+0xb9): In function `ClamEngine::loadEngine()':
: undefined reference to `cl_free'
ClamAV.o(.text+0xdc): In function `ClamEngine::reloadEngine()':
: undefined reference to `cl_statchkdir'
ClamAV.o(.text+0x151): In function `ClamEngine::scanFile(char const*)':
: undefined reference to `cl_scanfile'
ClamAV.o(.text+0x176): In function `ClamEngine::scanFile(char const*)':
: undefined reference to `cl_strerror'
collect2: ld returned 1 exit status
make: *** [all] Error 1
[root@fw dansguardian-2.8.0.6-antivirus-6.4.4]#
Utilizo o Centos 4.2, rodando Squid e Iptables.
#8Comentário enviado por balani em 28/09/2006 - 15:44h
Artigo bom.
#9Comentário enviado por rjacomel em 28/09/2006 - 17:12h
Excelente artigo!
Uma sugestão: CUIDADO com o comando "chmod -R 777 /var/run" durante a instalação do Dansguardian. Testei no Debian e verifiquei que ele faz um estrago grande na execução de alguns serviços (SSH por exemplo!). No Debian este comando NÃO é necessário.
No mais a implementação funcionou perfeitamente.
Parabéns!
#10Comentário enviado por memaster em 28/09/2006 - 21:43h
Caro nick, com relação ao seu erro na compilação do DG, queria que vc me confirmasse se executou a compilação e instalação da libesmtp, conforme descreve o passo 4, se apareceu algum erro nesse ponto da instalação, e se vc rodou o ldconfig depois dessa instalação antes de compilar o DG. Note que os erros começam do ponto onde eh vinculada a libesmtp. Caso isso tenha sido feito da forma como foi dito, e se mesmo assim o problema persiste, ou se por acaso vc jah tenha resolvido o problema, por favor nos comunique.
#11Comentário enviado por jcg.gava em 04/10/2006 - 13:07h
Olá pessoal estou com um problema. Fiz tudo como estava no how-to... Chegou na hora de criar o cache do squid:
/usr/sbin/squid -f /etc/squid/squid.conf -z
ele apontou este erro:
2006/10/04 10:06:16| Creating Swap Directories
FATAL: Failed to make swap directory /var/spool/squid: (13) Permission denied
Squid Cache (Version 2.5.STABLE12): Terminated abnormally.
CPU Usage: 0.000 seconds = 0.000 user + 0.000 sys
Maximum Resident Size: 0 KB
Page faults with physical i/o: 7
Se alguém puder me ajudar obrigado !!!...
#12Comentário enviado por memaster em 05/10/2006 - 22:48h
Olá JulioPhnX
tente executar os seguintes comandos antes de criar o cache:
depois disso posta ai o resultado, seja ele negativo ou positivo, pra um melhor acompanhamento da comunidade.
Abraço
#13Comentário enviado por demattos em 08/10/2006 - 18:11h
Muito bom este artigo veio a ajudar muito no processo de controle de acesso a conteudo maliciose e virus q andam pela net, vou aplicar este artigo e ver como se comporta
Valeu
#14Comentário enviado por linuxbeginner em 14/10/2006 - 10:06h
Estou com o mesmo problema do nick. Mas devido a um erro que ocorre na compilação do DG e que não consegui resolver mesmo editando o configure e apontando para a pasta correta. O erro na compilação é o seguinte...
Generating platform specific Makefile...
With AV engine: clamav
Package libclamav was not found in the pkg-config search path.
Perhaps you should add the directory containing `libclamav.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libclamav' found
O meu libclamav.pc está em /usr/local/clamav/lib/pkgconfig/
Alguma sugestão Marcio?
Ahhh e parabens pelo artigo, realmente bom!!
#15Comentário enviado por jcg.gava em 16/10/2006 - 14:17h
Olá memaster
Como você disse acima eu realizei os comandos... mas obtive o seguinte retorno:
root@Firewall:/usr/sbin# squid -f /etc/squid/squid.conf -z
FATAL: Error Directory /usr/local/share/squid/errors/English: (2) No such file or directory
Squid Cache (Version 2.5.STABLE12): Terminated abnormally.
CPU Usage: 0.010 seconds = 0.010 user + 0.000 sys
Maximum Resident Size: 0 KB
Page faults with physical i/o: 253
Aborted
Vlw pela resposta. Aguardo outra dica =) !... vlw Abraços
#16Comentário enviado por memaster em 19/10/2006 - 20:35h
Caro JulioPhnX observe as seguintes opções usadas durante a compilação do Squid...
Nessas opções vc está dizendo ao squid para trabalhar com Portugues ao inves de inglês, que seria o default, procure no /etc/squid/squid.conf pela seguinte linha:
Desculpe a demora na resposta mais estou fazendo um curso no momento e mais o trabalho que ta muito corrido, qq dúvida manda ver e posta ai vlw...
#17Comentário enviado por memaster em 19/10/2006 - 20:39h
Olá linuxbeginner, muito obrigado pelo elogio, mais sempre falta algo, naum sou perfeito, mais tento melhorar sempre, apesar da demora se vc ainda estiver com esse problema tente criar o seguinte symlink:
#18Comentário enviado por jcg.gava em 20/10/2006 - 12:18h
memaster... vlw pela resposta velho !.. vou tentar e respondo se der tudo certo =) !.. vlw
#19Comentário enviado por jcg.gava em 10/11/2006 - 17:09h
Boa tarde memaster.. blz velho ?
seguinte segui todos os passo, tudo funcionou desta vez =) sem mais problemas =) ... só que tive um problema ao iniciar o CLAMAV e o DANSGUARDIAN...
A mensagem que o CLAMAV apresentou foi esta:
LibClamAV Warning: ********************************************************
LibClamAV Warning: *** This version of the ClamAV engine is outdated. ***
LibClamAV Warning: *** DON'T PANIC! Read http://www.clamav.net/faq.html ***
LibClamAV Warning: ********************************************************
e o DANSGUARDIAN: da um FAIL
Obrigado... espero por resposta =) !...
#20Comentário enviado por memaster em 12/11/2006 - 00:32h
olá JulioPhnX, quanto a mensagem do ClamAV eh soh um alerta sobre a versão instalada, instale a versão atual para eliminar essa mensagem, mas mesmo com este alerta essa versão ainda eh funcional, soh não se esqueça de atualizar a base de dados do mesmo. Quanto ao Dansguardian, a principal razão para isso eh que o proxy (squid) não esteja rodando, ou a configuração de endereço do mesmo e porta de comunicação tanto no dansguardian.conf quanto no squid.conf não estejam corretas e o dansguardian não esteja conseguindo comunicar-se com o proxy, se não for esse o caso poste novamente que vou dar uma pesquisada e fazer uns testes, embora comigo esse problema tenha surgido somente nessas situações.
É sempre um prazer ajudar.
Abraço.
#21Comentário enviado por sheilamb em 29/11/2006 - 13:06h
Olá, eu utilizo o Debian com squid estou querendo colocar um filtro, e estou pensando no dansguardian. Não tenho muita experiência com o linux e nunca instalei o dansguardian. Gostaria de saber se esse tutorial serve pra essa distribuição e caso não sirva o que devo fazer. Agradeço desde já a ajuda.
#22Comentário enviado por caveman_br em 26/12/2006 - 22:23h
Mano otimo howto .. mas infelizmente estou tendo o mesmo problema que o nick
OK alguem deve tar me xingando (putz um dia depois do natal e o kra vem perguntando coisa.. mas fazer oq alguns precisam aproveitar a folga dos outros pra poder trabalhar melhor)
mas como eu estava dizendo tive o mesmo probs que o nick ai eu abri o arquivo Makefile e notei que o item AV_LIBS= estava vazio entao mudei para AV_LIBS = /usr/lib/libclamav.a
assim meu erro passou a aparecer outro. Agora como eu n manjo nada e so sai fuçando acredito que eu soh tenha trocado de problema e n resolvido nada
a msg q eu tenho de erro agora é essa:
g++ -o dansguardian -O2 -DPROXYUSER=\"squid\" -DCONFFILELOCATION=\"/etc/dansguardian/dansguardian.conf\" -lz -I/usr/local/include -pthread ClamAV.o VirusEngine.o VirusScanner.o TrickleHandler.o String.o OptionContainer.o FDTunnel.o ConnectionHandler.o DataBuffer.o HTTPHeader.o NaughtyFilter.o RegExp.o Socket.o FatController.o UDSocket.o SysV.o ListContainer.o Ident.o HTMLTemplate.o LanguageContainer.o DynamicURLList.o ImageContainer.o FOptionContainer.o ListManager.o md5.o -pthread -L/usr/local/lib -lesmtp -ldl /usr/local/lib/libz.a /usr/lib/libclamav.a dansguardian.cpp
/usr/lib/libclamav.a(cvd.o)(.text+0x2e): In function `cli_untgz':
/usr/local/src/clamav/clamav-0.88.7/libclamav/cvd.c:52: undefined reference to `gzdopen'
/usr/lib/libclamav.a(cvd.o)(.text+0x7f):/usr/local/src/clamav/clamav-0.88.7/libclamav/cvd.c:62: undefined reference to `gzread'
/usr/lib/libclamav.a(cvd.o)(.text+0x10a):/usr/local/src/clamav/clamav-0.88.7/libclamav/cvd.c:106: undefined reference to `gzclose'
/usr/lib/libclamav.a(cvd.o)(.text+0x259):/usr/local/src/clamav/clamav-0.88.7/libclamav/cvd.c:135: undefined reference to `gzclose'
/usr/lib/libclamav.a(cvd.o)(.text+0x2e8):/usr/local/src/clamav/clamav-0.88.7/libclamav/cvd.c:160: undefined reference to `gzclose'
/usr/lib/libclamav.a(scanners.o)(.text+0xc90): In function `cli_scangzip':
/usr/local/src/clamav/clamav-0.88.7/libclamav/scanners.c:577: undefined reference to `gzdopen'
/usr/lib/libclamav.a(scanners.o)(.text+0xcec):/usr/local/src/clamav/clamav-0.88.7/libclamav/scanners.c:589: undefined reference to `gzread'
/usr/lib/libclamav.a(scanners.o)(.text+0xd4a):/usr/local/src/clamav/clamav-0.88.7/libclamav/scanners.c:612: undefined reference to `gzclose'
/usr/lib/libclamav.a(scanners.o)(.text+0xd9b):/usr/local/src/clamav/clamav-0.88.7/libclamav/scanners.c:619: undefined reference to `gzclose'
/usr/lib/libclamav.a(scanners.o)(.text+0xe7e):/usr/local/src/clamav/clamav-0.88.7/libclamav/scanners.c:592: undefined reference to `gzclose'
/usr/lib/libclamav.a(scanners.o)(.text+0xe9f):/usr/local/src/clamav/clamav-0.88.7/libclamav/scanners.c:584: undefined reference to `gzclose'
collect2: ld returned 1 exit status
make: ** [all] Erro 1
a impressao que eu tenho é q agora ele n esta encontrando as funções da libz.a
bons.. soh pra desencargo essa ja foi a 3a vez q eu comeco o processo todo desdo inicio e acabo parando qndo vou fazer o make do DansGuardian.
Se alguem tiver uma dica estou ancioso pra por isso pra rodar definitivamente.
#23Comentário enviado por memaster em 27/12/2006 - 07:15h
sheilamb, como já mencionei anteriormente todas as instalações são feitas compilando o código fonte dos softwares envolvidos no processo, ou seja qualquer distro com um compilador C e as bibliotecas necessárias ao funcionamento dos softwares requeridos pode ser usada sem problemas, como vc está usando debian, vc ainda pode optar por usar o apt-get para obter e instalar todos (ou quase todos) os softwares, e basear-se no meu artigo para proceder somente com a configuração de cada software envolvido, ou sinta-se a vontade para proceder com a compilação manual e questionar qualquer dúvida que apareça.
#24Comentário enviado por memaster em 27/12/2006 - 07:22h
caro caveman_br não se preocupe com datas, hehe não dou muita importância a esse detalhe hehe, vamos ao que interessa. Qual a distro que vc está usando? Antes de mais nada, de uma olhada na resposta que enviei ao comentário do nick, quando a libesmtp, caso tenha efetuado os passos descritos na resposta a ele corretamente sem erros até a compilação do DG, volte a postar aqui, outra coisa, não se fez necessára a alteração do Makefile do DG durante o processo no meu caso, não sei se algum outro usuário teve de fazer isso, mais acho sem sentido, bom vou ficar aguardando mais detalhes, estarei sempre disposto a responder o que estiver ao meu alcance e obrigado pela credibilidade ao artigo.
#25Comentário enviado por gandalfree em 09/01/2007 - 15:57h
Alguém saberia dizer como posso especificar quais arquivos o clamav deve escanear?? Pois tem alguns arquivos como .html .css .gif .jpg que não precisam escanear para não sobrecarregar o acesso.
Obrigado e parabéns pelo artigo
#26Comentário enviado por ominerim em 14/02/2007 - 11:55h
Boa tarde, fiz tudo do tutorial mas não conseguir iniciar o dansguardian dar o seguinte erro:
dansguardian: error while loading shared libraries: libesmtp.so.5: cannot open shared object file: No such file or directory.
Alguém poderia me ajudar?
Thiago.
#27Comentário enviado por memaster em 19/02/2007 - 19:58h
caro ominerim essa questão já foi feita... tem a ver com a libesmtp que é uma dependência do Dansguardian pra trabalhar com antivirus, tem um capítulo do meu tuto só voltado a sua instalação, da uma olhada nele, se já olhou veja se a instalação do Dansguardian não está bunscando ela de um diretório e ne verdade está instalada em outro, ai você pode resolver com um link simbólico, vai nessa que o problema é por ai, e nem te esquenta que esse é o fácil.. qualquer coisa pergunta novamente, e se conseguiu posta ai pra gente saber...
ATUALIZAÇÃO DO HOWTO:
pra quem tentar executar esse procedimento com o ClamAV-0.90 (última versão estável) deve compilar o dansguardian+patch com o seguinte comando:
Caso contrário vai apresentar um erro relacionado a lib do Clamav quando for executar o make do Dansguardian.
Pessoal, queria aproveitar esse post, para saber quantos de vcs conseguiram seguir esse tutorial, qts acharam útil, tem sugestôes etc, pois é bom saber quando um trabalho da resultados... assim que possível vou estar postando aqui mais tutorias pra galera.. até mais e um bom feriado a todos.
#28Comentário enviado por aroldobossoni em 09/06/2007 - 17:17h
Pra que o WebMin?
O WebMin tem suporte ao Dansguardian?
#29Comentário enviado por aroldobossoni em 18/06/2007 - 17:45h
Boa tarde para todos.
Esse Artigo realmente é excelente.
Estou tentando compilar o squid conforme descrito a cima, e estou usando a versão 2.6.STABLE13 com a distro slackware 11.0 e esta dando um erro assim:
ERROR: Basic auth helper winbind does not exists
Eu acho que esta versão não da suporte esse tipo de autenticação
O que eu faço ??
O Dansguardian aceita outro tipo de autenticação???
#30Comentário enviado por demattos em 18/06/2007 - 18:57h
bom amigo tive este mesmo problema e resolvi acresentando a seguinte linha
http_port 3128 transparent
e comente estas
# http_port 3128
# httpd_accel_port 80
# httpd_accel_host virtual
# httpd_accel_uses_host_header on
# httpd_accel_with_proxy on
Esta configuracao e so para versao 2.6 do squid
falou
t+
#31Comentário enviado por aroldobossoni em 18/06/2007 - 19:35h
mais esse erro aparece durante a compilação do squid...
#32Comentário enviado por afrox em 18/02/2008 - 17:52h
artigo show...
parabéns
#33Comentário enviado por squidfjv em 08/08/2008 - 16:59h
Muito bom seu artigo parabéns!!
ta me ajudando bastante!!
Á unica coisa que achei estranho é que está demorando um pouco para carregar as páginas
#34Comentário enviado por ---Anonymous--- em 12/06/2009 - 09:53h
OLa memaster, ent'ao, eu tentei compilar squid e da um erro dizendo que a pasta share nao existe, andei dando uma olhada e realmente o /usr/local/share nao existe.
Tambem o /etc/squid nao existe.
Lembrando que eu estou usando o Slack 12.2, mas acho que isso nao e o problema.
Tambem baixei o squid 2.5 stable8
webmin 1.290
Versoes superiores ao que voce passou.
O que eu devo fazer???
Preferências de cookies
Usamos cookies essenciais para manter o site funcionando. Cookies de estatísticas e anúncios só serão carregados se você permitir.
Muito bom seu artigo.
Pessoal, alguém já usou ou testou o Dansguardian e o Squidguard, e que poderia fazer um paralelo dos dois, principalmente em termos de desempenho? Tenho que implantar um dos dois numa rede. Eu só testei o Squidguard e funcionou normalmente, com bom desempenho. Mas o projeto dele parece que está meio parado, além dele ter menos recursos extras do que o Dansguardian.