Inserisci Infobox

Meccanismi Anti-Spam

Verifica relay e implementazione di sistemi anti-spam

SMTP Relay test
Autore: ask - ( Revisione: al ) - Ultimo Aggiornamento: 2004-06-04 12:00:59 - Data di creazione: 2004-06-04 12:00:59
Tipo Infobox: TIPS - Skill: 2- JUNIOR

Esistono in rete strumenti che permettono di verificare le possibilità di relay offerte da un server di posta.

Uno dei metodi più efficaci e utili è offerto dal sito mail-abuse.org che oltre a fornire informazioni varie permette di eseguire un relay test telnettando un server dedicato direttamente dal proprio server di posta:
telnet relay-test.mail-abuse.org
Il server remoto automaticamente visualizza il risultato di una serie di test su varie forme di relay permesse dal server SMTP locale.
Alcune possono essere necessarie (il relay per la ricezione di mail per domini locali) di altri se ne può abusare per l'invio di spam e vanno corrette.

Fra i siti dove è possibile controllare se si è inseriti in qualche Black List di IP usati per inviare spam si segnalano:
http://openrbl.org/ - OpenRBL
Ottimo ed essenziale sito che permette di verificare un indirizzo su molteplici black-list ed ottenere rapidamente altre informazioni come whois/dns lookups
http://moensted.dk/spam/ - drbcheck: dr. Jørgen Mash's DNS database list checker
La lodevole iniziativa di un sysadmin che permette il check di un indirizzo su moltissime liste, alcune delle quali non sono vere e proprie black list (in alcune è normale ritrovarci il proprio indirizzo)
http://ordb.org/ - ORDB
Database pubblico di relay aperti.
http://mail-abuse.org/cgi-bin/lookup - MAPS RBL
Pionieri delle RBL, offrono, commercialmente, l'uso di diverse black list basate su diversi criteri.
http://www.spamcop.net/ - Spam Cop
Altra storica black list, nota, suo malgrado e senza colpe, per essere stata coinvolta in un Hoax, a sua volta diffuso via spam.

Gestire il relay su Sendmail
Autore: ask - ( Revisione: al ) - Ultimo Aggiornamento: 2003-05-22 22:39:18 - Data di creazione: 2003-05-22 22:39:18
Tipo Infobox: TIPS - Skill: 3- INTERMEDIATE

Le versioni di Sendmail dalla 8.9 non permettono di default l'invio di posta (relay) a nessuno tranne localhost.
Su un server SMTP che debba offrire un servizio pubblico si devono configurare gli indirizzi che possono inviare posta e i domini per cui si ricevono email.
Una configurazione troppo aperta su chi può usare il servizio può essere sfruttata per azioni di spam, anche verso terzi, al contempo si ricorre sempre più spesso a Black List con liste di indirizzi IP da cui rifiutare posta.

Nel file /etc/mail/relay-domains (default) si possono indicare i domini ai quali aprire il relay. Nella configurazione m4 le principali FEATURE per gestire relay e meccanismi antispam sono:
- FEATURE(relay_hosts_only) In relay-domains si devono specificare tutti i singoli host, invece del solo nome di dominio, a cui aprire il relay
- FEATURE(relay_entire_domain) Apre al relay tutto il dominio locale del server SMTP
- FEATURE(access_db) Gestisce l'accesso al server per ogni host inserito nel file /etc/mail/access (il file ha formato tipo: esempio.com   RELAY)
- FEATURE(dnsbl) Si rifiutano le email provenienti da indirizzi inseriti nella Realtime Blackhole List (RBL), basata su DNS, specificata

Lo Spam e le black list (RBL)
Autore: al - Ultimo Aggiornamento: 2003-05-23 21:01:25 - Data di creazione: 2003-05-23 21:01:25
Tipo Infobox: DESCRIPTION - Skill: 2- JUNIOR

Quasi tutti sono d'accordo sul fatto che lo SPAM (invio su larga scala di mail non richieste) sia un distrubo, per non dire una piaga, di cui si può volentieri fare a meno e da cui ci si deve difendere.
Tecnicamente è possibile inviare spam utilizzando un qualsiasi server SMTP in rete, che per intrinseca natura permette il RELAY, cioè la possibilità di essere utilizzato per inviare posta, ai suoi client.

I problemi da affrontare, per gli amministratori di un server di posta sono di molteplice natura:
1- Impedire che il proprio server sia utilizzato per inviare spam in rete;
2- Limitare e filtrare il più possibile le mail di spam destinate agli utenti locali;
3- Evitare che il proprio server sia inserito in Black List contenenti indirizzi di server usati per spam di

1- Tipicamente un server di posta viene configurato per permettere il relay sono a client di indirizzi IP o domini specifici o a quelli che si autenticano in qualche modo.
Il problema quindi può venire da qualsiasi utente che è autorizzato ad usare il server e ne abusa consapevolmente, perchè lui è lo spammer, o senza saperlo, perchè vittima di qualcuno o qualcosa che abusa del suo computer.
Questo vale anche e soprattutto per server in rete, anche con tutt'altre funzioni, nel momento in cui vengono violati da un cracker che si mette ad utilizzarli per spammare ferocemente.

A questo proposito buona pratica è:
- Verificare che il proprio server di posta non abbia relay aperti a indirizzi che non siano autorizzati, controllati e considerati fidati (tramite siti web o servizi in rete dedicati, o verifiche da indirizzi arbitrari). Evitare di fare controlli basati su nomi di dominio (manipolabili) e farli solo sulla base degli indirizzi IP sorgenti.
- Limitare sul server il numero massimo di mail che un client può inviare in un dato lasso di tempo. Facendo attenzione a casi in cui l'invio di grandi quantità di messaggi è legittimo (mailing list, newsletter ecc).
- Monitorare le attività di invio di mail, possibilmente con statistiche visuali, che possano velocemente mostrare se ci sono comportamenti anomali ed eccessivi volumi di messaggi.
- Impedire, ovviamente, che qualcuno violi uno dei propri server e lo utilizzi abusivamente per spammare.

2- Le attività volte a limitare l'arrivo di eccessivo spam sulle caselle di posta locali sono altrettanto necessarie.
I metodi di difesa sono vari, il più comodo e diffuso è quello di appoggiarsi ad una o più RBL, black list, mantenute da organizzazioni o società, che contengono elenchi di indirizzi che sono stati utilizzati per l'invio di spam in passato o che si basano su principi diversi (relay aperti, indirizzi IP assegnati a dialup, socks proxy aperti...).
In questo senso considerare che:
- Ci sono diversi metodi per eseguire un controllo su queste liste di indirizzi. Quello più comune è di appoggiarsi ad un server dns che comunica al server di posta se un indirizzo è nella sua black list (DNSBL).  
- Non esagerare nell'implementare troppi DNSBL sullo stesso server di posta, soprattutto se questi gestisce grossi volumi: comportano ciascuno una query DNS esterna per ogni messaggio in arrivo.
- Fare attenzione alle Black List che si utilizzano, alcune sono troppo restrittive e limitano la possibilità di ricevere posta da troppi server smtp legittimi: nessuno vuole lo spam, ma molti non sono disposti a perdere mail potenzialmente importanti per difendersene.
- Su server di posta eseguire un controllo sul reverse degli IP da cui arrivano i messaggi. E' una misura che può essere pericolosa (creando falsi negativi e respingendo mail validi da server con DNS misconfigurato) e tuttosommato facilmente bypassabile da chi invece vuole veramente fare spam, per cui va valutata con estrema prudenza.
- Tenere sotto controllo cosa viene regolarmente rifiutato, farsi un'idea dei flussi di posta, sia per capire quanto possano essere efficaci i filtri implementati sia per cercare di verificare se generano falsi negativi.
- Per valutare quali RBL possono fare al proprio caso, verificare le statistiche che si trovano in rete.
Una piuttosto interessante è quella di OpenRBL, che da un'idea di quali RBL sono più aggressive: http://openrbl.org/stats.htm

3- Le stesse black list che si utilizzano per bloccare l'arrivo di posta indesiderata si possono rivelare un'arma a doppio taglio nel momento in cui un PROPRIO server di posta si ritrova su di esse.
Questo può capitare per vari motivi ma di fatto è un problema perchè impedisce al server di offrire un servizio completo ai suoi client, avendo altri server in rete, che utilizzano le black list in cui si è incappati, che rifiutano di accettare la posta, anche legittima, dei propri utenti.
Generalmente tutte le black list permettono di rimuovere un indirizzo, dopo che è dimostrato che non ha più relay aperti e non può essere utilizzato di nuovo per inviare spam. Il problema è che le black list sono molte e che non sempre sono rapide nell'aggiornare i propri database.
Si consiglia di verificare regolarmente gli indirizzi dei propri server di posta su siti che permettono ricerche multiple su diverse liste. Fra questi segnaliamo OpenRBL e DRBcheck

Postfix: configurazioni anti-spam e abusi
Autore: lorenz - Ultimo Aggiornamento: 2003-06-30 21:06:44 - Data di creazione: 2003-06-30 21:06:44
Tipo Infobox: DESCRIPTION - Skill: 4- ADVANCED

Una volta configurato il server con i parametri per l'invio, la ricezione e l'inoltro della posta si può prendere in considerazione l'ottimizzazione del servizio e un maggiore controllo delle sue funzioni.

Esistono molte possibilità per definire il comportamento di Postfix e in special modo per controllarne gli accessi, sia da un punto di vista di consumo delle risorse sia dal controllo di cosa può passare e cosa invece no per evitare, ad esempio, l'invio massivo attraverso il server di UCE (Unsolicited Commercial Email) o comunemente SPAM. Per controllare l'invio di SPAM di default l'SMTP-server di Postfix accetta esclusivamente la posta per il network o il dominio locale e per i domini ospiti del server, in modo che dagli estranei non si accetti alcuna connessione. Esistono diversi modi per assumere maggior controllo su questa problematica usando liste di accesso in stile Sendmail o RBL (Real Time Blackhole List) e per un approfondimento si può fare riferimento alla documentazione ufficiale disponibile sul sito di Postfix, www.postfix.org, o nella directory di sistema dedicata alla documentazione dei pacchetti installati.
E' importante inoltre controllare le quantità di posta processabile, ad esempio per limitare il numero di processi contemporanei anche se si dispone di un limite massimo di 1000 client.

default_process_limit = valore
permette di controllare il numero di processi in uscita e in entrata. Di default è settato a 100 ma nel caso di una piccola rete casalinga andrebbe benissimo un valore di 10 mentre per un mail server principale di un provider andrebbe meglio un valore di 1000 o 10000.

Per controllare che il server non sia usato per un attacco tipo DoS o per spam si usano alcune variabili che ai loro valori di default dovrebbero andare benissimo.
initial_destination_concurrency = valore (default:2)
che controlla quanti messaggi sono inizialmente inviati verso la stessa destinazione prima di attuare un invio multiplo.
local_destination_concurrency_limit = valore (default:2)
che controlla quanti messaggi sono inviati contemporaneamente allo stesso recipiente locale.
default_destination_concurrency_limit = valore (default:20)
che impone il limite di messaggi inviabili contemporaneamente alla stessa destinazione.

Ulteriori parametri permettono quanto meno di limitare l'uso del server da parte di client sbadati o maliziosi, rallentando di fatto le loro connessioni fino a chiuderle senza troppi imbarazzi. Il server incrementa un conteggio per sessione degli errori dovuti a richieste da parte dei client non riconosciute valide o sconosciute e di tutte le richieste che in qualche modo violano le regole UCE. Questo conteggio si azzera quando un messaggio viene inviato correttamente. Se il conteggio aumenta il server limita i danni rallentando il client.
Le variabili che controllano queste funzioni sono:
smtpd_error_sleep_time = valore (va bene il valore di default:1)
che in sostanza cerca di evitare gli errori di un client quando il conteggio è ancora basso ponendo un tempo limite in cui il server resta in pausa mentre comunica l'errore al client.
smtpd_soft_error_limit = valore
di default 10 stabilisce che quando il numero di errori per sessione supera il valore impostato il server attende il valore del conteggio in secondi prima di rispondere ad un'altra richiesta del client.
smtpd_hard_error_limit = valore
di default 20 e stabilisce che al superare nel conteggio del valore impostato il server SMTP taglia la connessione.

SpamAssassin
Autore: al - Ultimo Aggiornamento: 2003-09-05 15:47:58 - Data di creazione: 2003-09-05 15:47:58
Tipo Infobox: DESCRIPTION - Skill: 2- JUNIOR

SpamAssassin è un mail filter che permette di identificare lo spamming attraverso l'analisi del testo e degli headers di un messaggio di posta, oltre ad appoggiarsi a RBL pubbliche, a liste Black e White automatiche, filtri baynesiani ed a database basati su spam-tracking collaborativo come Razor.
Il metodo di valutazione se un messaggio è da considerarsi spam è euristico, vengono assegnati diversi punteggi (configurabili) a diversi elementi e si definisce una soglia limite oltre il quale il messaggio viene considerato spam.
E' scritto in Perl ed è installabile anche tramite la shell interattiva di CPAN.
La configurazione di base è piuttosto semplice e i parametri di default sono validi per molte occasioni, può essere applicato ad un singolo utente o ad un intero server di posta e può essere configurato per filtrare la posta sia al momento del delivery locale (tipicamente tramite Procmail) che durante la ricezione da parte del server SMTP.

Installazione
SpamAssassin viene fornito di default su molte distribuzioni Linux e, in questi casi la sua installazione viene fatta tramite pacchetto RPM o DEB.
Alternativamente è possibile installarlo tramite CPAN (come root):
[root@giraffa al]# perl -MCPAN -e shell
cpan> o conf prerequisites_policy ask
cpan> install Mail::SpamAssassin
cpan> quit

Su Perl 5.8 o successivi e, per esempio, da RedHat 8 in poi, viene supportato l'Unicode di default che può creare problemi su vari script Perl (SpamAssassin incluso) e non solo.
Per evitarlo impostare la variabile d'ambiente LANG a en_US (export LANG=en_US) o altre lingue senza specificare "utf8". Su RedHat editare il file di configurazione /etc/sysconfig/i18n

Utilizzo
SpamAssassin è di fatto un filtro, accetta in STDIN un messaggio di posta, lo analizza e lo manda su STDOUT aggiungendo degli header che definiscono se viene considerato Spam e con quali "punteggi".
Il sistema può funzionare direttamente come comando autonomo (spamassassin) o come sistema client (spamc) - server (spamd), decisamente più performante e raccomandabile su configurazioni system-wide.
Nel pacchetto sono già forniti gli script per gestire il servizio (tipo /etc/init.d/spamassassin start|stop).
Il filtro, in se, si limita ad aggiungere degli header custom al messaggio di posta che definiscono il "punteggio di spam" assegnato.

Configurazione
A questo punto è opportuno configurare un sistema per utilizzare SpamAssassin. Agire a livello di Procmail è generalmente considerata la scelta più comoda, anche se non ci impedisce di occupare banda con mail di spam quantomeno può alleviare l'utente finale dalla loro ricezione.
Procmail può essere configurato globalmente, con /etc/procmailrc e/o per singolo utente (~/.procmailrc), permette di impostare una gran varietà di regole per gestire il delivery della posta secondo diverse condizioni.
Ecco un esempio di /etc/procmailrc che redirige ad un unica casella postale (qui chiamata "spam") tutte le mail che Spamassassin considera spam:
DROPPRIVS=yes SI forza Procmail a non eseguire il controllo come utente root. Verificare con attenzione tutti i permessi sui file (log e mailbox) su cui deve intervenire
LOGFILE=/var/log/procmail.log Il file di log di Procmail
# VERBOSE=yes Abilitare il verbose logging è fondamentale per operazione di troubleshhoting
# INCLUDERC=$HOME/.procmailrc Se si vuole è possibile specificare un file di configurazione custom per ogni utente

:0fw Prima regola di procmail...
* < 256000 ... si applica a tutti i messaggi di dimensioni inferiori a 256 K
| spamc -f I messaggi vegnono indicati al client di SpamAssassin (il server spamd deve essere running)

:0:/tmp/spam.lock Seconda regola, la definizione di un lock file specifico è opzionale
* ^X-Spam-Flag: YES Matching per mail che nel testo hanno una riga che inizia (^) con X-Spam-Flag: YES (questo header viene automaticamente aggiunto da spamc se la mail viene considerata spam)
/var/spool/mail/spam Se la condizione è verificata la mail viene direzionata sul file indicato

Rifiutare mail da server non risolti con Sendmail
Autore: rpennol - ( Revisione: al ) - Ultimo Aggiornamento: 2004-05-15 13:38:41 - Data di creazione: 2004-05-15 13:38:41
Tipo Infobox: TIPS - Skill: 3- INTERMEDIATE

Lo spam è un fenomeno in crescita esponenziale.

L'uso quotidiano della posta elettronica e di Internet agevola sicuramente questo tipo di "pubblicità indesiderata". Molto spesso le mail di spam provengono da domini che non esistono o che non sono registrati come MX (Mail eXchanger) sui DNS.
Per chi utilizza Sendmail esiste un modo semplice per arginare il problema spam. Basta commentare la riga:
FEATURE(`accept_unresolvable_domains')dnl
che diventa in questo modo:
dnl FEATURE(`accept_unresolvable_domains')dnl
nel file /etc/mail/sendmail.mc

Di default Sendmail accetta posta da qualsiasi dominio, commentando la FEATURE si impone a Sendmail di non accettare mail da domini non risolvibili (di cui non è stato configurato il reverse DNS). Questo intervento, però, irschia di impedre la ricezione di mail da server SMTP validi per i quali non è stato correttamente configurato il DNS.

Privacy Policy