O local certo para se aprender Linux no Brasil, a sua fonte de artigos, dicas, tutoriais, noticias, howto, reviews e muito mais.

Antivírus para Servidor de EMAIL (Linux/Sendmail)

Arquivado em Artigos <> E-Mail Server
Antivírus para Servidor de EMAIL (Linux/Sendmail)
Instalação e a operação foi totalmente testado em ambiente Linux com sendmail como SMTP-server.

O software antivírus utilizado foi o da McAfee/NAI, portanto para o software antivírus que você
mais gosta, altere os parâmetros conforme necessário, o antivirus da McAfee/NAI não é GRATUITO!

Os links aqui informados podem estar desatualizados, para o antivírus da McAfee procure no site
www.nai.com, e para o amavis em www.amavis.org.

 

MUITO CUIDADO com a versão do AMAVIS que você baixar, pois este manual não SE REFERE a versão em PERL!!!

Começando...

1. Instruções para Instalação do AMaVis:

1.1 Instalando o software:

O truque principal é a utilização do shell script scanmails, que executará o software de antivírus
para fazer a varredura no arquivo anexado ao email, inclusive do corpo (body) da mensagem, pois alguns
vírus vem no corpo da mensagem, e não como anexo.

1.2 Baixe o pacote AMaVis do endereço: http://www.amavis.org/dist/amavis-0.2.1.tar.gz

1.3 Descompactar o arquivo baixado em um diretório qualquer (preferencialmente vazio), p.ex: /tmp/amavis;

1.4 Execute os comandos abaixo no diretório onde você descompactou o arquivo amavis-0.2.1.tar.gz (/tmp/amavis):

[root@servidor amavis]# ./configure
[root@servidor amavis]# make
[root@servidor amavis]# make install

1.5 Se der algum erro na compilação do AMaVis com relação ao software TNEF, você deve baixar e instalar
o tnef, busque no endereço:

http://world.std.com/~damned/software.html ou
http://world.std.com/~damned/tnef-1.1.tar.gz, versão 1.1 e compile-o:

tar xvfz tnef-1.1.tar.gz
cd tnef-1.1
./configure
make
make install

1.6 Mate o processo sendmail ("killall -HUP sendmail") ou pelo comando abaixo:

[root@servidor uvscan]# /etc/rc.d/init.d/sendmail stop

OBSERVAÇÃO: Para BARRAR vírus que venham no CORPO (body) da mensagem, vamos mudar o utilitário utilizado
no parâmetro [metamail], alterando de /usr/bin/metamail para /usr/bin/ripmime, mas para isto, você precisa
ter o ripmime instalado. Se não estiver instalado, faça conforme abaixo, caso contrário, faça o passo 1.9:

1.7 Procure por ripmime-xxx.rpm (conforme sua distribuição Linux), no site www.rpmfind.net, e baixe-o
para instalar posteriormente. A versão que eu estou utilizando está em:

ftp://ftp.rpmfind.net/linux/PLD/current/dists/ra/PLD/i686/PLD/RPMS/ripmime-1.2.16.7-1.i686.rpm

1.8 Faça a instalação executando no prompt do Linux:

rpm -Uvh ripmime-1.2.16.7-1.i686.rpm

1.9 Modificando o arquivo /etc/sendmail.cf manualmente, por exemplo:

Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@SPfhn, S=10/30, R=20/40,
T=DNS/RFC822/X-Unix,
A=procmail -Y -a $h -d $u

Alterar para:
#Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@SPfhn, S=10/30, R=20/40,
# T=DNS/RFC822/X-Unix,
# A=procmail -Y -a $h -d $u

Mlocal, P=/usr/sbin/scanmails, F=lsDFMAw5:/|@SPfhn, S=10/30, R=20/40,
T=DNS/RFC822/X-Unix,
A=scanmails -Y -a $h -d $u

ATENÇÃO: não altere a linha, duplique os comandos que foram comentados, descomente-os e altere

P=/usr/bin/procmail para P=/usr/sbin/scanmails

e

A=/usr/bin/procmail para A=/usr/sbin/scanmails

OBSERVAÇÃO: O script /usr/sbin/scanmails NÃO SUBSTITUI o /usr/bin/procmail!!! Pois dentro
do script /usr/sbin/scanmails tem a execução do /usr/bin/procmail, portanto fique tranquilo se
você criou regras dentro para utilizar o procmail, elas continuarão funcionando normalmente!!!

2. Faça alterações no arquivo /usr/sbin/scanmails:


ATENÇÃO: Faça um BACKUP do seu script /usr/sbin/scanmails!!!


2.1 Faça a alteração do parâmetro METAMAIL, para utilizarmos o ripmime, procure por metamail
e faça a alteraçao conforme abaixo:

altere de:
metamail=/usr/bin/metamail

para:
metamail=/usr/bin/ripmime

2.2 Altere o comando que utiliza o parâmetro METAMAIL, procure-o e faça a alteração conforme abaixo:

if [ "x${metamail}" != "x" ] && [ -x ${metamail} ]
then

##${metamail} -r -q -x -w ${tmpdir}/receivedmail > /dev/null 2>&1 ## DESATIVADO PARA UTILIZAR RIPMIME

${metamail} -d ${tmpdir}/unpacked/ -i ${tmpdir}/receivedmail > /dev/null 2>&1

else
echo "WARNING! Could not decode mailfile (neither metamail nor reformime is installed)" | log_error
echo "--> neither decode/detach, nor scanning done !" | log_error
fi

Aqui a atualização para o ripmime já está pronta, vamos continuar.

2.2 Próximo a linha 50, existe a parametrização dos softwares de antivírus, para o software
da McAfee, você deve alterar conforme abaixo:

################################################
# Path to NAI antivírus (uvscan) #
# (if installed) #
################################################
uvscan=/usr/local/bin/uvscan
uvscan_version=4
uvscan3_cmdl="--recursive --summary --verbose"
uvscan4_cmdl="--secure -rv --summary"

vírus_name=Desconhecido

# to use EXTRA.DAT file (for the latest vírus)
# add --extra /path/EXTRA.DAT !

Obs: IMPORTANTE!!! Altera o parâmetro uvscan_version para 4 (quatro).

Inclua o parâmetro [vírus_name], para enviarmos o nome do vírus no ASSUNTO (subject) do email!

2.1 próximo a linha 154, existe a parametrização de quem deve receber o email de alerta sobre
contaminação por vírus, conforme abaixo o email seria enviado para:

notifysender - Quem envio o email (remetente);
notifyreceiver- Quem iria receber o email, mas não recebeu por estar contaminado com vírus (destinatário);
notifyadmin - Para o Administrador de Rede, assim ele fica sabendo o que está acontecendo!

################################################
# send vírus report to admin (see mailto)? #
# send notification message to sender? #
# send notification message to receiver? #
################################################
notifyadmin=yes
notifysender=yes
notifyreceiver=yes

2.2 Inclua no shell /usr/sbin/scanmails, a execução do comando para obter o nome do vírus,
o comando é:

vírus_name=`cat ${tmpdir}/logfile | grep "Found the" | cut -d " " -f 11`

E somente serve o antivírus da McAfee (NAI)!!!

Aqui nós guardamos o parâmetro [vírus_name], portanto você deve ter incluído o parâmetro
no passo 2.2! Veja como ficaria a execução para o antivírus da McAfee:

########################## McAfee ##################################
if [ "x${uvscan}" != "x" ]
then
if [ "x${uvscan}" != "x" ] && [ -x ${uvscan} ]
then
if [ "x${uvscan_version}" = "x3" ]
then
${uvscan} ${uvscan3_cmdl} ${tmpdir}/unpacked >> ${tmpdir}/${logfile} 2>&1
scanstatus1=$?
if [ ${scanstatus1} -eq 139 ]
then
echo "WARNING! it seems that ${uvscan} crashed while scanning for" | log_error
echo " víruses in ${tmpdir}/unpacked" | log_error
echo " 139 is an unusual return value for uvscan" | log_error
echo " try to upgrade to uvscan 4.0.3 or higher" | log_error
fi
scanstatus5=0
vírus_name=`cat ${tmpdir}/logfile | grep "Found the" | cut -d " " -f 11` ### INCLUA AQUI ###
else ## Version 4.x
${uvscan} ${uvscan4_cmdl} ${tmpdir}/unpacked/ >> ${tmpdir}/${logfile} 2>&1
scanstatus5=$?
scanstatus1=0
vírus_name=`cat ${tmpdir}/logfile | grep "Found the" | cut -d " " -f 11` ### INCLUA AQUI ###
fi
else
scanstatus1=0
scanstatus5=0
fi
else
scanstatus1=0
scanstatus5=0
fi


2.3 próximo a linha 1180, você tem a montagem da notificação de alerta de vírus para o administrador,
usuário que enviou e usuário que recebeu. Faça as alterações para "traduzir" as mensagens de alerta,
veja como foi feito (se desejar, copie e cole):

############ A virus was found: Move the mail. ######################

echo " "
echo "Virus [${virus_name}] ENCONTRADO enviada notificacao para: [${mailto}]" >> ${tmpdir}/${logfile}

if [ "x${do_virusbackup}" = "xyes" ]
then
mkdir -p ${virusmailsdir}/${myname}
mv ${tmpdir}/receivedmail ${virusmailsdir}/${myname}/${virusbackup}
chmod 400 ${virusmailsdir}/${myname}/${virusbackup}
fi

echo " "
echo "O email abaixo contem um VIRUS." >${tmpdir}/virusmail
echo " "
echo Originalmente: $0 "$@" >>${tmpdir}/virusmail

if [ "x${do_virusbackup}" = "xyes" ]
then
echo " "
echo "O email foi guardado em: [${virusmailsdir}/${myname}/${virusbackup}]" >> ${tmpdir}/virusmail
fi

if [ "x${do_log}" = "xyes" ]; then
mkdir -p ${systemlogdir}
cat ${tmpdir}/${logfile} >>${systemlogdir}/${logfile}
fi

if [ "x${do_syslog}" = "xyes" ]
then
${logger} -p ${syslog_level} -t ${scanscript}"[$$]" "ENCONTRADO VIRUS [${virus_name}] NO EMAIL DE: [${sender}] PARA: [${receiver}]"
fi

if [ "x${notifyadmin}" = "xyes" ] ; then
logdata=`cat ${tmpdir}/virusmail ${tmpdir}/${logfile}`
cat << ${virusmailsdir}/${myname}/${virusbackup}`
else
header=`${awk} '/^$/ {exit} {print}' < ${tmpdir}/receivedmail`
fi

cat << ${virusmailsdir}/${myname}/${virusbackup}`
else
header=`${awk} '/^$/ {exit} {print}' < ${tmpdir}/receivedmail`
fi

############### send a mail to the addressee ########################

cat </dev/null
AVVER=`head -1 readme.txt | cut -d' ' -f11`
if [ ! -f dat-$AVVER.tar ]; then
for i in *.tar ; do
mv $i $i.old
done
if wget http://download.nai.com/products/datfiles/4.x/nai/dat-$AVVER.tar >/dev/null;
then
for i in *.dat ; do
cp -p $i $i.bak
done
if tar xf dat-$AVVER.tar;
then
rm -f *.old
echo `date` Successfully updated antivírus DAT files to $AVVER
fi
fi
fi
--- fim ---


Coloque no cron do sistema, para buscar atualizações com a periodicidade que você achar
melhor (todos os dias, a cada 12 horas e etc).

SÓ PARA GARANTIR:

Fora o AMaVis + UvScan (McAfee), eu também uso regras no procmail, para barrar
arquivos:

- .exe, .bat, .com, .vbs e outros.

O que garante mais ainda a segurança com relação a vírus, pois se alguém enviar um
email com um vírus NOVÍSSIMO, ou seja, que não esteja na lista de vírus conhecidos
pelo antivírus da McAfee, eu garanto o não recebimento do email contaminado na rede
interna.


OBSERVAÇÕES GERAIS:

Como a versão do amavis-0.2.1 foi descontinuada, as alterações feitas aqui ficam valendo como
atualização para o problema de virus no corpo da mensagem.

BOA SORTE !!!


Este texto é de autoria de Alexandre Macedo

Envie seu comentário
 
 
Copyright © Sputnix.com.br, Seja Livre, Use Linux