gateway AntiSPAM

Transcript

gateway AntiSPAM
Gateway AntiSpam OpenSource
Chris Gamboni
CISSP
[email protected]
[email protected]
TiLug day
Locarno, 5 novembre 2005
Sommario
●
Definizioni
●
Descrizione problema
●
Tecnologie antispam
●
SpamAssassin
●
OpenBSD spamd
●
Antispam Gateway
●
Links
SPAM: definizioni
●
SPAM: o JUNK, messaggi pubblicitari non richiesti
●
SCAM, PHISHING: tentativi d'estorsione
●
HAM: messaggio non SPAM ●
●
FALSI POSITIVI: E­mail normali classificati erroneamente come SPAM
FALSI NEGATIVI: E­mail SPAM non riconosciuti come tali
Problema: v1@gra 1.99$ ! v1c0d1n ●
Situazione: –
Nessun filtro antispam (o filtro non sufficiente)
–
Troppa SPAM che arriva direttamente agli utenti
–
Sistema troppo delicato per poter fare “esperimenti”
–
Add­on antispam costosi
Mail server
interno
Soluzione: Gateway AntiSpam
●
●
Il gateway antispam è un server che va messo tra internet ed il mail server esistente (interno). Nessuna modifica al mail server interno (eventualmente solo cambiare MX in dns)
Gateway
Antispam
Mail server
interno
Gateway AntiSpam OpenSource
●
Diverse soluzioni:
–
MailScanner + Postfix + SpamAssassin
–
MIMEDefang + sendmail + SpamAssassin
–
Amavisd­new + Postfix + SpamAssassin
–
Smtp­vilter + sendmail + SpamAssassin
–
procmail + sendmail + SpamAssassin
–
postfix + dspam
–
...
Cosa fare con lo SPAM?
●
Bloccare i messaggi spam:
–
●
ma i falsi positivi? Accettare i messaggi spam, contrassegnandoli: –
Con una modifica nell'header: ●
–
Con una modifica del subject: ●
–
Esempio: X­SPAM­Status: Yes
Esempio: [**SPAM**] Get V1agra n0'w
Poi si agisce con regole/filtri (mail server interno o utente)
SpamAssassin
●
●
Usa diverse tecnologie per identificare lo spam: –
Body / Header / URI tests
–
Network Tests: RBL, SUBRL, DCC, Pyzor, Razor2
–
Bayesian Filters
–
AutoWhiteListing / Blacklisting / Whitelisting
–
SPF check/ Domain Keys check
Utilizzabile come applicazione locale (per user) o di sistema (per dominio, detto SiteWide)
RBLs: Realtime Block Lists
●
Liste contenenti indirizzi IP di (presunti) spammer
●
Esempio: –
Dynamic IP Address Lists: dul.dnsbl.sorbs.net, ...
–
Spam lists: spamrbl.swinog.ch, sbl.spamhaus.org, ...
–
Worm lists: wormrbl.swinog.ch, xbl.spamhaus.org, ...
–
Known Spammer: sbl.spamhaus.org, ...
–
China/Korea CIDR: reti assegnate Cina e Corea
SURBL: Spam URI Realtime Block List
●
●
●
I messaggi SPAM pubblicizzano quasi sempre un sito web
SURBL, a differenza di RBL, non si occupa di chi spedisce il messaggio, ma del sito (URL) pubblicizzato all'interno del messaggio
Esempio di liste SURBLs: –
uribl.swinog.ch, multi.surbl.org, ...
Header tests
●
●
L'header dei messaggi viene analizzato per scoprire se è stato spedito da host in qualche RBL oppure se contiene informazioni false
Nell'header ci sono le informazioni sul percorso del messaggio, sull'ora, ecc...
header TEST_SPAM Subject =~/\bV1agra\b/i score 3.8
header TEST_TILUG From =~ /tilug\.ch/i
score ­1.0
Body tests
●
●
Si tratta di analizzare il testo del messaggio, cercando parole o frasi che possono caratterizzare SPAM o HAM
Esempio con combinazione di altri test: header _LOCAL_FROM_NEWS From ~= /news@example\.com/i
body _LOCAL_SALES_FIGURES /\bMonthly Sales Figures\b/
meta LOCAL_NEWS_SALES_FIGURES (_LOCAL_FROM_NEWS &&_LOCAL_SALES_FIGURES)
score LOCAL_NEWS_SALES_FIGURES ­1.0
Whitelist / Blacklist
●
Permette di modificare il punteggio in base all'indirizzo
●
Esempio: –
whitelist_from [email protected] ( ­15 pts) –
whitelist_to [email protected] (­ 6 pts)
–
more_spam_to [email protected] (­ 20 pts)
–
blacklist_from [email protected] (+ 100 pts)
–
blacklist_to [email protected] ( + 10 pts)
AWL: AutoWhiteList
●
●
●
Il punteggio assegnato ad un e­mail viene “pesato” con la media dei punteggi precedenti provenienti dallo stesso utente e dallo stesso IP
Esempio: –
Il primo e­mail di FatPenguin prende 20 punti (spam!)
–
Il secondo e­mail di FatPensuin prenderebbe 2 punti, ma grazie al precendete e­mail, AWL ne mette 11 (altro spam!)
Consiglio: attivare AWL solo dopo aver già iniziato il tuning di SpamAssassin
Message recognition
●
●
●
●
DCC*: effettua il checksum del messaggio ricevuto e lo invia ad alcuni server identificare i messaggi inviati in massa (bulk)
PYZOR: come DCC, con un checksum di parte del messaggio detetta i messaggi inviati in massa (bulk) RAZOR2*: a differenza degli altri, RAZOR controlla, usando un checksum, se il messaggio è conosciuto come SPAM (Razor2 usa gli spamtrap).
* licenza: in alcuni casi è necessario ottenere una licenza
Bayesian filtering
●
●
●
Statistico: con il sistema Bayes, SpamAssassin stabilisce la probabilità che sia SPAM in base ai messaggi (spam e ham) visti precedentemente
Funziona con almeno 200 messaggi SPAM e 200 messaggi HAM
Il sistema Bayes dev'essere regolarmente aggiornato:
–
Manualmente: sa­learn ­­ham msg, sa­learn ­­spam msg
–
Automaticamente: con Bayes autolearn
SpamAssassin: punteggio
●
●
●
●
SpamAssassin effettua alcune centinaia di tests sui messaggi
Questi tests possono assegnare punteggi positivi (spam) o negativi (ham)
Il messaggio è considerato SPAM solo se il punteggio totale è almeno di 5.0 (valore di default)
Consiglio: per i gateway antispam e' consigliabile, almeno inizialmente, aumentare il limite a 7 o 8 punti Greet Pause
●
●
Greet pause è una feature di sendmail (ma non solo)
Ad ogni connessionne sulla porta smtp, MTA aspetta 5­10 secondi prima di mandare i saluti (220...)
$ telnet 192.168.3.33 25
.... 5 secondi ....
220 mailgateway1.tilug.ch ESMTP Sendmail 8.13.3/8.13.3; Fri, 4 Nov 2005 17:21:20 +0100 (CET)
●
Se il client spedisce dati prima di aver ricevuto i saluti, otterrà un errore 550 e la sessione verrà interrotta. Alcuni spammer/worm/trojan cadono in questa trappola
Sender Policy Framework
●
●
Si pubblica in DNS l'elenco dei server che possono spedire e­mail del proprio dominio.
Esempio: $ host ­t TXT tilug.ch
tilug.ch text "v=spf1 mx ip4:192.0.0.2 ­all"
–
●
Significa che gli e­mail provenienti da tilug.ch sono validi solo se provengono dagli indirizzi IP elencati.
Purtroppo SPF è anche conosciuto come: “Spammer Permitted From”, infatti gli spammer sono tra i piu grandi utilizzatori di questo sistema...
Domain Keys
●
●
I messaggi vengono firmati digitalmente dal server del mittente, che mette in DNS la propria chiave pubblica.
Il server del ricevente può, in base alla firma e al dominio estratto dal campo From, verificare che il messaggio sia stato effettivamente spedito dal quel dominio.
OpenBSD spamd
●
●
Funziona con PF (packet filter) e offre: –
Blacklisting
–
Whitelisting
–
Greylisting
–
Greytrapping
–
Stuttering
Usato come front­end (e anche load balancer)
Greylist
Blacklist
PF
SPAMD
Whitelist
Sendmail / MTA
Sendmail / MTA
OpenBSD spamd: PF
●
/etc/pf.conf
table <spamd> persist
table <spamd­white> persist
...
rdr pass on $ext_if proto tcp from <spamd> to port smtp ­> 127.0.0.1 port spamd
rdr pass on $ext_if proto tcp from !
<spamd­white> to port smtp 127.0.0.1 port spamd
...
OpenBSD: spamd blacklisting
●
●
●
spamd­setup crea un elenco BLACKLIST contenenti IP di spammer (spews, sbl, china/korea, ...)
Le connessioni proveniente da IP in BLACKLIST vengono mandate da PF a spamd che provvede a rallentarle (fino a 1Byte/s) danneggiando lo spammer
Il rallentamento del presunto spammer può dare il tempo ad altri sistemi di riconoscere lo spam (DCC, Pyzor, Razor, RBL)
spamd whitelist
●
●
●
Le sessioni smtp provenienti da IP WHITELISTed vengono mandate, grazie a pf, direttamente al servizio MTA
L'elenco WHITELIST viene “rinfrescato” dal tool spamlogd analizzando i log delle sessioni smtp da e per il servizio MTA
Gli IP restano in WHITELIST per almeno 30 giorni
spamd: greylisting
●
●
●
●
Greylisting: consiste nel “ritardare” gli e­mail provenienti da IP non ancora conosciuti
spamd ritorna un errore 451 (temporaneo), memorizzando l'IP sorgente, mittente e destinatario
se dopo almeno 25 minuti c'è ancora una connessione dallo stesso IP, con lo stesso mittente e destinatario, spamd sposta l'IP da GREY a WHITE
se dopo 4 ore dal primo tentativo non ci sono più state sessioni uguali, l'IP esce da GREY
spamd: esempio
cgamboni@PORTATILE:~$ nc 10.0.0.111 25
220 lemuro.bluewin.ch ESMTP spamd IP­based SPAM blocker
HELO ppp
250 Hello, spam sender. Pleased to be wasting your time.
MAIL FROM: [email protected]
250 You are about to try to deliver spam. Your time will be spent, for nothing.
RCPT TO: root
451 Temporary failure, please try again later.
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
# spamdb
WHITE|10.0.0.13|||1130767474|1130770973|1133881380|5|0
GREY|10.0.0.98|[email protected]|root|1130853311|1130867711|1130867711|1|0
SPAMTRAP|[email protected]
Graylisting: svantaggi
●
●
Alcuni server STMP devono essere inseriti a mano nella WHITELIST poiché cambiano IP durante la ripetizione dell'invio del messaggio e­mail (la lista è disponibile)
Il primo messaggio e­mail proveniente da un IP sconosciuto subirà un ritardo (anche oltre 30 minuti) ma quando l'IP verrà messo da GREY a WHITE i messaggi seguenti verranno consegnati immediatamente
Greytrapping / Stuttering
●
●
Greytrapping:
–
Con la funzione di greytrapping si possono inserire indirizzi “spamtrap” in spamd.
–
Quando un msg viene spedito verso l'indirizzo “spamtrap”, l'IP sorgente viene spostata da GREY a BLACK per 24 ore.
Stuttering (balbuzie): –
Con i server in GREYLIST spamd non dialoga “full speed”, ma “balbetta” per i primi 10 secondi. Questo sembra causare problemi a software di spammer e trojan.
Esempio di gateway AntiSpam
●
OpenBSD 3.8: pf, spamd, Sendmail, smtp­vilter e SpamAssassin
e­mail
PF
sendmail
spamd
smtp­vilter
SpamAssassin
AntiVirus
(ClamAV)
Mail Server Interno
Attachement
filtering
Bibliografia e links
●
Bibliografia: –
●
“SpamAssassin” by Alistair McDonald ISBN 1­904811­12­4
Links utili:
–
http://spamassassin.apache.org
–
http://www.openbsd.org
–
http://www.msys.ch/products/unix/smtp­vilter
–
http://spamlinks.net