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.

[ Hits: 87.192 ]

Por: Márcio Elias em 27/09/2006


Juntando tudo e colocando para funcionar



Supõe-se que nesse micro esteja rodando um firewall iptables o qual a configuração completa não está ao alcance deste howto, no entanto será necessário a adição de algumas linhas no seu script para que nossa solução funcione:

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080

A linha acima redireciona todo o tráfego que se origina na sua rede local e tem como destino a porta 80, por onde passam os pacotes do protocolo HTTP. Substitua eth1 pela sua placa de rede conectada à rede local para que o redirecionamento funcione como o esperado.

A porta 8080 é onde o Dansguardian estará escutando, ao receber uma requisição, o Dansguardian irá pesquisar pelo endereço requisitado em sua base de dados, caso o resultado da pesquisa seja positivo, o mesmo se encarrega de automaticamente bloquear o acesso e retornar uma página de erro ao cliente que solicitou a URL, tudo isso antes mesmo de passar o requisição para o Squid, o que de certa forma acaba por poupar banda de rede em consultas indevidas.

Caso a URL solicitada não seja encontrada na base de dados do Dansguardian, o mesmo repassa a solicitação ao Squid, que por sua vez retorna a página ao Dansguardian, que "lê" todo o conteúdo retornado, somando os pontos das palavras/frases encontradas na página, caso o somatório de pontos de todas as palavras encontradas na base de dados do Dansguardian ultrapasse a pontuação máxima estipulada, uma página de erro é retornada, negando o acesso ao conteúdo solicitado, informando que o mesmo é impróprio, da mesma forma ocorre a verificação por vírus, que o Dansguardian "solicita" ao Clamav neste momento.

Caso o conteúdo esteja livre de infecções e seja próprio para exibição, o Squid armazena a página em cache e retorna a mesma ao cliente.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Instalação e configuração do Proxy (Squid)
   3. Instalação e configuração do Clamav (Antivírus)
   4. Instalação da Libesmtp (dependência do Dansguardian + patch clamav)
   5. Instalação do Dansguardian
   6. Juntando tudo e colocando para funcionar
   7. Configurando a inicialização automática dos serviços
   8. Algumas dicas sobre o Dansguardian
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Bloqueio de usuários com página de aviso

Sistema de gerenciamento de logs do Linux

From Deploy WAR (Tomcat) to Shell (FreeBSD)

Automatizando as atualizações no Linux

Rainbow Crack e Rainbow Tables

  
Comentários
[1] Comentá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.

[2] Comentá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.

[3] Comentá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 :)

[4] Comentá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.

[5] Comentá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 =) ...

[6] Comentá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...

[7] Comentá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.

[8] Comentário enviado por balani em 28/09/2006 - 15:44h

Artigo bom.

[9] Comentá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!

[10] Comentá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.

[11] Comentá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 !!!...

[12] Comentário enviado por memaster em 05/10/2006 - 22:48h

Olá JulioPhnX

tente executar os seguintes comandos antes de criar o cache:

#chown -R squid.squid /var/spool/squid
#chmod -R 775 /var/spool/squid

e depois:

#/usr/sbin/squid -f /etc/squid/squid.conf -z

depois disso posta ai o resultado, seja ele negativo ou positivo, pra um melhor acompanhamento da comunidade.

Abraço

[13] Comentá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

[14] Comentá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!!

[15] Comentá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

[16] Comentário enviado por memaster em 19/10/2006 - 20:35h

Caro JulioPhnX observe as seguintes opções usadas durante a compilação do Squid...

--enable-err-languages="Portuguese"
--enable-default-err-language="Portuguese"

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:

error_directory /usr/local/share/squid/errors/English

se encontrar ela ai esta o erro troque para:

error_directory /usr/local/share/squid/errors/Portuguese

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...

[17] Comentá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:

# ln -s /usr/local/clamav/lib/pkgconfig/libclamav.pc /usr/lib/pkgconfig/libclamav.pc

Se isso resolver blz, se naum volte a perguntar..

vlw abraço

[18] Comentá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

[19] Comentá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 =) !...

[20] Comentá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.

[21] Comentá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.

[22] Comentá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.

[23] Comentá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.

[24] Comentá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.

[25] Comentá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

[26] Comentá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.

[27] Comentá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:

#./configure --sysconfdir=/etc/dansguardian/ --cgidir=/var/www/cgi-bin/ --runas_usr=squid --runas_grp=squid --with-av-engine=clamdscan

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.

[28] Comentário enviado por aroldobossoni em 09/06/2007 - 17:17h

Pra que o WebMin?
O WebMin tem suporte ao Dansguardian?

[29] Comentá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???

[30] Comentá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+

[31] Comentário enviado por aroldobossoni em 18/06/2007 - 19:35h

mais esse erro aparece durante a compilação do squid...

[32] Comentário enviado por afrox em 18/02/2008 - 17:52h

artigo show...
parabéns

[33] Comentá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

[34] Comentá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???


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts