Spam na FITu

Motto:

Ni sníh, ni déšť, ni temnota noci, kdy slunce nesvítí,
nezabrání poslům našim povinnost svou splniti!

Nápis na budově poštovního úřadu Ankh-Morporku 1

Před několika týdny jsem potichu změnil technologii fakultního poštovního serveru pro detekci nežádoucího obsahu – spamu, virů, phishingu, malware apod. Z pozorování poštovních logů, statistik a mého vlastního mailboxu jsem z nového systému získal dobrý pocit. Chtěl jsem si ho ještě potvrdit od širšího publika.

Proto jsem ve středu 23. května 2018 na Twitteru spustil anketu, zda uživatelé pozorují nějakou změnu v objemu spamu přicházejícího přes fakultní poštovní server.

Výsledky ankety

Hlasovalo 108 lidí z oslovených cca 2000 (počet impresí na Twitteru). Čekal jsem trochu vyšší počet spolupracujících. Nu, není každý den posvícení. Až v průběhu běžící ankety mi došlo, že možná hlasují i lidé nemající s FITem nic společného. V prvotním textu ankety jsem sice požadavek na příslušnost k FITu měl, žel postupným vybrušováním textu do dokonalosti se nějak vytratil.

[1] Anketa o spamu na FIT ČVUT
Jak výsledkům ankety rozumím? Podle 38 procent respondentů se nic nezměnilo. Pro mne osobně už toto signalizuje, že nasazením nové technologie nedošlo k žádné prudké změně, a to je vlastně docela dobrá zpráva. Vše funguje jako dřív, nic strašného se nestalo.

Dalších 34 procenta respondentů odpovědělo, že nevědí, jestli se něco změnilo. Odpověď nevím beru též jako poměrně pozitivní. Vykládal bych si ji asi tak, že uživatel pracuje s poštou svým obvyklým způsobem a ani nevnímá, že by spamu nějak přibylo nebo ubylo. Jenže takto asi mohli odpovídat i neFIŤáci, a proto této odpovědi nebudu přikládat příliš velkou váhu.

Konečně, podle názoru 9 procent respondentů objem spamu vzrostl, dle 19 procent naopak klesl. Vzhledem k vyššímu počtu hlasujících pro nic se nezměnilo to chápu tak, že pokud už někdo nějakou změnu zaznamenal, tak byla spíše pozitivní.

Celkově jsem si anketou potvrdil, že provedené změny nezpůsobily žádnou katastrofu a mnohdy je uživatelé ani nepostřehli. Pokud postřehli, pociťují spíše zlepšení než zhoršení stavu.

Dosavadní řešení

Veškeré maily FITu přicházejí na server relay.fit.cvut.cz, kde probíhají kontroly přijaté pošty. Nezávadné maily se posléze přepošlou na doručovací adresy uživatele. Serverem relay procházejí i odesílané maily a rovněž vnitrofakultní pošta. Toto je podrobněji popisováno na dokumentačním webu ICT oddělení http://man.fit.cvut.cz.

Prakticky od dob vzniku fakulty byl na serveru relay provozován systém MailScanner, http://www.mailscanner.info, v kombinaci s některými dalšími drobnými pomocníky.

Při příjmu mailu z internetu, hned ve fázi navazování TCP spojení s přijímajícím MTA (sendmail, postfix apod.), nastupuje první kontrola. Prostřednictvím TCPwrapperu (libwrap) se ověří, zda IP adresa klienta je řádně registrována v systému DNS (existence a soulad přímého a reverzního záznamu).

Dále přichází milter (https://en.wikipedia.org/wiki/Milter) jménem greylist (https://en.wikipedia.org/wiki/Greylisting). První pokus o předání mailu odesílatelem na server relay je vlivem greylistingu odmítnut s dočasnou (měkkou) chybou. Řádný poštovní server po nějaké době zopakuje pokus odeslat mail, zatímco spamový robot pravděpodobně ne. Opakovaným pokusem o předání mailu se otevře časové okno např. 24 hodin, kdy výměny mailů mezi oběma pisateli pak probíhají bez prodlevy. Technika greylistingu je někdy považována za kontroverzní, nicméně je stále účinná proti jednoduchým spambotům.

Příchozí mail prošel úvodními kontrolami, je přijat a uložen na disk do vstupní fronty pro další zpracování.

MailScanner

Největší objem práce provádí program MailScanner. Součástí jeho kontrol jsou například:

  • kontrola příloh, jejich počtu, velikosti,
  • povolené přípony a kombinace vícenásobných přípon (skrývání známých přípon v MS Windows),
  • kontrola obsahu souborů, zda například soubor s příponou .txt ve skutečnosti neobsahuje spustitelný kód,
  • antivirová kontrola,
  • kontrola nebezpečného obsahu (html s odkazy na externí obsah, externí přílohy, IFrame, vložené aktivní scripty, …),
  • detekce phishingu.

V dalším kroku následuje detekce spamu. Použit je populární SpamAssassin, http://spamassassin.apache.org. Jde o rozsáhlou množinu pravidel sestavených z regulárních výrazů, která pokrývá typická slova, fráze, jejich kombinace i úmyslné zkomoleniny, z nichž lze usoudit nežádoucí obsah. S každým pravidlem je pak spojen nějaký počet číselných bodů. Čím více bodů, tím výraznější pravděpodobnost spamu. Otestovat a ohodnotit lze i výskyt odesílajícího poštovního serveru na různých blacklistech realizovaných pomocí DNS. Obvykle jsou do základní instalace SpamAssassinu doplňovány i pluginy jako Razor, Pyzor a DCC. Zjednodušeně řečeno jde o veřejné služby uchovávající otisky již známých textů z právě probíhajících spamových kampaní.

Při vysokém počtu bodů nasbíraných od jednotlivých splněných (match) pravidel je zkoumaný mail jasným spamem. Počet bodů o něco menší než vysoký pouze vyvolá podezření na spam. Mail se běžným způsobem doručí. Do jeho řádku Subject: může být doplněn nějaký pomocný text varující příjemce před pravděpodobným spamem.

Ve způsobu integrace MailScanneru do poštovního systému spočívá jeho základní výhoda a současně nevýhoda. MailScanner není volán jako milter v době, kdy je otevřeno SMTP spojení od odesílatele a kdy lze přijímaný mail snadno odmítnout. Maily jsou přijímány a ukládány do vstupní fronty. Odtud si je MailScanner vyzvedává a kontroluje. Nezávadné maily vrací zpět do poštovního systému pro jejich doručení adresátům. Nezpůsobilé maily zahodí, vloží do karantény a/nebo posílá odesílatelům zprávy o odmítnutí. Je běžné, že ve spamových mailech jsou podvržené adresy odesílatelů. Zpětné zprávy o nedoručitelnosti jim nejde předat, řadí se do dlouhé fronty mailů čekajících na opakované pokusy o odeslání.

Nalezneme i výhody tohoto uspořádání. V případě provozních problémů lze celý řetězec snadno přerušit dočasným zastavením MailScanneru nebo přijímající instance MTA. Také se lze snadno bránit před přetížením poštovního serveru tím, že paměťově i výpočetně nejnáročnější část systému (samotný MailScanner) má předem stanovaný počet běžících procesů. Při hromadném bombardování poštovního serveru příchozím spamem tak nemusí být server přetížen. Maily jsou stále bez problému přijímány, jen se poněkud prodlužuje vstupní fronta přijatých mailů čekajících na zpracování MailScannerem.

Julian Field, původní autor systému MailScanner, se ze zdravotních důvodů již svému dítku nemůže věnovat. MailScanner byl převzat do péče širší komunitou, ale původní tah na branku zde již bohužel není. Navíc výše popisované nevýhody v dnešní době začínají převažovat nad výhodami. I proto jsem se poohlížel po nějakém jiném řešení.

Nové řešení

Z plejády různých volně dostupných produktů mne zaujal moderní Rspamd, http://www.rspamd.com, od Vsevoloda Stakhova. Je to také produkt jediného tvůrce, ale autor se mu aktivně věnuje, komunikuje s uživateli a přináší nové funkcionality.

[2] Statistika filtrace mailů přes Rspamd 
Některé postupy a prováděné kontroly jsou totožné či podobné dosavadnímu řešení, jiné jsou specifické pro Rspamd. Charakteristické vlastnosti a komponenty tohoto nástroje jsou:

  • integrace s MTA pomocí milter rozhraní,
  • webové rozhraní pro základní dohled a správu,
  • normalizace zkoumaného textu a jeho převod do UTF-8,
  • podpora skriptování v jazyce Lua,
  • možnosti kontroly příloh, jejich počtu, velikosti, typů souborů apod. zde na rozdíl od MailScanneru tak detailně propracovány nejsou,
  • integrovaný greylisting,
  • sledování počtu mailů za jednotku času ve vztahu k odesílateli či příjemci (ratelimit),
  • klasické reputační DNS servery pro IP adresy i URL (Real Time Black- or White Lists),
  • ověření nepodvrženosti mailových adres, se vztahem k odesílajícímu serveru (SPF, DKIM, DMARC, ARC),
  • statická kontrola obsahu mailu (pattern matching podobně jako SpamAssassin),
  • antivirová kontrola,
  • podpora pro import pravidel ze SpamAssassinu,
  • oproti SpamAssassinu chybí Razor a Pyzor. DCC je k dispozici,
  • na rozdíl od bayesovského naivního filtru SpamAssassinu zkoumá Rspamd posloupnosti slov algoritmem na bázi Markovských řetězců.

Autor klade důraz na bezpečnost a výkon. Jde tak daleko, že přepisuje a optimalizuje základní knihovny pro práci s textem a zavádí vlastní postupy pro paralelizaci vyhodnocování regulárních výrazů. Velké prodlevy obvykle nastávají při komunikaci s DNS servery. Kvůli tomu program používá asynchronní komunikaci s DNS a podobnými službami a je koncipován jako událostmi řízený.

Značnou efektivitu a výkon zvoleného řešení mohu potvrdit porovnáním času potřebného např. pro kontrolu a distribuci hromadného infomailu ve starém a novém systému.

V okamžiku psaní tohoto textu běží Rspamd stále ještě v téměř výchozím nastavení. Předpokládám postupnou aktivaci jeho dalších dosud neaktivních modulů, a případné úpravy konfigurace do podmínek FITu. To znamená, že schopnosti detekce nežádoucích mailů by se mohly ještě trochu zvýšit.

[3] Průchodnost emailů školním poštovním serverem
V literatuře se obvykle uvádí, že zhruba 80 či 90 procent z veškerých mailů je spam. Podle naší statistiky je spamu mnohem méně. Jak si ten rozdíl vysvětlit? Kromě příchozích mailů procházejí kontrolou i všechny maily odesílané z FITu jinam do internetu. Navíc jsou kontrole podrobovány i veškeré interní maily putující mezi dvojicí FITovských adres ze serveru imap na server relay a zpět na imap k příjemci. Celkovou statistiku ještě vylepšují maily distribuované na FITu prostřednictvím interních elektronických konferencí (mailing listů).

Složka jménem Spam

Tato část textu nemá přímý vztah k popisu nového antispam řešení.

Poměrně často se setkávám s tím, že uživatelé mají falešné představy o tom, kdo a jak vkládá přijímané maily do složky obvykle pojmenované Spam.

Začnu u doručování mailů z centrálního poštovního serveru relay.fit.cvut.cz na server s poštovními schránkami imap.fit.cvut.cz. Všechny zkontrolované příchozí maily jsou doručovány do složky pojmenované Přijatá pošta či prostě Inbox. Někteří z vás máte nastavené tzv. Sieve filtry blíže upřesňující, kam se příchozí mail má přeposlat nebo do jaké složky vložit. Filtry teď budeme chvíli ignorovat. Příchozí pošta se na serveru imap.fit.cvut.cz prostě ukládá do Inboxu, a tečka●

K poštovní schránce můžete přistoupit IMAP protokolem prostřednictvím nějakého klientského programu jako je typicky Thunderbird. Program má v sobě vestavěnu svoji vlastní detekci spamu, lze ji různě konfigurovat. A pokud v Inboxu najde nějaký atypický mail, může jej považovat za spam. A sám Thunderbird jej přesune do složky Spam, eventuálně i smaže.

Stejně se program chová při přístupu IMAP protokolem do poštovní schránky např. Gmailu nebo jiného poskytovatele s IMAP připojením. Další legrace nastává, pokud používáte více různých zařízení pro přístup IMAP protokolem do poštovní schránky a na každém ze zařízení jsou nastavena jiná pravidla pro detekci a manipulaci se spamovými zprávami.

U velkých služeb typu Seznam a Gmail probíhají při příjmu mailu podobné kontroly, jaké jsem se snažil popsat u programů MailScanner a Rspamd. I velcí poskytovatelé služeb mohou podezřelé maily zahodit, nebo je (na rozdíl od FITu) doručí přímo do složky Spam. Ve webovém rozhraní pro práci s poštou pak v nastaveních bývá nějaká možnost toto chování ovlivnit. Pro jistotu ještě jednou dodávám, že na fakultním imap serveru a webmailu RoundCube žádná detekce spamu není.

Tímto vysvětlením jsem chtěl naznačit, že různá antispamová opatření na serveru relay.fit.cvut.cz nemají vliv na to, jak s konkrétním mailem naloží cílový systém. (Nejvýše by bylo možné mluvit o vlivu dobré nebo špatné pověsti serveru relay.fit.cvut.cz. O pravděpodobnosti toho, že je z něj šířen spam, že je veden na nějakých blacklistech apod. K tomu může strana příjemce přihlížet.)

Zkratky

Omlouvám se za použití celé řady zkratek, které jsem nejen že nevysvětlil, ale ani nerozepsal do slov. Zvídavý čtenář snad tuší a přesný význam si dokáže vyhledat. Nechtěl jsem obtěžovat dlouhými a četnými odbočkami v textu článku.

Závěr a poděkování

Na první pohled je elektronická pošta jednoduchý a téměř již pravěký nástroj. Zajistit ale spolehlivé doručování mailů a detekci nežádoucího obsahu už tak jednoduché není.

Děkuji všem, kdo jste se mým textem prokousali až do konce. Zůstalo-li něco nejasného, nebojte se zeptat, napsat mi na moji školní mailovou adresu bily(at)fit.cvut.cz či třeba na Twitteru na @_mbily.

Autor: Ing. Martin Bílý

Foto:
[hlavička] https://img.huffingtonpost.com/
[1-3] Autor

  1. Pratchett, T.: Zaslaná pošta, Talpress 2005, ISBN 80-7197-265-7.