Pesquisa de site

Como adicionar proteção antivírus e contra spam ao servidor de correio Postfix com ClamAV e SpamAssassin - Parte 3


Nos dois artigos anteriores desta série Postfix você aprendeu como configurar e gerenciar o banco de dados do servidor de e-mail através do phpMyAdmin e como configurar o Postfix e o Dovecot para lidar com mensagens recebidas e enviadas. Além disso, explicamos como configurar um cliente de email, como o Thunderbird, para as contas virtuais que criamos anteriormente.

  1. Configure Postfix Mail Server e Dovecot com MariaDB – Parte 1
  2. Como configurar Postfix e Dovecot com usuários de domínio virtual – Parte 2
  3. Instale e configure o cliente de webmail RoundCube com usuários virtuais no Postfix – Parte 4
  4. Use Sagator, um gateway antivírus/antispam para proteger seu servidor de e-mail – Parte 5

Como nenhuma configuração de servidor de e-mail pode ser completada sem tomar precauções contra vírus e spam, abordaremos esse tópico no artigo atual.

Tenha em mente que mesmo quando os sistemas operacionais *nix-like são geralmente considerados livres de vírus, é provável que os clientes que usam outros sistemas operacionais também se conectem ao seu servidor de e-mail.

Por esse motivo, você precisa dar-lhes a confiança de que tomou as medidas necessárias para protegê-los, na medida do possível, contra tais ameaças.

Configurando SpamAssassin para Postfix

No processo de recebimento de e-mail, o spamassassin ficará entre o mundo exterior e os serviços de e-mail executados no próprio servidor. Se descobrir, de acordo com suas regras de definição e configuração, que uma mensagem recebida é spam, ele reescreverá a linha de assunto para identificá-la claramente como tal. Vamos ver como.

O arquivo de configuração principal é /etc/mail/spamassassin/local.cf, e devemos ter certeza de que as seguintes opções estão disponíveis (adicione-as se não estiverem presentes ou remova o comentário se necessário):

report_safe 0
required_score 8.0
rewrite_header Subject [SPAM]
  1. Quando report_safe está definido como 0 (valor recomendado), o spam recebido só é modificado modificando os cabeçalhos do e-mail conforme rewrite_header. Se estiver definido como 1, a mensagem será excluída.
  2. Para definir a agressividade do filtro de spam, required_score deve ser seguido por um número inteiro ou decimal. Quanto menor o número, mais sensível se torna o filtro. Definir required_score para um valor entre 8,0 e 10,0 é recomendado para um sistema grande que atende muitos (~100s) contas de e-mail.

Depois de salvar essas alterações, ative e inicie o serviço de filtro de spam e atualize as regras de spam:

systemctl enable spamassassin
systemctl start spamassassin
sa-update

Para obter mais opções de configuração, você pode consultar a documentação executando perldoc Mail::SpamAssassin::Conf na linha de comando.

Integrando Postfix e SpamAssassin

Para integrar eficientemente o Postfix e o spamassassin, precisaremos criar um usuário e um grupo dedicados para executar o daemon do filtro de spam:

useradd spamd -s /bin/false -d /var/log/spamassassin

Em seguida, adicione a seguinte linha na parte inferior de /etc/postfix/master.cf:

spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

E indique (no topo) que spamassassin servirá como content_filter:

-o content_filter=spamassassin

Finalmente, reinicie o Postfix para aplicar as alterações:

systemctl restart postfix

Para verificar se o SpamAssassin está funcionando corretamente e detectando spam recebido, é fornecido um teste conhecido como GTUBE (Teste Genérico para Email em Massa Não Solicitado).

Para realizar esse teste, envie um e-mail de um domínio fora da sua rede (como Yahoo!, Hotmail ou Gmail) para uma conta residente no seu servidor de e-mail. Defina a linha Assunto como desejar e inclua o seguinte texto no corpo da mensagem:

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Por exemplo, enviar o texto acima no corpo de uma mensagem da minha conta do Gmail produz o seguinte resultado:

E mostra o aviso correspondente nos logs:

journalctl | grep spam

Como você pode ver na imagem acima, esta mensagem de e-mail obteve uma pontuação de spam de 1002,3. Além disso, você pode testar o spamassassin diretamente na linha de comando:

spamassassin -D < /usr/share/doc/spamassassin-3.4.0/sample-spam.txt

O comando acima produzirá uma saída realmente detalhada que deve incluir o seguinte:

Se esses testes não forem bem-sucedidos, você pode consultar o guia de integrações do spamassassin.

Iniciando o ClamAV e atualizando as definições de vírus

Para começar, precisaremos editar /etc/clamd.d/scan.conf. Remova o comentário da seguinte linha:

LocalSocket /var/run/clamd.scan/clamd.sock

e comente ou exclua a linha:

Example

Em seguida, habilite e inicie o daemon do scanner clamav:

systemctl enable [email 
systemctl start [email 

e não se esqueça de definir o booleano antivirus_can_scan_system SELinux como 1:

setsebool -P antivirus_can_scan_system 1

Neste ponto vale a pena verificar o status do serviço:

Como você pode ver na imagem acima, nossas assinaturas de vírus têm mais de 7 dias. Para atualizá-los usaremos uma ferramenta chamada freshclam que foi instalada como parte do pacote clamav-update.

A maneira mais fácil de atualizar as definições de vírus é através de um cron job que é executado com a frequência desejada (uma vez por dia, por exemplo, à 1h, o horário do servidor, conforme indicado no exemplo a seguir, é considerado suficiente):

00 01 * * * root /usr/share/clamav/freshclam-sleep

Você também pode atualizar as definições de vírus manualmente, mas antes também terá que remover ou comentar a seguinte linha em /etc/freshclam.conf.

Example

Agora você deve ser capaz de executar:

freshclam

que atualizará as definições de vírus conforme desejado:

Testando ClamAV em busca de vírus em e-mails

Para verificar se o ClamAV está funcionando corretamente, vamos baixar um vírus de teste (que podemos obter em http://www.eicar.org/download/eicar.com) para o Maildir de [email  ( localizado em /home/vmail/linuxnewz.com/tecmint/Maildir) para simular um arquivo infectado recebido como anexo de e-mail:

cd /home/vmail/linuxnewz.com/tecmint/Maildir
wget http://www.eicar.org/download/eicar.com

E então verifique o diretório /home/vmail/linuxnewz.com recursivamente:

clamscan --infected --remove --recursive /home/vmail/linuxnewz.com

Agora, sinta-se à vontade para configurar esta verificação para ser executada por meio de um cronjob. Crie um arquivo chamado /etc/cron.daily/dailyclamscan, insira as seguintes linhas:

#!/bin/bash
SCAN_DIR="/home/vmail/linuxnewz.com"
LOG_FILE="/var/log/clamav/dailyclamscan.log"
touch $LOG_FILE
/usr/bin/clamscan --infected --remove --recursive $SCAN_DIR >> $LOG_FILE

e conceda permissões de execução:

chmod +x /etc/cron.daily/dailyclamscan

O cronjob acima verificará o diretório do servidor de e-mail recursivamente e deixará um registro de sua operação em /var/log/clamav/dailyclamscan.log (certifique-se de que /var/log/clamav forte> existe).

Vamos ver o que acontece quando enviamos o arquivo eicar.com de [email  para [email :

Resumo

Se você seguiu as etapas descritas neste tutorial e nos dois artigos anteriores desta série, agora você tem um servidor de e-mail Postfix funcional com proteção contra spam e antivírus.

AVISO LEGAL: Observe que a segurança do servidor é um assunto vasto e não pode ser abordado adequadamente em uma série curta como esta.

Por esse motivo, recomendo fortemente que você se familiarize com as ferramentas usadas nesta série e suas páginas de manual. Embora eu tenha feito o meu melhor para cobrir os conceitos essenciais associados a este tópico, não presuma que depois de ler esta série você estará totalmente qualificado para configurar e manter um servidor de e-mail em um ambiente de produção.

Esta série pretende ser um ponto de partida e não um guia completo para administração de servidores de e-mail no Linux.

Provavelmente você pensará em outras ideias que podem enriquecer esta série. Em caso afirmativo, sinta-se à vontade para nos enviar uma mensagem usando o formulário de comentários abaixo. Perguntas e outras sugestões também são bem-vindas – estamos ansiosos para ouvir de você!