Ricerca nel sito web

Come aggiungere protezione antivirus e antispam al server di posta Postfix con ClamAV e SpamAssassin - Parte 3


Nei due articoli precedenti di questa serie Postfix hai imparato come impostare e gestire il database del server di posta elettronica tramite phpMyAdmin e come configurare Postfix e Dovecot per gestire la posta in entrata e in uscita. Inoltre, abbiamo spiegato come configurare un client di posta, come Thunderbird, per gli account virtuali che abbiamo creato in precedenza.

  1. Configurare il server di posta Postfix e Dovecot con MariaDB – Parte 1
  2. Come configurare Postfix e Dovecot con utenti di domini virtuali – Parte 2
  3. Installa e configura il client Webmail RoundCube con utenti virtuali in Postfix – Parte 4
  4. Usa Sagator, un gateway antivirus/antispam per proteggere il tuo server di posta - Parte 5

Poiché nessuna configurazione del server di posta elettronica può essere completa senza prendere precauzioni contro virus e spam, tratteremo questo argomento nel presente articolo.

Tieni presente che anche se i sistemi operativi *nix-like sono generalmente considerati esenti da virus, è probabile che anche i client che utilizzano altri sistemi operativi si connettano al tuo server di posta elettronica.

Per questo motivo, devi dare loro la certezza di aver adottato le misure necessarie per proteggerli, nella misura del possibile, da tali minacce.

Configurazione di SpamAssassin per Postfix

Nel processo di ricezione della posta elettronica, spamassassin si frapponerà tra il mondo esterno e i servizi di posta elettronica in esecuzione sul tuo server stesso. Se rileva, secondo le regole di definizione e la configurazione, che un messaggio in arrivo è spam, riscriverà la riga dell'oggetto per identificarlo chiaramente come tale. Vediamo come.

Il file di configurazione principale è /etc/mail/spamassassin/local.cf e dovremmo assicurarci che le seguenti opzioni siano disponibili (aggiungerle se non sono presenti o decommentare se necessario):

report_safe 0
required_score 8.0
rewrite_header Subject [SPAM]
  1. Quando report_safe è impostato su 0 (valore consigliato), lo spam in arrivo viene modificato solo modificando le intestazioni delle email come da rewrite_header. Se è impostato su 1, il messaggio verrà eliminato.
  2. Per impostare l'aggressività del filtro antispam, required_score deve essere seguito da un numero intero o decimale. Minore è il numero, più sensibile diventa il filtro. Si consiglia di impostare required_score su un valore compreso tra 8.0 e 10.0 per un sistema di grandi dimensioni che serve molti (~100) account email.

Dopo aver salvato tali modifiche, attiva e avvia il servizio di filtro antispam, quindi aggiorna le regole antispam:

systemctl enable spamassassin
systemctl start spamassassin
sa-update

Per ulteriori opzioni di configurazione, potresti fare riferimento alla documentazione eseguendo perldoc Mail::SpamAssassin::Conf nella riga di comando.

Integrazione di Postfix e SpamAssassin

Per integrare in modo efficiente Postfix e spamassassin, dovremo creare un utente e un gruppo dedicati per eseguire il demone del filtro antispam:

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

Successivamente, aggiungi la seguente riga in fondo a /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 indica (in alto) che spamassassin fungerà da content_filter:

-o content_filter=spamassassin

Infine, riavvia Postfix per applicare le modifiche:

systemctl restart postfix

Per verificare che SpamAssassin funzioni correttamente e rilevi lo spam in entrata, viene fornito un test noto come GTUBE (Test generico per email in blocco non richieste).

Per eseguire questo test, invia un'e-mail da un dominio esterno alla tua rete (come Yahoo!, Hotmail o Gmail) a un account residente nel tuo server di posta. Imposta la riga dell'oggetto su quello che desideri e includi il seguente testo nel corpo del messaggio:

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

Ad esempio, l'invio del testo sopra riportato nel corpo di un messaggio dal mio account Gmail produce il seguente risultato:

E mostra l'avviso corrispondente nei log:

journalctl | grep spam

Come puoi vedere nell'immagine sopra, questo messaggio email ha ottenuto un punteggio di spam di 1002,3. Inoltre, puoi testare spamassassin direttamente dalla riga di comando:

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

Il comando precedente produrrà un output davvero dettagliato che dovrebbe includere quanto segue:

Se questi test non hanno esito positivo, potresti fare riferimento alla guida alle integrazioni di spamassassin.

Avvio di ClamAV e aggiornamento delle definizioni dei virus

Per iniziare, dovremo modificare /etc/clamd.d/scan.conf. Decommentare la seguente riga:

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

e commentare o eliminare la riga:

Example

Quindi abilita e avvia il demone dello scanner clamav:

systemctl enable [email 
systemctl start [email 

e non dimenticare di impostare il valore booleano antivirus_can_scan_system SELinux su 1:

setsebool -P antivirus_can_scan_system 1

A questo punto è bene verificare lo stato del servizio:

Come puoi vedere nell'immagine sopra, le nostre firme dei virus sono più vecchie di 7 giorni. Per aggiornarli utilizzeremo uno strumento chiamato freshclam che è stato installato come parte del pacchetto clamav-update.

Il modo più semplice per aggiornare le definizioni dei virus è tramite un processo cron che viene eseguito con la frequenza desiderata (una volta al giorno, ad esempio, all'1 ora del server, come indicato nell'esempio seguente è considerato sufficiente):

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

Puoi anche aggiornare manualmente le definizioni dei virus, ma prima dovrai anche rimuovere o commentare la seguente riga in /etc/freshclam.conf.

Example

Ora dovresti essere in grado di eseguire:

freshclam

che aggiornerà le definizioni dei virus come desiderato:

Test di ClamAV per virus nelle e-mail

Per verificare che ClamAV funzioni correttamente, scarichiamo un virus di prova (che possiamo ottenere da http://www.eicar.org/download/eicar.com) nella Maildir di [email  ( che si trova in /home/vmail/linuxnewz.com/tecmint/Maildir) per simulare un file infetto ricevuto come allegato di posta:

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

Quindi scansiona ricorsivamente la directory /home/vmail/linuxnewz.com:

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

Ora, sentiti libero di impostare questa scansione in modo che venga eseguita tramite un cronjob. Crea un file chiamato /etc/cron.daily/dailyclamscan, inserisci le seguenti righe:

#!/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 concedere i permessi di esecuzione:

chmod +x /etc/cron.daily/dailyclamscan

Il cronjob riportato sopra eseguirà la scansione ricorsiva della directory del server di posta e lascerà un registro delle sue operazioni in /var/log/clamav/dailyclamscan.log (assicuratevi che /var/log/clamav esiste la directory).

Vediamo cosa succede quando inviamo il file eicar.com da [email  a [email :

Riepilogo

Se hai seguito i passaggi delineati in questo tutorial e nei due articoli precedenti di questa serie, ora disponi di un server di posta Postfix funzionante con protezione antispam e antivirus.

ESCLUSIONE DI RESPONSABILITÀ: tieni presente che la sicurezza del server è un argomento vasto e non può essere adeguatamente trattato in una breve serie come questa.

Per questo motivo, ti incoraggio vivamente a familiarizzare con gli strumenti utilizzati in questa serie e le relative pagine man. Anche se ho fatto del mio meglio per trattare i concetti essenziali associati a questo argomento, non dare per scontato che dopo aver seguito questa serie tu sia pienamente qualificato per configurare e gestire un server di posta elettronica in un ambiente di produzione.

Questa serie è intesa come punto di partenza e non come guida esaustiva all'amministrazione del server di posta in Linux.

Probabilmente ti verranno in mente altre idee che potranno arricchire questa serie. Se è così, sentiti libero di inviarci una nota utilizzando il modulo di commento qui sotto. Anche domande e altri suggerimenti sono apprezzati: non vediamo l'ora di sentire la tua opinione!