Allan Cassaro Vilela Gomes (allan.gomes@capes.gov.br) enviou um tutorial que permite ativar filtragem transparente de e-mails que os usuários da sua rede buscam em servidores POP3 na Internet. Seguindo os passos deste documento, todo o tráfego que passar pela interface de rede com destino à Internet na porta 110 será redirecionado para o pop3vscan e verificado contra vírus, de forma transparente, sem necessitar de nenhuma configuração nos usuários.
Filtragem de vírus com pop3 transparente: POP3VSCAN
por Allan Cassaro Vilela Gomes (allan.gomes@capes.gov.br)
Esclarecimento:
Este artigo é destinado a ADMINISTRADORES DE REDES COM PRÁTICA NO USO DE SOFTWARE LIVRE E/OU UNIX.
Primeira parte: Filtragem POP3
-------------------------------------
Pre-requisitos:
- Pop3Vscan
http://pop3vscan.sourceforge.net
- Um antivírus, vou falar do ClamAV
http://www.clamav.net
- Iptables
- Kernel compilado com os seguintes parametros:
* CONFIG_NETFILTER=y
* CONFIG_IP_NF_IPTABLES=[y/m]
* CONFIG_IP_NF_TARGET_REDIRECT=[y/m]
(iptables com suporte a REDIRECT)
-------------------------------------
Por incrível que pareça, esta foi a parte mais difícil...
Depois de baixar o .tar.gz do site e instalar o clamav, vamos compilar o pop3vscan:
Descompacte em algum lugar e simplesmente dê um "make"
(Edite o Makefile se quiser)
usuario$ make
Depois disso será criado o binário do pop3vscan, mova-o para algum lugar, como "/usr/local/sbin" por exemplo e mova o pop3vscan.conf e pop3vscan.mail para o /etc
root# mv pop3vscan /usr/local/sbin
root# mv pop3vscan.conf /etc
root# mv pop3vscan.mail /etc
O arquivo "pop3vscan.mail" é o que será enviado para o usuário em caso de um vírus ser encontrado.
Edite o arquivo pop3vscan.conf e adapte para suas necessidades, os parâmetros mais importantes são:
port = 8110 --> Padrão 8110 (NÃO USE PORTA ABAIXO DE 1024!!!)
user = mail --> O usuário que o pop3vscan vai rodar (NÃO USE O ROOT!!!)
virusdir = /var/spool/pop3vscan --> Diretorio onde os virus serão colocados (o usuário acima precisa de direitos de escrita e leitura!)
scannertype = basic --> Se você optou por utilizar o clamav (ou outro que não esteja listado, avpd ou trophie)
scanner = /usr/bin/clamdscan --no-summary -i --> Local do binário do seu clamav
viruscode = 1 --> No caso do clamav, este é o código de erro que é retornado em caso de vírus encontrado
virusregexp = .*: (.*) FOUND
template = /etc/pop3vscan.mail --> Local onde gravou o pop3vscan.mail
Outras dicas do clamav podem ser encontradas em:
http://www.clamav.net/faq.html#pagestart
Feito isso, inicialize o pop3vscan (e crie um script de inicialização; no diretório stuff do pacote existem diversos scripts para várias distribuições)
e crie uma regra no iptables como esta:
root# iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 110 -j REDIRECT --to 8110
Lembrete: Este computador deve ser o default gateway ou o firewall da sua rede, ou o tráfego não irá passar por ele...
Pronto! Todo o tráfego que passar pela "eth0" com destino à Internet na porta 110 será redirecionado para o pop3vscan e scaneado contra vírus, de forma trasnparente, sem necessitar de nenhuma configuração nos usuários.
Divirta-se.
Autor: Allan Cassaro Vilela Gomes (allan.gomes@capes.gov.br)
Postado por brain em outubro 11, 2004 05:52 PM
» Postado por: César em outubro 11, 2004 07:10 PM, 200.171.58.:
O pop3vscan não roda no viruscan for Linux???
» Postado por: Tiago Cruz em outubro 11, 2004 11:31 PM, 200.170.125:
Hei, precisa mesmo compilar o kernel?
As distros atuais não tem suporte a isso por padrão, como a Fedora ou CL10?
» Postado por: edmarcos em outubro 12, 2004 12:52 AM, 200.181.190:
Não consigo compilar , segue os erros:
[root@edmarcos pop3vscan-0.4]# make
Makefile:121: .dep: Arquivo ou diretório não encontrado
creating depencies
rm .tmp.dep -f
gcc -M -Wall -O2 ./parsefile.c
gcc -M -Wall -O2 ./getline.c
gcc -M -Wall -O2 ./scanner_sample.c
gcc -M -Wall -O2 ./pop3vscan.c
gcc -M -Wall -O2 ./scanner_avpd.c
gcc -M -Wall -O2 ./scanner_trophie.c
gcc -M -Wall -O2 ./scanner_basic.c
mv .tmp.dep .dep
gcc -Wall -O2 -c getline.c
gcc -Wall -O2 -c parsefile.c
gcc -Wall -O2 -c pop3vscan.c
In file included from pop3vscan.c:55:
pop3vscan.h:132:8: warning: extra tokens at end of #endif directive
In file included from pop3vscan.c:58:
scanner.h:41:9: warning: extra tokens at end of #endif directive
gcc -Wall -O2 -c scanner_basic.c
In file included from scanner_basic.c:33:
pop3vscan.h:132:8: warning: extra tokens at end of #endif directive
gcc -Wall -O2 -c scanner_avpd.c
In file included from scanner_avpd.c:41:
pop3vscan.h:132:8: warning: extra tokens at end of #endif directive
gcc -Wall -O2 -c scanner_trophie.c
In file included from scanner_trophie.c:38:
pop3vscan.h:132:8: warning: extra tokens at end of #endif directive
ln -sf ripmime/ripmime.a libmime.a
gcc -o pop3vscan getline.o parsefile.o pop3vscan.o scanner_basic.o scanner_avpd.o scanner_trophie.o -L. -lmime -lpcre
./libmime.a(mime.o)(.text+0x80d): In function `quick_clean_filename':
: undefined reference to `__ctype_b'
./libmime.a(mime.o)(.text+0x22db): In function `MIME_decode_encoding':
: undefined reference to `__ctype_b'
./libmime.a(mime.o)(.text+0x233b): In function `MIME_decode_encoding':
: undefined reference to `__ctype_b'
./libmime.a(XAM_strtok.o)(.text+0x1f): In function `XAM_strncasecmp':
: undefined reference to `__ctype_tolower'
./libmime.a(MIME_headers.o)(.text+0xad9): In function `MIMEH_parse_headers':
: undefined reference to `__ctype_b'
./libmime.a(MIME_headers.o)(.text+0xdf2): In function `MIMEH_parse_headers':
: undefined reference to `__ctype_b'
./libmime.a(MIME_headers.o)(.text+0xe6c): In function `MIMEH_parse_headers':
: undefined reference to `__ctype_b'
./libmime.a(strlower.o)(.text+0x15): In function `strlower':
: undefined reference to `__ctype_tolower'
collect2: ld returned 1 exit status
make: ** [pop3vscan] Erro 1
» Postado por: Allan Gomes em outubro 13, 2004 10:24 AM, 200.130.18.:
Para Tiago Cruz:
Bem, compilar o Kernel depende de um único detalhe. Seu netfilter (iptables) suporta NAT?
Aqueles parâmetros são exatamente para isso. Se seu netfilter já possui suporte para NAT, passe adiante.
Para César:
O Pop3VScan possui suporte a qualquer tipo de antivírus (teoricamente) pois permite que você mesmo defina os parâmetros de filtragem e retorno.
Para Edmarcos:
Este erro aparenta ser algum problema com o libmime, tente atualiza-la ok?
Abraços a todos.
» Postado por: Erivelto Postai em outubro 14, 2004 05:13 PM, 200.250.45.:
Caros,
Estou instalando o protudo citado e estou tendo problemas em compilação.
Estou fazendo isso em um Red Hat 8.0 Kernel 2.4.27.
Esta dando o seguinte erro:
make
Makefile:121: .dep: No such file or directory
creating depencies
rm .tmp.dep -f
gcc -M -Wall -O2 ./parsefile.c
gcc -M -Wall -O2 ./getline.c
gcc -M -Wall -O2 ./scanner_sample.c
In file included from scanner_sample.c:35:
pop3vscan.h:132:8: warning: extra tokens at end of #endif directive
gcc -M -Wall -O2 ./pop3vscan.c
In file included from pop3vscan.c:55:
pop3vscan.h:132:8: warning: extra tokens at end of #endif directive
In file included from pop3vscan.c:58:
scanner.h:41:9: warning: extra tokens at end of #endif directive
gcc -M -Wall -O2 ./scanner_avpd.c
In file included from scanner_avpd.c:41:
pop3vscan.h:132:8: warning: extra tokens at end of #endif directive
gcc -M -Wall -O2 ./scanner_trophie.c
In file included from scanner_trophie.c:38:
pop3vscan.h:132:8: warning: extra tokens at end of #endif directive
gcc -M -Wall -O2 ./scanner_basic.c
scanner_basic.c:31:18: pcre.h: No such file or directory
In file included from scanner_basic.c:33:
pop3vscan.h:132:8: warning: extra tokens at end of #endif directive
make: *** [.dep] Error 123
Aguardo um retorno.
Muito obrigado.
Erivelto Postai
» Postado por: Allan Cassaro em outubro 15, 2004 04:52 PM, 200.130.18.:
Erivelto Postai, está faltando bibliotecas de desenvolvimento (o fonte delas na verdade).
Instale a libpcre-devel e a libmime-devel Ok?
Até mais.
» Postado por: Gonzalo em outubro 18, 2004 11:49 PM, 24.232.49.1:
como eu posso provar se este funcionamento?
» Postado por: Allan Cassaro em outubro 20, 2004 12:46 PM, 200.130.18.:
Para testar, você pode enviar um vírus de teste, como o "EICAR" por exemplo. Para baixa-lo, vá em http://www.eicar.org
Até mais.
O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.