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: 86.777 ]

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


Introdução



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.

Squid
ftp://mirror.aarnet.edu.au/pub/.../squid-2.5.STABLE12.tar.gz

clamav
http://easynews.dl.sourceforge.net/sourceforge/clamav/clamav-0.88.4.tar.gz

Dansguardian + patch clamav
http://www.harvest.com.br/.../dansguardian-2.8.0.6-antivirus-6.4.4.tar.bz2

libesmtp (dependência do clamav para dansguardian)
http://www.stafford.uklinux.net/libesmtp/libesmtp-1.0.4.tar.gz

webmin
http://umn.dl.sourceforge.net/sourceforge/webadmin/webmin-1.290.tar.gz

    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

SELinux - Segurança em Servidores GNU/Linux

Entendendo o que é Engenharia Social

Segurança na Internet

Procurando rootkits no seu sistema

Nikto - Tutorial básico e avançado

  
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