Postgrey e le Greylist alleati per la lotta allo spam

postgreyLa posta indesiderata è un vero flagello per tutti, peggio ancora lo e’ per le aziende. Adesso, però esiste una nuova arma.

Nonostante la raffinatezza e l’efficacia raggiunte da numerosi sistemi antispam, sempre più spesso questi strumenti si rivelano insufficienti per risolvere il problema della posta indesiderata. I disagi provocati dall’attacco di uno “spammer” riguardano tutti, senza alcuna differenza di sorta, ma assumono proporzioni esagerate in ambito aziendale. Per provare a risolvere il problema ci viene incontro un nuovo strumento, le cosiddette Grey-List. Vediamo di cosa si tratta e come usarle per arginare il fenomeno spam.

Il concetto delle Greylist

Le greylist basano il loro funzionamento sul fatto che la maggior parte degli spammer provano l’invio di un messaggio una volta sola e, in caso di errore, non eseguono le richieste di rinvio del messaggio previste dal protocollo SMTP, in quanto, così facendo, le code di invio delle e-mail crescerebbero a dismisura. Sfruttando questo comportamento, quando un server dotato di greylist riceve un messaggio, per prima cosa controlla se in passato ha già ricevuto dall’indirizzo IP del server corrispondente e dal mittente indicato un’e-mail per il destinatario richiesto. Se il controllo riscontra uno dei valori appena indicati  il server interrompe il collegamento e genera un errore che causa la richiesta di ritrasmissione del messaggio, mentre in caso negativo l’e-mail viene inoltrata normalmente al destinatario. In caso di collegamento interrotto, i server “mittente” correttamente configurati, ritentano l’invio del messaggio (in genere dopo un’attesa di 10 minuti). Questo comporta un ritardo nella consegna del messaggio dell’ordine di qualche decina di minuti solo per il primo messaggio proveniente da un determinato mittente, esclusi quelli in arrivo da alcuni domini di uso abituale che sono già approvati all’interno delle greylist, mentre i messaggi successivi non subiranno alcun ritardo.

Postgrey

In questa piccola guida parleremo di postgrey, un’ implementazione delle greylist per postfix (ma può essere usata con un qualsiasi altro server di posta).

Per installarlo è sufficiente eseguire il comando

# apt-get install postgrey

una volta terminata l’installazione, il demone postgrey sarà in ascolto sulla porta 60000.

Postfix

Per integrare il servizio in Postfix è sufficiente modificare il file /etc/postfix/main.cf. All’interno del file è necessario cercare la direttiva smtpd_recipient_restrictions ed aggiungere, alla fine, la seguente stringa:

check_policy_service inet:127.0.0.1:60000

Nota:
le varie voci relative a smtpd_recipient_restrictions dovranno essere separate da una virgola, e se smtpd_recipient_restrictions non dovesse esistere, sarà necessario aggiungerla nel seguente modo:

smtpd_recipient_restrictions = check_policy_service inet:127.0.0.1:60000

Una volta terminato sara’ sufficiente riavviare Postfix:

# /etc/init.d/postfix restart

e controllare nel file di log /var/log/mail.log le email in arrivo. Si vedrà che alcune verranno rifiutate con un messaggio di postgrey.

Postgrey configurazione

La configurazione di postgrey è modificabile tramite tre file:

1) /etc/defaults/postgrey # che permette la modifica delle opzioni di avvio del demone:

--inet 
permette di specificare l’indirizzo e la porta su cui sarà in ascolto il demone;
--delay 
l’intervallo, in secondi, di durata del rigetto;
--max-age 
dopo quanto tempo rimuovere gli indirizzi che sono stati visti (memoria storica del programma).

Le opzioni vanno inserite nella variabile POSTGREY_OPTS, separate da uno spazio.

2) whitelist_clients

Contiene una lista dei domini da cui greylist non bloccherà la posta.

3) whitelist_recipients 

Contiene una lista di destinatari verso cui non bloccare la posta (ad esempio il postmaster oppure abuse). Normalmente non richiede modifiche.

Conclusione

Sebbene questo sistema sia veramente molto semplice, è in grado di bloccare una buona quantità di spam.

Inoltre, cosa da tenere molto in considerazione, questo è un metodo che difficilmente genera dei falsi positivi (in quanto la risposta del server mail corrisponde ad un “ripassa più tardi”) e non aumenta di molto il carico del sistema.

 

Firehol il firewall flessibile

fireholSi parla spesso di come proteggere il proprio PC/Server e la parola che sicuramente ricorre piu’ spesso e’ FIREWALL, non c’e’ dubbio.

Il problema che salta all’occhio di chiunque si sia mai cimentato con la “scrittura” delle regole di IPtables e derivati, e’ la non immediata semplicita’ nel comprendere la giusta sintassi da utilizzare e dunque nel capire il corretto posizionamento delle tante/tantissime variabili che rendono questi strumenti ottimi nel tenere lontani la maggior parte dei malintenzionati .

Uno strumento che potra’ certamente darvi una mano e’ il tool FireHol.

FireHOL è un linguaggio per esprimere le regole del firewall, non semplicemente uno script che produce un qualche tipo di firewall.” I file di configurazione di FireHOL sono script shell (ma di fatto non lo sembrano poiche’ sono semplici che più semplici non si può).

FireHOL viene fornito con firehol-wizard, che crea un file di configurazione che è poi necessario modificare a mano.

Il suggerimento migliore che posso dare rimane quello di utilizzare sempre, soprattutto all’inizio, le macchine virtuali, per  riuscire a prendere dimestichezza con la nuova tecnologia.

Si tratta dunque di un particolare software che, tramite un “semplice” file di configurazione, permette di impostare velocemente le regole del firewall per proteggere l’accesso dalla LAN verso Internet e viceversa. Il file in questione si trova in /etc/firehol/firehol.conf, quindi apriamolo con sudo vim /etc/ firehol/firehol.conf, cancelliamone il contenuto pre esistente e scriviamo quanto segue:

Anche l’installazione e’ semplice come bere un bicchier d’acqua

sudo apt-get install firehol

Questo e’ un piccolo esempio utile per dare un’idea della metodologia di configurazione del file:

#Imposto la LAN eth0 scheda di rete verso internet

interface eth0 internet

# Di default non accettare nessun pacchetto

policy reject

protection strong

#Accetta solamente questi servizi

server ssh accept

server ping accept

server http accept

server https accept

server dns accept

client ping accept

client http accept

client https accept

#Imposto eth1 come rete interna lan

interface eth1 lan

#Accetta tutto il traffico nella LAN interna

policy accept

#Imposto le tabelle di routing

#Il traffico dalla LAN (eth1) reindirizzato verso eth0

router lan2internet inface eth1 outface eth0

# Regola per il masquerade

masquerade

#Accetta tutto il traffico

router all accept

#In ingresso, invece, fai il contrario...

router internet2lan inface eth0 outface eth1

** Le righe precedute dal simbolo # sono commenti che possono essere omessi, ma che possono essere sempre di grande aiuto nel rileggere vecchie configurazioni. Dopo aver inserito tutte le regole, salviamo e usciamo dall’editor.

A questo punto, bastera’ impostare il firewall in modo che si attivi automaticamente all’avvio del server. Apriamo dunque il file firehol con sudo vim /etc/default/firehol e cambiamo la riga START_FIREHOL=NO in START_FIREHOL=YES.

Infine, avviamo il firewall con il comando sudo /etc/init.d/firehol start. Il nostro lavoro è quasi finito, ma mancano ancora alcuni passi.

Buone configurazioni!