Vlastnosti nove´ho posˇtovnı´ho serveru Petr Olsˇa´k O letnı´ch pra´zdnina´ch 2004 nasadı´m do ostre´ho provozu novy´ posˇtovnı´ server russell. Vzhledem k tomu, zˇe je (na rozdı´l od stare´ho russella) vybaven inteligentnı´ obranou proti spamu˚m a viru˚m, doporucˇuji va´m veˇnovat tomuto dokumentu zvy´sˇenou pozornost. Je dobre´ veˇdeˇt, jaky´mi pravidly se zpracova´va´ posˇta, zvla´sˇteˇ pokud va´m na stoprocentnı´m fungova´nı´ posˇtovnı´ho syste´mu za´lezˇ´ı. Jsem prˇipraven rˇesˇit individua´lneˇ s kazˇdy´m uzˇivatelem prˇ´ıpadne´ proble´my s posˇtou, ale chteˇl bych mı´t jistotu, zˇe nezˇ za mnou uzˇivatel zajde, bude mı´t prˇecˇteny´ tento dokument, aby byl „v obraze“, jak posˇta vlastneˇ funguje. Rovneˇzˇ uvı´ta´m vesˇkere´ na´meˇty na mozˇne´ vylepsˇenı´.
1. Za´kladnı´ konfigurace Pro posˇtu je na nasˇ´ı katedrˇe rezervova´n server russell. Stejneˇ jako na stare´m russelovi beˇzˇ´ı na nove´m russellovi tzv. MTA (Mail Transport Agent). Je to program, ktery´ se na vstupnı´ straneˇ stara´ o prˇ´ıjem posˇty od vzda´leny´ch i loka´lnı´ch uzˇivatelu˚ pomocı´ SMTP (Simple Mail Transport Protocol) a na vy´stupnı´ straneˇ se stara´ o dorucˇenı´ posˇty vzda´lene´mu uzˇivateli (pomocı´ SMTP) nebo loka´lnı´mu uzˇivateli s adresou
[email protected] (ulozˇenı´m zpra´vy na disk do souboru /var/spool/mail/user). Dome´nove´ jme´no @math.feld.cvut.cz pro zası´la´nı´ posˇty z internetu je konfigurova´no tak, zˇe si tuto posˇtu vzˇdy prˇebı´ra´ pocˇ´ıtacˇ russell. Toto take´ nenı´ nic nove´ho. Takto na´m to uzˇ beˇzˇ´ı prˇes deset let. Kromeˇ toho se na nasˇem pracovisˇti pouzˇ´ıva´ jesˇteˇ dome´nove´ jme´no @fel.cvut.cz. Posˇtu s tı´mto jme´nem prˇebı´ra´ pocˇ´ıtacˇ max (server na SVTI) a podle aliasu˚ ji prˇeposı´la´ da´le na internı´ cı´love´ adresy. Tyto adresy si na maxovi mohou uzˇivatele´ nastavit. Implicitneˇ je nastavena tak, zˇe posˇta chodı´ na jaky´si FELNET. Uzˇivatele´ katedry matematiky si tento alias veˇtsˇinou nastavı´ tak, aby posˇta byla dorucˇena na @math.feld.cvut.cz, tj. na server russell. Stejneˇ jako na stare´m russellovi odmı´ta´ MTA deˇlat ze sebe tzv. „relay“, tj. bra´nu na pranı´ sˇpinavy´ch mailu˚. Prˇesneˇji: vzda´leny´ uzˇivatel mu˚zˇe pouzˇ´ıt MTA na russellovi jen k dorucˇenı´ loka´lnı´mu uzˇivateli a nikoli k dalsˇ´ımu posı´la´nı´ jiny´m vzda´leny´m uzˇivatelu˚m. Loka´lnı´ uzˇivatel ale mu˚zˇe posı´lat dopisy jednak loka´lnı´m a jednak vzda´leny´m uzˇivatelu˚m. Kdyby nebylo toto opatrˇenı´ zapnute´, nastala by beˇhem neˇkolika hodin tota´lnı´ smrt nasˇeho serveru: spamerˇi by vyuzˇili otevrˇeny´ „relay“ k protahova´nı´ svy´ch spamu˚ a servery na internetu, ktere´ ukla´dajı´ do svy´ch databa´zı´ (black-listu˚) seznam podezrˇely´ch pocˇ´ıtacˇu˚, by tam zarˇadily russella. Pak by bylo prakticky nemozˇne´ z russella odeslat posˇtu. Pro uprˇesneˇnı´: odesı´lajı´cı´ loka´lnı´ uzˇivatel je ten, ktery´ ma´ pocˇ´ıtacˇ prˇipojen fyzicky k nasˇ´ı katedernı´ sı´ti a ma´ konfigurova´n ve sve´m posˇtovnı´m programu odesı´la´nı´ prˇes SMTP server: russell.feld.cvut.cz. Odesı´lajı´cı´mi loka´lnı´mi uzˇivateli jsou take´ vsˇichni uzˇivatele´, kterˇ´ı odesı´lajı´ posˇtu naprˇ´ıklad ze serveru newton. Ostatnı´ uzˇivatele´ jsou vzda´lenı´. Prˇijı´majı´cı´ loka´lnı´ uzˇivatel je uzˇivatel s adresou typu
[email protected]. V tomto prˇ´ıpadeˇ je jedno, zda tato adresa znamena´ loka´lnı´ dorucˇenı´ do souboru /var/spool/mail/user nebo je aliasovana´ pomocı´ souboru˚ alias cˇi forward na neˇjakou dalsˇ´ı trˇeba i vzda´lenou posˇtovnı´ adresu. Du˚sledek tohoto opatrˇenı´: pokud se trˇeba doma prˇipojujete prˇes neˇjake´ho internetove´ho providera a konfigurujete si posˇtovnı´ program tak, zˇe odesı´la´ posˇtu pomocı´ SMTP serveru russell.feld.cvut.cz, pak mu˚zˇete posı´lat maily jen uzˇivatelu˚m s loka´lnı´ adresou typu
[email protected], ale teticˇce s adresou
[email protected] dopis nedojde. Prˇesneˇji, MTA na russellovi se s vasˇ´ım programem v takove´m prˇ´ıpadeˇ odmı´tne bavit (ukoncˇ´ı prˇedcˇasneˇ SMTP komunikaci) a va´sˇ program by va´s o tom meˇl informovat neˇjakou chybovou hla´sˇkou. Pokud ale tute´zˇ konfiguraci udeˇla´te na katedernı´m pocˇ´ıtacˇi, je vsˇe v porˇa´dku a mu˚zˇete vesele psa´t na adresu
[email protected] a jine´ vzda´lene´ adresy. Upozorneˇnı´: v zˇa´dne´m prˇ´ıpadeˇ nespousˇteˇjte na svy´ch pocˇ´ıtacˇ´ıch v nasˇ´ı loka´lnı´ sı´ti vlastnı´ program typu MTA! Kdyzˇ byste jej konfigurovali tak, aby vsˇe prˇeposı´lal na russella, vytvorˇili byste novy´ 1
„zdvojeny´ relay“. Dopisy „ze sveˇta do sveˇta“ poslane´ na va´sˇ MTA by se prˇeposlaly na russella a ten by je poslal do sveˇta. Beˇhem pa´r hodin bychom byli s russellem na cˇerny´ch seznamech. Pokud neˇco takove´ho neˇkdo na katedrˇe udeˇla´, bude verˇejneˇ prany´rˇova´n na nasˇ´ı katedrˇe a bude se muset sa´m postarat o to, aby byl russell odstraneˇn z black-listu˚!
2. Sluzˇby POP a IMAP Stejneˇ jako na stare´m russellovi jsou i na nove´m zprovozneˇny sluzˇby POP a IMAP k prˇekopı´rova´nı´ dorucˇene´ posˇty z /var/spool/mail/user na loka´lnı´ disk uzˇivatele. IMAP take´ umozˇnˇuje manipulova´nı´ s dorucˇenou posˇtou z loka´lnı´ho pocˇ´ıtacˇe uzˇivatele. Kromeˇ toho je dorucˇena´ posˇta ve /var/spool/mail/user prˇ´ıstupna´ take´ loka´lneˇ na neˇktery´ch UNIXovy´ch serverech, naprˇ´ıklad na pocˇ´ıtacˇi newton. Proto je mozˇno dorucˇenou posˇtu cˇ´ıst na newtonovi klasicky´mi UNIXovy´mi na´stroji, jako je naprˇ´ıklad /bin/mail, pine, mutt a dalsˇ´ı. Stejneˇ jako v prˇ´ıpadeˇ stare´ho russella uzˇivatele´ nemajı´ mozˇnost se zalogovat do pocˇ´ıtacˇe russell (nenı´ povolen UNIXovy´ shell). Jedna´ se o bezpecˇnostnı´ opatrˇenı´. Prˇesto uzˇivatele´ na pocˇ´ıtacˇi russell majı´ u´cˇty (uzˇivatelska´ jme´na) a neˇkterˇ´ı z nich tam majı´ i heslo. Bez hesla by nebylo mozˇne´ uskutecˇnit POP ani IMAP spojenı´ s dorucˇenou posˇtou. Na druhe´ straneˇ uzˇivatele´, kterˇ´ı k dorucˇene´ posˇteˇ prˇistupujı´ jen loka´lneˇ UNIXovy´mi programy (pine, mutt) ze serveru newton, heslo do pocˇ´ıtacˇe russell nepotrˇebujı´. Implicitneˇ tedy hesla v pocˇ´ıtacˇi russell nejsou zanesena. Ovsˇem ti uzˇivatele´, kterˇ´ı meˇli hesla ve stare´m russellovi, je majı´ stejne´ i v nove´m, protozˇe jsem vzorky hesel do nove´ho russella prˇekopı´roval. Pokud uzˇivatel chce pouzˇ´ıvat pro manipulaci s dorucˇenou posˇtou protokoly POP nebo IMAP, a prˇitom jesˇteˇ nema´ na serveru russell zavedeno heslo (nebo si ho chce zmeˇnit), musı´ se stavit u spra´vce sı´teˇ a heslo si na mı´steˇ a na pocˇka´nı´ vyrˇ´ıdit. Na rozdı´l od stare´ho russella umozˇnˇuje POP i IMAP na nove´m russellovi nejen klasicky´ otevrˇeny´ prˇenos, ale i sˇifrovany´ prˇenos pomocı´ SSL (na standardnı´ch portech 995 pro POP SSL a 993 pro IMAP SSL). Tı´m ma´te zarucˇeno, zˇe nikdo, kdo ma´ mozˇnost pozorovat, co se deˇje na dra´tech internetu, nema´ prˇ´ılezˇitost prˇecˇ´ıst prˇi vasˇem stahova´nı´ posˇty jejı´ obsah ani heslo z u´vodnı´ho prˇihla´sˇenı´. Stahova´nı´ i prˇihla´sˇenı´ totizˇ probı´ha´ sˇifrovaneˇ. Na serveru russell je k tomu u´cˇelu zrˇ´ızen „self-signed SSL certifika´t“, ktery´ zrˇejmeˇ zpu˚sobı´ na vasˇem loka´lnı´m pocˇ´ıtacˇi prˇi prvnı´m SSL prˇipojenı´ du˚razne´ varova´nı´, zˇe nenı´ mozˇnost certifika´t oveˇrˇit. Odklepneˇte, zˇe certifika´tu veˇrˇ´ıte a prˇ´ıpadneˇ si poznamenejte parametry certifika´tu. Aby meˇla dusˇicˇka pokoj, mu˚zˇete si parametry certifika´tu osobneˇ u meˇ vyzvednout a oveˇrˇit s teˇmi, ktere´ se zobrazujı´ ve vasˇem pocˇ´ıtacˇi. Pozor: na rozdı´l od stare´ho russella nenı´ z bezpecˇnostnı´ch du˚vodu˚ prˇ´ıstupna´ nesˇifrovana´ sluzˇba POP a IMAP mimo hranici nasˇ´ı loka´lnı´ sı´teˇ. Za hranicemi nasˇ´ı sı´teˇ je k dispozici pouze verze POP a IMAP sˇifrovana´ pomocı´ SSL. I uvnitrˇ nasˇ´ı katedry je samozrˇejmeˇ sˇifrovana´ verze podporovana´. Du˚sledek: pokud jste dosud stahovali nesˇifrovaneˇ posˇtu z russella trˇeba domu˚ nebo na jine´ vzda´lene´ mı´sto, toto va´m prˇestane fungovat. Zapneˇte na sve´m softwaru sˇifrova´nı´ pomocı´ SSL a stahova´nı´ posˇty ze vzda´lene´ho mı´sta mu˚zˇete pouzˇ´ıvat nada´le.
3. Prˇepisova´nı´ adres From Tato vlastnost byla implementova´na uzˇ na stare´m russellovi. O co jde: pokud loka´lnı´ uzˇivatel napı´sˇe dopis z registrovane´ho pocˇ´ıtacˇe na nasˇ´ı katedrˇe (naprˇ. newton, huygens, pocˇ´ıtacˇ v kancela´rˇi uzˇivatele na katedrˇe matematiky) a zapomene konfigurovat adresu From jako
[email protected], postara´ se o na´pravu russell osobneˇ. Opravu provede v oba´lce dopisu i v hlavicˇka´ch. Pokud naprˇ´ıklad z pocˇ´ıtacˇe huygens posˇlete zpra´vu odeslanou z adresy user@huygens pro
[email protected] a dopis posˇlete prostrˇednictvı´m russellovske´ho MTA, pak tento MTA pozmeˇnı´ adresu From z pu˚vodnı´ho user@huygens na oficia´lnı´
[email protected]. Pokud potom vypnete pocˇ´ıtacˇ huygens a
[email protected] se rozhodne pouzˇ´ıt Re:, bude odpoveˇd’ spra´vneˇ zasla´na na
[email protected], tj. prˇevezme ji pocˇ´ıtacˇ russell. Prˇepisova´nı´ adres funguje jen prˇi odesı´la´nı´ posˇty z vyjmenovany´ch pocˇ´ıtacˇu˚ katedry matematiky. Vsˇechny ostatnı´ dopisy zu˚sta´vajı´ s pu˚vodnı´mi adresami.
2
4. Obrana proti nezˇa´doucı´ posˇteˇ Vsˇe, co je rˇecˇeno nı´zˇe, se ty´ka´ uzˇ jen vlastnostı´ nove´ho russella. Je zde popsa´n zpu˚sob boje s nevyzˇa´danou posˇtou. Z russella se bohuzˇel sta´va´ takovy´ maly´ automaticky´ cenzor, ale bez tohoto opatrˇenı´ se asi neobejdeme. Osobneˇ jsem meˇl v poslednı´ dobeˇ asi jen 2% chteˇne´ posˇty a vsˇe ostatnı´, co mi prˇicha´zelo do schra´nky, byla sˇpı´na. Stovky azˇ tisı´ce mailu˚ denneˇ. I to meˇ motivovalo, zˇe jsem nakonec veˇnoval nove´mu russellovi dva ty´dny intenzivnı´ pra´ce. Zda´ se, zˇe se to vyplatilo. Nezˇa´doucı´ posˇta se deˇlı´ na dveˇ hroma´dky: viry a spamy. S obeˇma dveˇma typy russell nakla´da´ poneˇkud odlisˇny´m zpu˚sobem. Nejprve popı´sˇeme jednoznacˇneˇjsˇ´ı hroma´dku: viry.
5. Viry MTA na russellovi prˇijme trˇeba i zavirovanou posˇtu, vra´tı´ odesı´lateli prˇ´ıznak OK, tj. odesı´latel ma´ dojem, zˇe dorucˇenı´ probeˇhlo v porˇa´dku. Da´le provede za´lohu prˇijate´ho e-mailu a rozlozˇ´ı e-mail na jednotlive´ prˇ´ılohy. Jsou-li prˇ´ılohy zipovane´, arjovane´ cˇi jinak zabalene´ beˇzˇny´mi Windowsovy´mi programy, rozbalı´ je na cˇa´sti, a pokud ty cˇa´sti jsou zabalene´, taky je rozbalı´ atd. azˇ po definovanou hranici vnorˇeny´ch u´rovnı´. Jednotlive´ cˇa´sti pak prˇedlozˇ´ı ke kontrole virove´mu skeneru ClamAV. Pokud skener nezjistı´ v zˇa´dne´ cˇa´sti e-mailu vzorek viru, MTA se vra´tı´ k pu˚vodneˇ za´lohovane´mu origina´lnı´mu e-mailu. Ten podstoupı´ spamove´ kontrole a dalsˇ´ımu dorucˇenı´. Pokud ale ClamAV ohla´sı´ nalezeny´ virus, prˇemı´stı´ MTA zavirovany´ e-mail do tzv. senkru˚ny (adresa´rˇ /var/spool/mail/senkruna) a nikam jej nedorucˇ´ı. Navı´c nikomu o te´to uda´losti neposˇle zˇa´dnou zpra´vu. Takzˇe odesı´latel posˇty se bohuzˇel nedozvı´, zˇe poslal virus a ten byl na russellovi stornova´n. Du˚vod tohoto opatrˇenı´ je, zˇe viry cˇasto podvrhujı´ adresu odesı´latele, takzˇe v dobeˇ, kdy jsme nalezli virus, uzˇ nema´me bezpecˇnou informaci o tom, odkud virus skutecˇneˇ prˇisˇel. Filtrova´nı´ na viry je zapnuto pro vesˇkery´ vstup do MTA, tj. jednak od loka´lnı´ch uzˇivatelu˚ a jednak od vzda´leny´ch uzˇivatelu˚. MTA mezi nimi necˇinı´ zˇa´dne´ rozdı´ly. Neprˇ´ıjemny´ du˚sledek: pokud posˇlete naprˇ´ıklad jako Wordovou prˇ´ılohu zavirovany´ dokument sve´mu sˇe´fovi, ma´te sice pocit, zˇe odesla´nı´ probeˇhlo v porˇa´dku, ale va´sˇ dopis skoncˇil prˇitom v senkru˚neˇ. Svy´m zpu˚sobem je to vasˇe chyba, ma´te si na viry da´vat pozor. Pravda, hleda´m mozˇnosti, jak programovat MTA na russellovi tak, aby prˇi posˇteˇ od loka´lnı´ho uzˇivatele se tento uzˇivatel dozveˇdeˇl, zˇe poslal virus. Mlcˇenı´m bychom prˇesˇli jen viry od vzda´leny´ch uzˇivatelu˚ (teˇch je vy´razna´ veˇtsˇina). Programova´nı´ te´to za´lezˇitosti nenı´ jednoduche´, nebot’musı´m pocˇ´ıtat s podvrhnutou adresou odesı´latele prˇi cˇinnosti viru. Musı´m tedy pracovat s IP adresou odesı´lacı´ho pocˇ´ıtacˇe a pomocı´ neˇjake´ databa´ze IP adres ji promeˇnit na adresu zodpoveˇdne´ho uzˇivatele za tuto IP adresu a tam to poslat. Prˇi IP adrese UNIXove´ho pocˇ´ıtacˇe zase bych meˇl prˇedpokla´dat, zˇe adresa odesı´latele asi nebude falsˇova´na a poslat to prˇ´ımo na tuto adresu. Vidı´te, zˇe to nenı´ jednoduche´, takzˇe se nezlobte, zˇe tato vlastnost zatı´m nenı´ implementova´na. Virovy´ skener ClamAV je asi to nejlepsˇ´ı, co se da´ na poli volne´ho software pouzˇ´ıt. Svou rychlostı´ aktualizova´nı´ databa´zı´ vzorku˚ viru˚ daleko prˇedcˇ´ı i mnohe´ komercˇnı´ programy, jako naprˇ´ıklad AVG. Windowsovı´ uzˇivatele´ ale majı´ smu˚lu, protozˇe ClamAV beˇzˇ´ı pouze na UNIXu, ovsˇem samozrˇejmeˇ proto, aby detekoval Windowsove´ viry. ClamAV na russellovi je konfigurova´n tak, zˇe si automaticky kazˇde´ dveˇ hodiny aktualizuje databa´zi vzorku˚ viru˚ z centra´lnı´ho serveru. Momenta´lneˇ, kdy pı´sˇu tento dokument (4. 8. 2004, 11:00) ma´ databa´ze 23 161 vzorku˚ viru˚. za pa´r hodin to uzˇ ale nebude pravda. Da´ se rˇ´ıci, zˇe antivirove´ opatrˇenı´ na russellovi zlikviduje 99,9% vsˇech existujı´cı´ch viru˚. Pravdeˇpodobnost, zˇe by bylo odhaleno neˇco jako vir, acˇkoli to vir nenı´, je mensˇ´ı, nezˇ pravdeˇpodobnost strˇetu Zemeˇkoule s cizı´m kosmicky´m teˇlesem s na´sledkem kolapsu zˇivota na Zemi. V ClamAV je skryta pra´ce mnoha genia´lnı´ch matematiku˚ (naprˇ´ıklad Knuthovy b-stromy k rychle´mu vyhleda´va´nı´ vzorku˚) a stojı´ za nı´m arma´da prˇ´ıznivcu˚ svobodne´ho software, ktera´ doka´zˇe detekovat novy´ virus a aktualizovat databa´zi daleko rychleji, nezˇ pracovnı´ci komercˇnı´ch firem. Zde se naplno projevuje sı´la svobodne´ho softwaru. Do senkru˚ny kromeˇ viru˚ prˇista´vajı´ na russellovi i neˇktere´ spamy. Povı´me si nejprve o spamech a pak teprve popı´sˇeme, jak na russellovi probı´ha´ pravidelne´ cˇisˇteˇnı´ senkru˚ny. S viry teˇsneˇ souvisı´ dalsˇ´ı proble´m: cˇasto dosta´va´me chybne´ virove´ reporty od teˇch MTA, jejichzˇ spra´vci jsou ignoranti a instalovali sice virovou ochranu, ale vracejı´ na adresu From: 3
zpeˇtneˇ informaci, zˇe byl nalezen virus. Teˇmto spra´vcu˚m je srdecˇneˇ jedno, zˇe dnesˇnı´ modernı´ viry skoro standardneˇ vytva´rˇejı´ podvrzˇenou adresu odesı´latele. Zatı´m nema´m promysˇleno, jak se proti tomu bra´nit. Nakopat takove´ho spra´vce MTA do zadku nelze, protozˇe obvykle je dosti vzda´len od Prahy. Snazˇ´ım se vymyslet, zda by se nedalo proti teˇmto reportu˚m bra´nit na u´rovni bodu 4 za´dverˇnı´ obrany (viz nı´zˇe), ale zatı´m to nema´m implementovane´.
6. Spamy Zatı´mco virus je prˇesneˇ definova´n, o spamu se to tak jednodusˇe rˇ´ıci neda´. Neˇkdo mu˚zˇe reklamnı´ materia´l povazˇovat za uzˇitecˇny´ a neˇkdo za hnusny´ spam. Navı´c stroj nemu˚zˇe zcela jednoznacˇneˇ rozpoznat, zˇe obdrzˇena´ posˇta je reklamnı´ materia´l. Prˇesto se da´ se spamy docela slusˇneˇ bojovat. Rozhodl jsem se na russellovi zave´st pomeˇrneˇ prˇ´ısnou obranu proti spamu˚m. Jsem toho na´zoru, zˇe pokud neˇkdo chce pravidelneˇ dosta´vat naprˇ´ıklad obsı´lky o novinka´ch ze sexshopu˚, meˇl by si pro takove´ u´cˇely zrˇ´ıdit e-mailovou adresu mimo sve´ pracovisˇteˇ. E-mail na pracovisˇti by se meˇl pouzˇ´ıvat vy´hradneˇ pro plneˇnı´ pracovnı´ch povinnostı´. Obrana proti spamu˚m je na russellovi vybudova´na ve dvou vrstva´ch: za´dverˇnı´ obrana a vnitrˇnı´ obrana. Za´dverˇnı´ obrana odmı´tne spam uzˇ prˇi SMTP komunikaci s odesı´latelsky´m pocˇ´ıtacˇem, tj. neposˇle mu za´veˇrecˇne´ OK a samozrˇejmeˇ cı´love´mu uzˇivateli nic nedorucˇ´ı. Ani do senkru˚ny nic neulozˇ´ı. Horky´ brambor v tomto prˇ´ıpadeˇ zu˚sta´va´ na bedrech odesı´lateske´ho pocˇ´ıtacˇe, ktery´ by meˇl pu˚vodnı´ho odesı´latele informovat o tom, zˇe dorucˇenı´ nebylo uskutecˇneˇno. Na druhe´ straneˇ vnitrˇnı´ obrana je postavena na tom, zˇe MTA na russellovi vra´tı´ odesı´latelske´mu pocˇ´ıtacˇi OK (posˇta dorucˇena) a da´le ve sve´ vnitrˇnı´ rezˇii provede na´slednou analy´zu dosˇle´ posˇty. Pokud ji vyhodnotı´ jako spam, pak ji prˇ´ıpadneˇ zahodı´ do senkru˚ny nebo posˇle cı´love´mu uzˇivateli tento spam doplneˇny´ o informaci, zˇe se jedna´ o spam nebo (podle prˇa´nı´ uzˇivatele) dorucˇ´ı spam do zvla´sˇtnı´ posˇtovnı´ prˇihra´dky. Za´dverˇnı´ obrana odfiltruje (podle zkusˇenostı´, ktere´ ma´m z testovacı´ho provozu) asi 70% spamu˚. Zbyly´ch 30% procha´zı´ vnitrˇnı´ obranou a zde mu˚zˇe dojı´t k omylu˚m prˇi vyhodnocova´nı´ spamu strojem, jak popı´sˇu nı´zˇe. Popı´sˇu nejprve principy za´dverˇnı´ obrany. Aby byly dverˇe otevrˇeny, je potrˇeba, aby odesı´latelsky´ pocˇ´ıtacˇ (da´le jej budu nazy´vat klientem) splnil cˇtyrˇi podmı´nky: 1. spra´vneˇ konfigurovany´ reverznı´ za´znam, 2. neprˇ´ıtomnost na „relay black-listu“, 3. neprˇ´ıtomnost na „spam black-listu“ a 4. nesplneˇnı´ jednoduchy´ch zamı´tacı´ch pravidel. Jednotlive´ podmı´nky popı´sˇu nynı´ podrobneˇji. 1. reverznı´ za´znam. SMTP komunikace je odmı´tnuta, pokud klient nema´ registrova´n reverznı´ za´znam v DNS na internetu. Jiny´mi slovy, je sice zna´mo jeho IP cˇ´ıslo (bez toho se SMTP komunikace vu˚bec nemu˚zˇe uskutecˇnit), ale pomocı´ dotazu˚ k serveru˚m, ktere´ registrujı´ dome´ny, nenı´ mozˇno zjistit jeho jme´no. Naprˇ´ıklad russell ma´ na internetu IP cˇ´ıslo 147.32.244.11 a jme´no je russell.feld.cvut.cz. Kdykoli se neˇjaky´ pocˇ´ıtacˇ kdekoli na cele´m sveˇteˇ zepta´, jake´ jme´no ma´ IP adresa 147.32.244.11, dome´nove´ za´znamy spra´vneˇ odpovı´, zˇe se jedna´ o russell.feld.cvut.cz. Znamena´ to, zˇe pokud russell posı´la´ posˇtu serveru, ktery´ je vybaven stejnou za´dverˇnı´ obranou, tak projde. Prakticky vsˇechny pocˇ´ıtacˇe naprˇ´ıklad na nasˇ´ı fakulteˇ majı´ spra´vneˇ konfigurova´n reverznı´ za´znam. U velke´ho mnozˇstvı´ zdroju˚ spamu˚ i viru˚ se naopak sta´va´, zˇe reverznı´ za´znam konfigurova´n nenı´. 2. neprˇı´tomnost na „relay black-listu“. Na internetu existujı´ servery, ktere´ udrzˇujı´ databa´zi nespra´vneˇ konfigurovany´ch MTA. Prˇesneˇji takovy´ch MTA, ktere´ umozˇnˇujı´ pranı´ sˇpinavy´ch peneˇz a spamu˚, jak bylo popsa´no na zacˇa´tku tohoto dokumentu. Databa´ze vznikajı´ dynamicky automatickou kontrolou existujı´cı´ch a aktivnı´ch posˇtovnı´ch programu˚. MTA na russellovi se prˇi kazˇde´m SMTP spojenı´ zepta´ serveru˚ udrzˇujı´cı´ch black-listy, zda klient, se ktery´m zrovna komunikuje, nenı´ na´hodou na „relay“ black-listu. Pokud je, pak s klientem bez diskuse ukoncˇ´ı SMTP spojenı´ a neposˇle zˇa´dne´ OK. Pocˇ´ıtacˇ russell je konfigurova´n tak, zˇe dotazy na „relay black-listy“ klade na server ordb.org. Vı´ce viz http://www.ordb.org. 3. neprˇı´tomnost na „spam black-listu“. Na internetu existujı´ servery, ktere´ udrzˇujı´ databa´zi teˇch MTA, ze ktery´ch prˇisˇel spam. Tyto spamy jsou manua´lneˇ kontrolova´ny, nezˇ je jejich MTA zarˇazeno do black-listu. Navı´c existuje cela´ arma´da dobrovolnı´ku˚, kterˇ´ı deˇlajı´ volavky a pı´sˇ´ı 4
neˇco jako „hello spammers, send me your email to
[email protected]“. Tuto posˇtu pak vybı´rajı´ a zarˇazujı´ odesı´latelske´ MTA do black-listu˚. Na´sˇ russell prˇi kazˇde´ SMTP komunikaci kontroluje, zda klient nenı´ na „spam black-listu“. Pokud je, pak s klientem bez dalsˇ´ı diskuse ukoncˇ´ı SMTP spojenı´ a nazdar, odchod na pa´rek. Pocˇ´ıtacˇ russell je konfigurova´n tak, zˇe dotazy na „spam black-listy“ klade na servery sorbs.net a dsbl.org. Vı´ce viz http://www.sorbs.net a http://www.dsbl.org. Pokud by se na´hodou stalo, zˇe neˇjaky´ vzda´leny´ uzˇivatel va´m chce skutecˇneˇ poslat uzˇitecˇny´ e-mail, a prˇitom jeho MTA neprojde za´dverˇnı´ kontrolou na russellovi, dostane o tom zpeˇtneˇ chybovou zpra´vu, zˇe posˇta nenı´ dorucˇena. Tento uzˇivatel ma´ pak dveˇ mozˇnosti: zajı´t za spra´vcem jejich MTA a pozˇa´dat ho o na´pravu nebo telefonovat na nasˇ´ı katedru (tj. pouzˇ´ıt jinou cestu komunikace). Ja´ pak mohu jejich MTA zarˇadit do seznamu vy´jimek. Veˇrˇ´ım, zˇe takova´ situace nebude nasta´vat moc cˇasto. Vzda´leny´ uzˇivatel mu˚zˇe obejı´t za´dverˇnı´ obranu (pokud o tom ovsˇem vı´) take´ tak, zˇe dopis posˇle na adresu typu
[email protected]. V takove´m prˇ´ıpadeˇ je posˇta prˇijata na server SVTI max a prˇeposla´na (obvykle, podle uzˇivatelske´ konfigurace) na pocˇ´ıtacˇ russell. Vu˚cˇi oficia´lnı´mu posˇtovnı´mu serveru max ma´ samozrˇejmeˇ russell dverˇe vzˇdycky dokorˇa´n otevrˇeny. Jakou za´dverˇnı´ obranu ma´ implementova´n pocˇ´ıtacˇ max, nevı´m, protozˇe SVTI to moc nedokumentuje. 4. nesplneˇnı´ jednoduchy´ch zamı´tacı´ch pravidel. Na serveru russell mu˚zˇe administra´tor konfigurovat jednoducha´ zamı´tacı´ pravidla, na za´kladeˇ ktery´ch MTA odmı´tne SMTP spojenı´ a nezasˇle OK. Tyto podmı´nky se (na rozdı´l od prˇedchozı´ch trˇ´ı podmı´nek) nety´kajı´ klienta, ale hlavicˇek a teˇla dopisu. Zatı´m jsem konfiguroval jedine´ zamı´tacı´ pravidlo, ktere´ se ty´ka´ Rosse Hedvicˇka, jehozˇ bla´boly meˇ poslednı´ dobou neuveˇrˇitelneˇ vyta´cˇely. Je to grafoman, ktery´ rozesı´la´ na desetitisı´ce internetovy´ch adres sve´ „hlubokomyslne´ cˇla´nky“, ktere´ (prˇedpokla´da´m) nikoho nezajı´majı´. Do konfiguracˇnı´ho souboru pro MTA russella jsem tedy napsal: /^from: ross hedvicek/ REJECT Sorry, Ross, I don’t accept your message Myslı´m, zˇe je z tohoto prˇ´ıkladu jasne´, co se v te´to fa´zi kontroly da´ deˇlat. Dajı´ se odmı´tnout zpra´vy, ktere´ vyhovujı´ v hlavicˇce nebo teˇle dopisu neˇjake´mu regula´rnı´mu vy´razu. Vy´sˇe uvedeny´ prˇ´ıklad odmı´tne vsˇechny zpra´vy, ktere´ majı´ v hlavicˇce napsa´no From: Ross Hedvicek a prˇipojı´ specifikovanou chybovou zpra´vu. Pan Hedvicˇek nasˇteˇstı´ pı´sˇe ve sve´m dopise konstantneˇ porˇa´d stejnou hlavicˇku, takzˇe tı´mto opatrˇenı´m se zbavı´me jeho litera´rnı´ch zvratku˚. Russell odmı´tne SMTP spojenı´. At’si proble´m nedorucˇene´ posˇty da´le rˇesˇ´ı ten MTA, ze ktere´ho ty bla´boly Hedvicˇek posı´la´. Vnitrˇnı´ antispamova´ obrana na russellovi je zalozˇena na analy´ze dorucˇene´ho dopisu programem SpamAssassin, viz http://spamassassin.apache.org. Tento program da´va´ trestne´ body nebo bonusy (za´porne´ body) za urcˇite´ fenome´ny, ktere´ v dopise najde. Kromeˇ toho komunikuje se serverem razor (viz http://razor.sourceforge.net), ktery´ udrzˇuje databa´zi identifika´toru˚ a kontrolnı´ch soucˇtu˚ zna´my´ch spamu˚. Za pozitivnı´ odpoveˇd’ od razora prˇicˇte dalsˇ´ı trestne´ body. Dalsˇ´ı trestne´ body mohou plynout z dotazu na samoucˇ´ıcı´ se loka´lnı´ databa´zi tagu˚ (tzv. bayesovske´ filtry), viz nı´zˇe. Vy´sledkem cˇinnosti programu SpamAssassin je soucˇet vsˇech bodu˚ za vsˇechny fenome´ny, ktere´ v e-mailu byly nalezeny. Jak vsˇechny tyto fenome´ny vypadajı´, se mu˚zˇete dozveˇdeˇt na stra´nce http://spamassassin.apache.org/tests.html. Naprˇ´ıklad vy´skyt slova viagra prˇida´ trestne´ body. Font cˇerveny´, velky´ a cely´ dopis jen v html: dalsˇ´ı trestne´ body. A tak da´le. Za kazˇdy´ fenome´n mu˚zˇe administra´tor nastavit odpovı´dajı´cı´ pocˇet bodu˚, ovsˇem na russelovi to musı´me deˇlat pro vsˇechny uzˇivatele soucˇasneˇ. Nenı´ mozˇna´ na uzˇivateli za´visla´ konfigurace. Vesmeˇs jsem ponechal implicitnı´ konfiguraci bodu˚ za jednotlive´ fenome´ny (azˇ na vy´jimky). Body za jednotlive´ fenome´ny jsou navrzˇeny tak, aby pro celkovy´ soucˇet platilo: nula a me´neˇ bodu˚: skoro jisteˇ to nenı´ spam. 5 azˇ 10 bodu˚: pravdeˇpodobneˇ to je spam, 10 a vı´ce bodu˚: skoro jisteˇ to je spam. V za´vislosti na vy´sledku ze SpamAssassinu jsem definoval na´sledne´ chova´nı´ nasˇeho MTA: • 1 a me´neˇ bodu ˚ (info-level) — dopis se dorucˇ´ı bez u´prav cı´love´mu uzˇivateli. • 1 azˇ 5 bodu ˚ (info-level azˇ spam-detect-level) — dopis se dorucˇ´ı, ale prˇipojı´ se do hlavicˇek
informace o nalezeny´ch fenome´nech a bodove´m sko´re. Tuto informaci beˇzˇny´ uzˇivatel nevidı´, takzˇe nenı´ nicˇ´ım vyrusˇova´n a povazˇuje dopis za „norma´lnı´“. Pokud ale mezi 5
takto ohodnoceny´mi dopisy uzˇivatel najde spam, mu˚zˇeme pomocı´ obsahu hlavicˇky udeˇlat analy´zu, kde SpamAssassin udeˇlal chybu. • 5 azˇ 10 bodu ˚ (spam-detect-level azˇ spam-kill-level) — dopis je v subjektu oznacˇen jako ***SPAM***, je prˇipojena informace od SpamAssassina do hlavicˇek a dopis je dorucˇen uzˇivateli. • vı´ce nezˇ 10 bodu ˚ (spam-kill-level): — dopis je zahozen do senkru˚ny a nikdo nenı´ informova´n o tom, zˇe dopis nedosˇel. Kazˇdy´ uzˇivatel si mu˚zˇe definovat vlastnı´ hodnoty pro info-level, spam-detect-level a spamkill-level, ovsˇem nejde to udeˇlat bez pomoci spra´vce russella, protozˇe se jedna´ o internı´ konfiguraci na russellovi, kam nemajı´ uzˇivatele´ prˇ´ıstup. Nicme´neˇ na pozˇa´da´nı´ mohu implicitnı´ hodnoty nastavit jinak. Da´le si mu˚zˇe uzˇivatel dopisy, ktere´ dosta´va´ oznacˇeny jako ***SPAM***, nechat posı´lat do jine´ schra´nky, nezˇ kam dosta´va´ beˇzˇne´ dopisy. Starat se pak ovsˇem musı´ o obeˇ schra´nky. Mozˇna´ to uvı´tajı´ uzˇivatele´, kterˇ´ı dopisy stahujı´ po pomale´ a drahe´ lince (naprˇ´ıklad po telefonu) a na druhou schra´nku se budou dı´vat jen tehdy, kdyzˇ majı´ rychle´ a levne´ prˇipojenı´. Dalsˇ´ı mozˇnostı´ je nechat si posı´lat dopisy s oznacˇenı´m ***SPAM*** do spolecˇne´ emailove´ schra´nky spambox. Prˇedpokla´da´m, zˇe budou na katedrˇe delegova´ni uzˇivatele´, kterˇ´ı se do te´to schra´nky jednou za cˇas podı´vajı´, zda tam neˇco neuniklo. Vesˇkerou uzˇivatelsky za´vislou konfiguraci je potrˇeba domluvit se mnou, tj. se spra´vcem MTA. Implicitnı´ konfigurace je takova´, zˇe spamy v intervalu 5 azˇ 10 bodu˚ docha´zejı´ do stejne´ schra´nky jako beˇzˇne´ dopisy, ale jsou oznacˇeny v subjektu slovem ***SPAM***. Prosı´m, v za´jmu cele´ katedry je vhodne´, aby si uzˇivatele´ ukla´dali nespra´vneˇ vyhodnocene´ dopisy (pokud ovsˇem v nich nemajı´ du˚veˇrne´ informace) a prˇeda´vali je spra´vci syste´mu. Jednak jde o dopisy vyhodnocene´ jako OK (me´neˇ bodu˚ nezˇ spam-detect-level), a prˇitom to jsou spamy a jednak dopisy, ktere´ majı´ vı´ce bodu˚ nezˇ spam-detect-level, a prˇitom to jsou norma´lnı´ dopisy. Spra´vce MTA pak mu˚zˇe „doucˇit“ podle teˇchto dopisu˚ bayesovske´ filtry tak, aby si SpamAssassin udeˇlal jasno, kam co patrˇ´ı. Rovneˇzˇ je mozˇne´ definovat ru˚zne´ vy´jimky (naprˇ´ıklad podle adresy odesı´latele). Za velmi nebezpecˇne´ povazˇuji situaci, kdy jsou spamy ohodnoceny me´neˇ nezˇ jednı´m bodem nebo uzˇitecˇne´ dopisy (tzv. hamy) jsou ohodnoceny vı´ce nezˇ devı´ti body. Samoucˇ´ıcı´ bayesovsky´ filtr je totizˇ nastaven tak, zˇe se sa´m naucˇ´ı, co je spam nebo ham podle vsˇech dopisu˚, ktere´ projdou krz MTA (po vyloucˇenı´ viru˚) s na´sledujı´cı´m pravidlem: Me´neˇ nezˇ 1 bod: je to ham. 1 azˇ 9 bodu˚: neucˇ´ım se to, nevı´m. 9 a vı´ce bodu˚: je to spam. Pokud by se samoucˇ´ıcı´ algoritmus bayesovsky´ch filtru˚ naucˇil neˇco sˇpatneˇ, je to dvakra´t sˇpatneˇ, protozˇe se tı´m jen prohloubı´ jeho neveˇdomost. Je potrˇeba, aby takove´ dopisy podlehly procesu „prˇeucˇenı´“. To bohuzˇel mu˚zˇe zarˇ´ıdit jen spra´vce russella.
7. Shrnutı´ Obrana proti sˇpı´neˇ v e-mailech je na russellovi postupneˇ vykona´va´na v tomto porˇadı´: za´dverˇnı´ obrana proti spamu˚m, likvidace viru˚, internı´ obrana proti spamu˚m. Je zrˇejme´, zˇe pokud neprojde e-mail za´dverˇnı´ obranou, je odesı´latel informova´n o chybeˇ. Takovy´ email nenı´ dorucˇen ani do senkru˚ny. Za´dverˇnı´ obrana je zapnuta´ pro vesˇkery´ provoz na vstupu do MTA russella. Je tedy jedno, zda dopis odesı´la´ uzˇivatel vzda´leny´ nebo loka´lnı´. Likvidace viru˚ je zapnuta pro vesˇkerou posˇtu, ktera´ prosˇla za´dverˇnı´ obranou. Je jedno, zda je odesı´latel vzda´leny´ nebo loka´lnı´. Viry jsou zahazova´ny do senkru˚ny. Vnitrˇnı´ kontrola spamu˚ se provede u vsˇech dopisu˚, ktere´ projdou MTA russella. Pokud ale je cı´lovy´ uzˇivatel vzda´leny´, pak se azˇ do hodnoty 10 bodu˚ neprovede zˇa´dna´ u´prava e-mailu. Vzda´leny´ uzˇivatel si bude muset udeˇlat vlastı´ analy´zu, zda se jedna´ o spam. Pokud je cı´lovy´ uzˇivatel vzda´leny´ a dopis dostal hodnotu veˇtsˇ´ı nezˇ 10 bodu˚, je dopis zahozen do senkru˚ny. V obou prˇ´ıpadech se jedna´ asi o ma´lo pravdeˇpodobnou situaci, protozˇe vzda´leny´m uzˇivatelu˚m mohou dopisy posı´lat jen loka´lnı´ uzˇivatele´. Ti snad nejsou zdroji spamovy´ch aktivit. Prˇipomı´na´m, zˇe u loka´lnı´ho cı´love´ho uzˇivatele se rozhoduje o zahozenı´ spamu do senkru˚ny podle loka´lnı´ konfigurace parametru spam-kill-level, kterou mu˚zˇe mı´t kazˇdy´ uzˇivatel nastavenu na svou vlastnı´ hodnotu.
6
8. Pravidelne´ cˇisˇteˇnı´ senkru˚ny Slovo „senkru˚na“ jsem poprve´ slysˇel prˇi budova´nı´ jı´mky na chalupeˇ me´ho tcha´na v jizˇnı´ch Cˇecha´ch. Senkru˚na je jı´mka, kam smeˇrˇuje vesˇkery´ biologicky´ odpad z doma´cnostı´ na vesnici. Splasˇky i odpoad ze za´chodu˚. Protozˇe pocha´zı´m z meˇsta, sezna´mil jsem se s tı´mto slovem azˇ v pozdeˇjsˇ´ım veˇku, ale momenta´lneˇ se mi hodı´. Pro prostor na zahazova´nı´ viru˚ a spamu˚ pouzˇ´ıva´ origina´lnı´ literatura pojem „quarantine“ (karante´na), ale meˇ prˇipada´ daleko prˇile´haveˇjsˇ´ı slovo senkru˚na. Mu˚zˇeme deklarovat skupinu uzˇivatelu˚ na newtonovi, ktera´ bude mı´t opra´vneˇnı´ se v senkru˚neˇ prˇehrabovat (nejle´pe vidlemi). Ze zacˇa´tku provozu nove´ho russella se do nı´ pokusı´m obcˇas nahle´dnout osobneˇ. Co, kdybych v tom mnozˇstvı´ sˇpı´ny trˇeba nenasˇel neˇco, co nemeˇlo by´t zahozeno? Veˇrˇ´ım ale, zˇe tomu tak nebude. Dovedete si jisteˇ prˇedstavit, zˇe prˇeplneˇnı´ senkru˚ny neby´va´ na vesnici nic prˇ´ıjemne´ho. Proto se musı´ obcˇas cˇistit. Pro tyto u´cˇely jsem naprogramoval program, ktery´ jsem nazval hovnocuc. Program prˇijı´zˇdı´ k senkru˚neˇ zcela automaticky kazˇdou sobotu v 3:11 hod a zlikviduje z nı´ vsˇechnu sˇpı´nu, ktera´ je starsˇ´ı nezˇ jeden ty´den. Du˚sledek: kazˇdy´ spam nebo virus vydrzˇ´ı v senkru˚neˇ nejkratsˇ´ı dobu ty´den a nejdelsˇ´ı dobu 14 dnı´. Stejnou pra´ci jako v senkru˚neˇ udeˇla´ hovnocuc i ve spolecˇne´ schra´nce spambox.
9. HW parametry nove´ho russella, za´lohova´nı´ Novy´ russell nenı´ zˇa´dne´ zˇihadlo (ostatneˇ ani stary´ russell nebyl). Ma´ 256 MB RAM, 1.4 GHz procesor a dva totozˇne´ 40GB disky. Na teˇch discı´ch je zajı´mave´ to, zˇe jsou hardwaroveˇ zapojeny do pole (tzv. raid1), ktere´ se z pohledu softwaru tva´rˇ´ı jako jediny´ disk. Vesˇkere´ informace ukla´dane´ na tento disk jsou okamzˇiteˇ dublova´ny na disky oba. Informace jsou pak cˇteny z toho disku, ktery´ je v danou chvı´li me´neˇ zatı´zˇeny´ na cˇtenı´ informacı´. Kdyby byl jeden disk znicˇen (je to nejchoulostiveˇjsˇ´ı soucˇa´stka cele´ho pocˇ´ıtacˇe), pak se vlastneˇ nic nedeˇje, zˇa´dna´ informace nenı´ ztracena. Mu˚zˇeme to cha´pat jako „on-line“ za´lohova´nı´ „v kazˇde´m okamzˇiku“. Prˇesto, zˇe je v russellovi raid1, prova´dı´m automaticke´ za´lohova´nı´ na jiny´ pocˇ´ıtacˇ jednou ty´dneˇ. Tak jsem to deˇlal i u stare´ho russella, kde navı´c byl jediny´ disk s daty.
10. Podeˇkova´nı´ Deˇkuji panu Wietse Venema za skveˇly´m zpu˚sobem napsany´ MTA postfix, ktery´ jsem pouzˇil v nove´m russellovi. Navı´c ma´ tento program perfektnı´ dokumentaci, jaka´ je ve sveˇteˇ volneˇ sˇ´ırˇene´ho softwaru ma´lo obvykla´. V du˚kladnosti dokumentace se nebojı´m rˇ´ıci, zˇe je srovnatelna´ s dokumentacı´ TEXu. Deˇkuji mnoha vynikajı´cı´m matematiku˚m, jejichzˇ vy´sledky byly zverˇejneˇny jako volneˇ sˇ´ırˇene´ a byly pouzˇity v boji proti spamu˚m a viru˚m. Ma´m na mysli trˇeba bayesovske´ filtry zalozˇene´ na statisticke´ analy´ze dat, viz http://www.paulgraham.com/better.html. Deˇkuji mnoha programa´toru˚m volne´ho software za implementaci teˇchto vy´sledku˚. Dı´ky svobodne´mu softwaru existujı´ volneˇ dostupne´ servery, ktere´ nabı´zejı´ nejaktua´lneˇjsˇ´ı informace o spamech a virech po cele´m sveˇteˇ. Deˇkuji vsˇem dobrovolnı´ku˚m, kterˇ´ı do teˇchto serveru˚ prˇispı´vajı´. Prˇispeˇt mu˚zˇete i vy, koncovı´ uzˇivatele´ teˇchto vy´sledku˚. Stacˇ´ı se podı´vat naprˇ´ıklad na http://razor.sourceforge.net a na mnoho dalsˇ´ıch serveru˚, zaby´vajı´cı´ se touto problematikou.
7