Filtragem de vírus com pop3 transparente: pop3vscan

Este artigo ensina a filtrar no seu gateway ou firewall os e-mails recebidos através de POP3 de forma transparente, sem necessidade de configuração por parte dos seus usuários.

[ Hits: 22.249 ]

Por: Allan GooD em 20/01/2005


A configuração



Por incrível que pareça, a parte mais difícil já foi...

Depois de baixar o .tar.gz do site (ou usar um pacote já compilado para a sua distro) e instalar o clamav, vamos compilar o pop3vscan.

Descompacte em algum lugar e simplesmente dê um "make" (edite o Makefile se quiser):

$ 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:

# mv pop3vscan /usr/local/sbin
# mv pop3vscan.conf /etc
# mv pop3vscan.mail /etc


O arquivo "pop3vscan.mail" é o que será enviado para o usuário em caso de um vírus ser encontrado. Portanto, edite-o da forma que quiser.

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
# Diretório onde os vírus 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
# Comando de execução do clamav

viruscode = 1
# No caso do clamav, este é o código de erro que é retornado
# em caso de vírus encontrado

virusregexp = .*: (.*) FOUND
# expressão regular que quando verdadeira indica a
# existência de vírus. Casa com a saída do comando do
# seu scanner de vírus (clamav no caso)

template = /etc/pop3vscan.mail
# Local onde gravou o pop3vscan.mail

Outras dicas do clamav podem ser encontradas em:
Feito isso, inicialize o pop3vscan. Crie um script de inicialização. No diretório stuff do pacote existem diversos scripts para várias distribuições.

Crie uma regra no iptables como esta:

# iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 110 -j REDIRECT --to 8110

Lembrete: Este computador deve ser o default gateway ou ou 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 transparente, sem necessidade de nenhuma configuração dos usuários.

Divirta-se.

Um pequeno FAQ


P.: O pop3vscan não consegue scanear!!!
R.: Verifique as permissões do clamav. Caso esteja rodando o clamdscan, verifique as permissões 2 vezes. Veja se o usuário do clamd tem acesso aos arquivos temporários que o pop3vscan cria.

Leitura recomendada


P3Scan, um fork do pop3vscan que faz algumas coisas a mais, como filtragem de SPAM (http://p3scan.sourceforge.net).

Página anterior    

Páginas do artigo
   1. Pré-requisitos
   2. A configuração
Outros artigos deste autor

Alta disponibilidade com IP compartilhado - UCARP

Controle de conteúdo: Como proteger seus usuários deles mesmos

Nagios Falante

Leitura recomendada

Como instalar o Avast antivírus no Linux

Os 5 princípios básicos de segurança para empresas

Hardering com Red Hat 5

Engenharia Social - Fios de telefone

Criptografia assimétrica com o RSA

  
Comentários
[1] Comentário enviado por fabio em 20/01/2005 - 06:32h

Bacana esse recurso, nem sabia que existia pop com suporte a scan. Agora, um coisa que nós, administradores de sistemas devemos ter ciência é que o local apropriado para se fazer o scan de vírus é no MTA e não no software de POP.

Digo isso porque geralmente, pra não dizer sempre, o software de POP consome mais recursos do servidor do que o MTA em si.

Outra coisa a se considerar, óbvio, se seu MTA já tiver antivírus, implementar essa solução será redundante. hehehe

Agora, dependendo do caso, esse recurso pode ser bem útil. Por exemplo, se você tem um servidor só pra SMTP e outro só pra POP.

Bom Allan, parabéns pelo artigo, essa foi novidade pra mim :)

[2] Comentário enviado por allangood em 20/01/2005 - 10:10h

Olá Fábio, a intenção de filtrar POP3 de forma transparente é para impedir que usuários com contas externas de POP3 (não a sua) tragam vírus para sua rede. Como o meu caso. Temos antivírus no nosso SMTP, e deixamos a porta de POP3 liberada para qualquer acesso. Nossos usuários podem baixar e-mail do pop, bol, etc sem risco para nossa rede.

Até mais.

[3] Comentário enviado por fabio em 20/01/2005 - 10:30h

Ah sim, agora manjei a essência da solução. Muito bom isso!

Conhece algum pra protocolo HTTP? Esse seria cruel :)

[4] Comentário enviado por allangood em 20/01/2005 - 10:39h

Tem sim e já postei um tutorial também :)
Tem o título: "Controle de conteúdo: Como proteger seus usuários deles mesmos".
O link é: http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=1984

Bom uso!!!

[5] Comentário enviado por linoxman em 20/01/2005 - 21:09h

Ola Allan

Eu implantei essa solucao na minha rede, porem os Outlocos dos usuarios travavam em algumas menssagens, dai tinha que baixar tudo de novo. Nao o outlook que trava, mas as messagens. Tipow tava baixando a menssagem 5 e ficava ate dar time out.

Voce chegou a presenciar isto ?

Agora estou testando na minha rede em casa o p3scan que e um fork do pop3vscan, porem estou com outros problemas com ele.

Abracos...

[6] Comentário enviado por marcaoguitarra em 26/01/2005 - 15:10h

vou testar o p3scan também... pois o pop3vscan está descontinuado....

vou ver ok consigo aki. valew...
Onde arrumo um e-mail com vírus para testar se está tudo ok???

falow

[7] Comentário enviado por fmascarenhas em 10/02/2005 - 23:31h

Também tive problemas com Outlook ... reportei pergunta e como resolvi o problema em http://www.vivaolinux.com.br/perguntas/verPergunta.php?codigo=19974

[8] Comentário enviado por reimassupilami em 08/03/2005 - 11:09h

parece que não tem mais o p3vscan para download, é isso mesmo? o pop3scan é equivalente?

espero que possa me esclarecer, pois achei muito interessante essa funcionalidade... preciso implementa isso no meu servidor...

no aguardo...

[9] Comentário enviado por allangood em 08/03/2005 - 12:30h

É isso mesmo. O pop3vscan não está mais em produção, o autor "passou a bola" pro p3scan.
Isso porque o segundo oferece mais funcionalidades e está com o código mais "maduro".

Até mais.
O site do p3scan é: http://p3scan.sourceforge.net/

[10] Comentário enviado por reimassupilami em 09/03/2005 - 11:57h

cara, ta muito bom seu artigo, vou implementar aki com certeza... tenho algumas dúvidas:

- o arquivo pop3vscan.mail será enviado para o usuário que receberia a mensagem ou para o usuário que enviou a mensagem com vírus?

- eu tenho uma regra de firewall usada para que os clientes possam utilizar pop e smtp externo no outlook:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

dae eu continuo utilizando essa e coloco a que vc passou depois dela?

[11] Comentário enviado por reimassupilami em 09/03/2005 - 13:18h

outro probleminha aki: quando dou o make no p3scan da o seguinte erro:

scanner_basic.c:39:18: pcre.h: No such file or directory
make: ** [.dep] Erro 123

aparentemente ele não está encontrando uma biblioteca, ou algo assim... q será?

[12] Comentário enviado por allangood em 09/03/2005 - 13:24h

Reimassupilami, vamos resolver seus 2 problemas. Primeiro o mais fácil:
Baixe os includes do pcre (se estiver usando debian: apt-get install libpcre3-dev) e pronto.

O arquivo "pop3vscan.mail" será enviado para o usuário que recebeu o arquivo infectado (seu usuário). na verdade não recebe o arquivo, ele é apenas um "template".

Aproveitando o comentário, o pop3vscan "saiu de linha", aconselho a usar o p3scan mencionado anteriomente.

Até mais.

[13] Comentário enviado por reimassupilami em 09/03/2005 - 13:36h

estou usando o mandrake, mas já instalei o libpcre, e ta blz... compilou certinho...

vc só esqueceu de me responder a questão da regra do iptables...

[14] Comentário enviado por reimassupilami em 09/03/2005 - 14:11h

allangood, cara, sem querer encher demais, mas ja enchendo: quando inicio o p3scan tenho o seguinte erro:

Scanner init failed! config and restart P3Scan

já revisei a configuração, mas naum deu nada... no log em messages além da mensagem acima sai também essa:

Exiting now...

tem algum log específico do p3scan? não encontrei nada assim...

[15] Comentário enviado por allangood em 09/03/2005 - 15:50h

Realmente esqueci de falar do iptables, vamos lá:
Você disse:
"- eu tenho uma regra de firewall usada para que os clientes possam utilizar pop e smtp externo no outlook:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE"

A única ressalva é criar a regra (que está no artigo) ANTES desta, ou o redirecionamento não vai funcionar.

Quanto ao erro que mencionou, fica complicado ajudar sem ter mais logs. Mas o usual é sempre bom rever: Permissões de acesso. O erro mais comum :)
Veja se todos os diretórios existem e reveja suas permissões Ok?

[16] Comentário enviado por reimassupilami em 10/03/2005 - 11:52h

owpa, quanto ao erro, descobri... o p3scan por algum motivo não estava encontrando o arquivo de configuração... dae fiz o seguinte:

./p3scan --configfile=/etc/p3scan.conf

dae iniciou na boa... só naum sei se está funcionando, vamos ver... tenho que esperar chegar um email com virus pra testar... hehehe...

no mais é isso... qualquer coisa volto a postar aki...

[17] Comentário enviado por stcline em 03/04/2006 - 14:47h

Como eu faço para que o p3scan delete as mensagens que ele considera virus ou spam

[18] Comentário enviado por linux.vitor em 03/05/2006 - 11:47h

amigo.. estou com um problema..
ele não esta ecaneando os arquivos.. ja fiz de tudo e tambem dei as permições certas. mas ele num esta scaneando..
o q poe ser?

[19] Comentário enviado por mariokolm em 12/07/2006 - 23:30h

estou com um problema. preciso barrar a entrada de emails com mais do q 1 mg no outlook. alguem sabe como fazer isso?

[20] Comentário enviado por removido em 21/07/2006 - 15:23h

vc ja viu esse erro: " ERR: Can't bind to socket 0.0.0.0:8110 "


qdo executo o p3scan da esse erro. o qpode ser ?
procurei no google mas nao há nd sobre isso

[21] Comentário enviado por tuxricardo em 11/08/2006 - 12:33h

Tive o mesmo erro "Cant bind to socket 0.0.0.0:8110" e descobri que tinha outro processo do p3scan rodando!
Executei killall -9 p3scan e restartei o serviço :-)

[22] Comentário enviado por jcnetobr em 16/08/2006 - 13:37h

Rodo o p3scan mas vejo que a porta 8110 não está aberta, qd eu uso p3scan -d, vejo que ele está na porta 8110.

Alguém pod eme ajudar?


Contribuir com comentário