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: Email normali classificati erroneamente come SPAM FALSI NEGATIVI: Email 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” – Addon 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 – Amavisdnew + Postfix + SpamAssassin – Smtpvilter + 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: XSPAMStatus: 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 email viene “pesato” con la media dei punteggi precedenti provenienti dallo stesso utente e dallo stesso IP Esempio: – Il primo email di FatPenguin prende 20 punti (spam!) – Il secondo email di FatPensuin prenderebbe 2 punti, ma grazie al precendete email, 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: salearn ham msg, salearn 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 510 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 email del proprio dominio. Esempio: $ host t TXT tilug.ch tilug.ch text "v=spf1 mx ip4:192.0.0.2 all" – ● Significa che gli email 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 frontend (e anche load balancer) Greylist Blacklist PF SPAMD Whitelist Sendmail / MTA Sendmail / MTA OpenBSD spamd: PF ● /etc/pf.conf table <spamd> persist table <spamdwhite> 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 ! <spamdwhite> to port smtp 127.0.0.1 port spamd ... OpenBSD: spamd blacklisting ● ● ● spamdsetup 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 email 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 IPbased 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 email (la lista è disponibile) Il primo messaggio email 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, smtpvilter e SpamAssassin email PF sendmail spamd smtpvilter SpamAssassin AntiVirus (ClamAV) Mail Server Interno Attachement filtering Bibliografia e links ● Bibliografia: – ● “SpamAssassin” by Alistair McDonald ISBN 1904811124 Links utili: – http://spamassassin.apache.org – http://www.openbsd.org – http://www.msys.ch/products/unix/smtpvilter – http://spamlinks.net