Großkaliber Spam-Abwehr mit Open Source Software Charly Kühnast Municipal Datacenter for the Lower Rhine Area Internet Infrastructure charly.kuehnast@krzn.de
Ein paar Zahlen... ~ 11.000 Anwender 2 E-Mails pro User pro Tag = ~ 22.000 Mails/Tag 22.000 erwünschte Mails/Tag! Seite: 2
7 6 Spam: millions/day 5 4 3 2 1 0 Seite: 3
Seite: 4 Monatsübersicht
Im Durchschnitt... 99,65% des SMTP-Verkehrs ist Spam > 1.000 SMTP-Verbindungen/min. Spitzenwert besiher > 25.000 Spams/min. Seite: 5
Seite: 6
Wo kommt das alles her? Seite: 7
Seite: 8 Spammer:
Botnetze Trojaner infiltrieren PCs Botnetzer erhält volle Kontrolle über System Viele gleichzeitig kontrollierte PCs = Botnetz Seite: 9
Botnetze sind Waffen Leitungssaturation (ddos) Selbstverbreitung: größeres Botnetz Daten- / Identitäts-Diebstahl Spam. Seite: 10
Große Botnetze Botnetze > 1.000.000 Drohnen existieren. Estland: mehrere Tage offline durch Botnetz- Angriff Seite: 11
For a fistful of dollars Botnetze kann man mieten Preis: 1 US$ pro Drohne pro Tag ROI: hoch Kollateralschäden: auch hoch Seite: 12
Konversionsrate UCSD: 80.000 Drohnen (1.5%)des Storm - Botnetzes gekapert, 30 Tage beobachtet Eine von 12.500.000 Spam-Mails führt zu einem Kauf. Seite: 13
Können Botnetze zerstört werden? Ja. Passiert aber selten. Im Okt. '08 wurde McColo geschlossen. Seite: 14
Teil II Wie fischt das KRZN die 22.000 erwünschten Mails aus den Millionen Spams heraus? Seite: 15
DNSBL header checks Address Verification Content Filter Image-spam filter Spamfilter arbeitet in mehreren Schritten Ausschließlich Open Source Software Mails, die alle sechs Schritte überleben, gelten als sauber Anti-Virus Seite: 16
DNSBL header checks Address Verification Content Filter Image-spam filter Anti-Virus Postfix / PolicyD-weight Postfix / PolicyD-weight Postfix (built-in feature) SpamAssassin + ext. rulesets FuzzyOCR ClamAV + ext. pattern sources Seite: 17
DNSBL Postfix / PolicyD-weight Seite: 18
DNSBL? DNSBL list host Spammer? No mail-out.sender.net my.spamfilter.net Seite: 19
DNSBL DNSBLs sind sehr effektiv. Trotzdem Vorsicht! DNSBL-Provider vertrauenswürdig? Was, wenn DNSBL verschwindet? Warum nicht eine eigene DNSBL betreiben? Seite: 20
Eigene DNSBL Mailaccounts ohne Filterung. Adressen verbreiten! Einmal pro min. abfragen, IP des Senders extrahieren IP blacklisten. Kein weiterer Spam in 48h: entfernen Seite: 21
Mehr als eine DNSBL PolicyD-weight Konfiguration: 01 ## DNSBL settings 02 @dnsbl_score = ( 03 #HOST, 04 'list.dsbl.org' BAD SCORE, GOOD SCORE, LOG NAME 3.5, 0, 'DSBL_ORG', 05 'cbl.abuseat.org' 3.5, 0, 'ABUSEAT', 06 'sbl.hsnr.de', 07 ); 3.5, 0, 'HSNR_DE', Seite: 22
header checks Postfix / PolicyD-weight Seite: 23
Header Checks Policy-Daemon wertet Mailheader aus: Seite: 24 - Durchsatz verlangsamen: - viele Mails vom gleichen Absender - viele Mails an gleichen Empfänger - zusätzlich möglich: - Greylisting - SPF/DKIM - HELO-Checks
Header Checks HELO randomization (gleicher Server, anderes HELO): Apr 24 12:41:11 connect from rectal.post.ru[83.102.180.3] Apr 24 12:41:32 connect from triplex.post.ru[83.102.180.3] Apr 24 12:42:04 connect from hole.post.ru[83.102.180.3] Occasionally, a spammer will use your own server's name as a HELO string... Seite: 25
Address Verification Postfix (built-in feature) Seite: 26
RAV Recipient address verification: Mails an nicht exisitierende Adressen früh ablehnen! Sender address verification: Mails von nicht exisiterenden Adressen: schlechter Stil, kommt aber vor (Newsletter, Bestätigungen) kann man nicht einfach ablehnen. Seite: 27
RAV Recipient address verification: simpel, wenn man eine Liste aller gültigen Adressen hat... was in größeren Organisationen eher nicht der Fall ist. Lösung: Dummy-Verbindungen zum Ziel-Server Seite: 28
Address verification To: charly@entropy.de Does charly@entropy.de exist? Spamfilter Mail Server Seite: 29
Content Filter SpamAssassin + ext. rulesets Seite: 30
Der Content-Filter ist hier als ein einziger Schritt dargestellt. Das ist strenggenommen falsch... Content Filter Seite: 31
Content Filter SpamAssassin: hunderte einzelner Checks gegen Inhalt Und Struktur der E-Mail Treffen Regeln zu, gibt es Punkte auf's Spam-Konto Seite: 32
Content Filter A spam mail, 18-Nov-08: From: "Dickson"<support@leadsandmails.com> Subject: INVESTIGATION ON BEHALF OF OUR BANK Date: Tue, 18 Nov 2008 11:28:20-0000 To: undisclosed-recipients:; Dear Sir/Madam, I am conducting a standard process investigation on behalf of our Bank an international banking conglomerate. This investigation involves a client and also the circumstances surrounding investments made by this client with our Bank. Our client died intestate and nominated no successor in title over the investments made with our bank. The essence of this communication with you is to request you provide us information/comment on this issue so that I can use my position in the bank to establish your eligibility to assume status of successor in title to the deceased. Best regards, Seite: 33
Content Filter...und die Analyse des Content-Filters: X-Spam-Score: 16.376 X-Spam-Report: * 2.0 RCVD_IN_BL_SPAMCOP_NET RBL: Received via a relay in bl.spamcop.net * [Blocked - see <http://www.spamcop.net/bl.shtml?217.171.129.66>] * 0.6 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) * 2.1 SUBJ_ALL_CAPS Subject is all capitals * 1.6 DEAR_SOMETHING BODY: Contains 'Dear (something)' * 0.0 BAYES_50 BODY: Bayesian spam probability is 40 to 60% * [score: 0.5368] * 0.5 RAZOR2_CHECK Listed in Razor2 (http://razor.sf.net/) * 1.5 RAZOR2_CF_RANGE_E4_51_100 Razor2 gives engine 4 confidence level * above 50% * [cf: 100] * 0.5 RAZOR2_CF_RANGE_51_100 Razor2 gives confidence level above 50% * [cf: 100] * 3.7 PYZOR_CHECK Listed in Pyzor (http://pyzor.sf.net/) * 0.0 DIGEST_MULTIPLE Message hits more than one network digest check * 0.8 MSOE_MID_WRONG_CASE MSOE_MID_WRONG_CASE * 3.1 FORGED_MUA_OUTLOOK Forged mail pretending to be from MS Outlook Seite: 34
Content Filter Zwei Schwellwerte: wird der erste überschritten, erfolgt Warnung: [*Spam?*] original subject line Zweiter Schwellwert überschritten: Quarantäne Seite: 35
Content Filter SpamAssassin hat ein großes Default-Regelwerk. Das ist aber keine Grund, es nicht noch zu erweitern Sa-Update zieht weitere Regeln aus dem SpamAssassin Rule Emporium (SARE) und weiteren Quellen: - openprotect.com - daryl.dostech.ca Seite: 36
Content Filter sa-update Beispiel: sa-update -D --channelfile /etc/spamassassin/channels.text --gpgkeyfile /etc/spamassassin/keys.text channels.text: updates.spamassassin.org saupdates.openprotect.com 70_sare_stocks.cf.sare.sa-update.dostech.net 70_sare_adult.cf.sare.sa-update.dostech.net [...more...] Seite: 37
Image-spam filter FuzzyOCR Seite: 38
Spam-Container Spam kommt meist als text-only oder HTML-Mail. Manchmal auch im Container: - Images, e.g. animated.gifs - PDFs - Flash -.doc,.rtf,.ppt - MP3 Seite: 39
Seite: 40 Spam-Container
Spam-Container FuzzyOCR extrahiert Text aus Bildern. FuzzyOCR funktioniert auch bei - verzerrten, - animierten, - kaputten Bildern Seite: 41
Seite: 42 Spam-Container
Seite: 43 Spam-Container
Anti-Virus ClamAV + ext. pattern sources Seite: 44
Antivirus ClamAV erlaubt den Einsatz selbst- oder fremdgenerierter Patterns. AV-Patterns lösen beim Fund bestimmter Merkmale in einer Datei ein Aktion aus. Ob in einer Datei nach Viren- oder Spam-Merkmalen gesucht wird, ist ClamAV egal. Seite: 45
Virus Filter: Drittquellen Seite: 46 SaneSecurity und MSRBL liefern ClamAV-Patterns und ein Shellskript ( unofficial-sigs.sh ) für Updates. rsync://rsync.sanesecurity.net/sanesecurity/phish.ndb rsync://rsync.sanesecurity.net/sanesecurity/scam.ndb rsync://rsync.sanesecurity.net/sanesecurity/junk.ndb rsync://rsync.sanesecurity.net/sanesecurity/rogue.hdb rsync://rsync.sanesecurity.net/sanesecurity/spear.ndb rsync://rsync.sanesecurity.net/sanesecurity/spamimg.hdb rsync://rsync.sanesecurity.net/sanesecurity/lott.ndb rsync://rsync.sanesecurity.net/sanesecurity/spam.ldb rsync://rsync.mirror.msrbl.com/msrbl/msrbl-images.hdb rsync://rsync.mirror.msrbl.com/msrbl/msrbl-spam.ndb
Seite: 47 Viruenfilter: Drittquellen
Do it yourself HTML.Phishing.Bank-66:3:*:6c696d6974656420616363657373 HTML.Phishing.Bank-66: Name (fürs Logfile) 3: file type, 3 = HTML *: Offset 6c696d6974656420616363657373: hex-encoded string echo "limited access" sigtool --hex-dump Seite: 48
Do it yourself Patterns aus Bildern erzeugen: sigtool --md5 thisisspam.gif >> /path/to/my-patterns.hdb Seite: 49
Body count DNSBL 97 % header checks Address Verification Content Filter 3 % Image-spam filter Anti-Virus Seite: 50
Seite: 51
Großkaliber Spam-Abwehr mit Open Source Software Vielen Dank! Haben Sie noch Fragen? KRZN Spam-Statistik: http://public.zii.krzn.de