Boj proti e-smetju

Objavljeno: 5.7.2006 11:54 | Avtor: Primož Gabrijelčič | Kategorija: Preizkusi | Revija: Julij 2006

Problem elektronskega smetja (nezaželene elektronske pošte, spama) postaja vse večji, kljub temu da se z njegovim preprečevanjem ukvarjajo cele množice ljudi. Postal je že tolikšen, da onemogoča uporabo elektronske pošte - deloma zaradi množice smeti, ki delajo gnečo v poštnih nabiralnikih, deloma pa zato, ker je zaradi močnih protismetnih filtrov pošiljanje sporočil včasih zelo oteženo.

Načinov za preprečitev elektronskega smetja je več, vsem pa sta skupna dva problema - nezaznane in napačno zaznane smeti. Kadar program reklamno sporočilo spusti skozi svoje filtre in ga dostavi uporabniku, je to razmeroma majhna neugodnost. Uporabnik sporočilo pač izbriše, pa je. Bolj zoprno je, kadar program čisto normalno sporočilo označi za smetje. Sploh v poslovnih okoljih se poskušamo tej vrsti napačne klasifikacije kar najbolj izogniti. V takih primerih je najbolje, če protismetni program prestavlja morebitne smeti v neko mapo, ki jo občasno (enkrat na dan ali enkrat na teden) pregleda še človek.

Proti elektronskemu smetju se borimo na več točkah - še pred poštnim strežnikom (denimo na požarnem zidu), na poštnem strežniku ali v računalnikih končnih uporabnikov. Konkretnih rešitev je zelo veliko, zato se tu z njimi ne bomo ukvarjali. Raje se bomo posvetili tehnikam, ki jih uporabljamo za boj proti elektronskim smetem. Če boste poznali osnovna načela, boste laže izbrali pravi program za vaše okolje.

Različnih tehnik in tehnologij, ki na različnih ravneh pomagajo čistiti naše poštne predale, je veliko. Le znati jih je treba namestiti in uporabljati.

Analiza besedil

Večina programov za filtriranje nezaželene pošte na ravni programov za branje pošte (se pravi programov, ki se vključijo v Outlook, Outlook Express ali kak drug program, ki ga uporabljate v te namene) za odločanje o tem, ali spada sporočilo v smeti, uporablja eno od tehnik analize besedil. Tudi programi, ki se proti elektronskemu smetju borijo na drugih točkah poti sporočila (denimo na poštnem strežniku), pogosto uporabljajo analizo besedil kot del izračuna verjetnosti, da je neko sporočilo nezaželeno.

Prvi programi, ki so se borili proti elektronskemu smetju, so imeli seznam "slabih" besed, ki so jih iskali v vseh sporočilih. Tipična slaba beseda je bila Viagra in če jo je program našel v sporočilu, je povečal verjetnost, da sporočilo spada v smeti. Če je v sporočilu našel dovolj prepovedanih besed, je sporočilo označil za smetje, od drugih nastavitev pa je bilo potem odvisno, kaj se bo z njim zgodilo.

Seveda je bilo tako filtriranje skrajno nezanesljivo. Predstavljajte si, da bi ta članek padel v roke enostavnemu protismetnemu programu - ta bi v njem hitro našel kakšno prepovedano besedo. Protismetni programi, ki so za prepoznavanje smetja uporabljali le ključne besede, so zato pogosto metali v smeti tudi čisto običajna sporočila, zato je bilo njihovo delo dobro še dodatno preverjati.

Bistveno bolje (pravzaprav celo toliko bolje, da so že povsem prevladali) se obnesejo programi, ki vsebino sporočil obdelajo s statističnimi metodami - z Bayesovo analizo, če smo natančni, a to tako ali tako ni pretirano pomembno. Ti v besedilu iščejo tudi fraze, poleg tega pa se zelo dobro učijo. Če napačno označijo besedilo in ga potem uporabnik na roke prestavi v drug predalček (se pravi iz smetja v mapo ali nasprotno), lahko tak program izboljša svoje statistične metode, tako da bo naslednjič delal malo bolje. Se pravi - čim več se ukvarjate z Bayesovim prepoznavalnikom, tem bolje bo delal.

Žal pa statistične metode niso vsemogočne. Piscu tega besedila že nekaj dni greni življenje smetje, ki ima na vrhu in na dnu sporočila nekaj deset naključnih besed, prava vsebina pa je shranjena v sliki, ki jo statistični analizator seveda preskoči. Zato so analizatorji besedil sicer pomemben, a ne edini del boja proti elektronskemu smetju.

Porazdeljena preverjanja

Inačica analize besedil so porazdeljena preverjanja. Tudi taki sistemi pregledujejo vsebino sporočil, vendar je ne poskušajo analizirati. Vsako sporočilo pretvorijo v kratek povzetek (v kriptografskem smislu), potem pa vprašajo neki osrednji strežnik, ali je tak povzetek že videl. Ker po svetu le elektronske smeti krožijo v velikanskem številu popolnoma enakih izvodov, lahko sporočila, za katera strežnik sporoči, da jih je videlo že nekaj tisoč drugih poštnih strežnikov, mirne duše mečemo v smeti. Težave seveda nastopijo pri velikanskih poštnih seznamih (mailing liste), a sistemi za porazdeljeno preverjanje so dovolj pametni (oziroma dovolj dobro nastavljeni), da sporočil na takih seznamih ne označujejo kot smetje.

Prvi tak sistem je bil nekomercialni Vipul's Razor. Najbolj znan komercialni sistem za porazdeljeno preverjanje je Cloudmark (ki sicer ščiti tudi računalnik avtorja tega prispevka, a je vseeno zatajil pri smetju, omenjenem dva odstavka nazaj), trenutno najboljši nekomercialni sistem za porazdeljeno preverjanje pa je DCC (Distributed Checksum Clearinghouse).

Preverjanje pošiljateljev

Če si ogledamo izvor elektronskih smeti, vidimo, da jih mnogo dobimo prek spletnih strežnikov, ki jih ne bi smeli spustiti dalje, če bi bili pravilno nastavljeni. Taki poštni strežniki spuščajo dalje vso pošto, tudi tisto, ki je prispela od nekega naključnega uporabnika in je namenjena nekomu, ki ni del domene, ki ji strežejo. Take strežnike pogosto označujemo s tujko "open relay" (relay v tem primeru pomeni posredovanje - sporočil, seveda), po slovensko pa jim rečemo "odprti strežniki". Množici smetja bi se torej lahko izognili tako, da bi enostavno zavračali vso pošto, ki nam jo pošljejo taki strežniki.

Vprašanje ostane, kako take strežnike prepoznati. Obstaja kar nekaj spletnih mest, kjer se zbirajo naslovi odprtih strežnikov, zbrani na "črne liste" (blacklist). Veliko protismetnih programov (pa tudi kar samih poštnih strežnikov) lahko nastavimo tako, da občasno prebirajo črne liste (z enega ali več mest), nato pa pošto iz odprtih strežnikov bodisi zavračajo ali pa obravnavajo skrajno previdno.

Od časa do časa je smiselno obiskati kakšno izmed specializiranih spletnih strani, ki bo preverila ali je z nastavitvami naših poštnih strežnikov vse v redu.

Žal - in kako pogosta je ta beseda v protismetni borbi - je sistem črnih list skrajno nezanesljiv, predvsem zato, ker veliki internetni ponudniki včasih skrajno slabo skrbijo za svoje poštne strežnike. Tudi našemu Siolu se je že nekajkrat zgodilo, da se je njegov strežnik SMTP znašel na črni listi, zaradi česar marsikdo v Sloveniji ni prejel čisto navadnih sporočil; še teže pa je bilo pošto prek Siola poslati v tujino.

Črne liste so še vseeno uporabne, če jih uporabimo le kot del ocenjevanja verjetnosti, da je neko sporočilo nezaželeno. Pa še v tem primeru je bolje, če se oprete na enega od komercialnih seznamov, pri katerih skrbniki bolj pazijo na osveženost in pravilnost podatkov kot vzdrževalci nekaterih ljubiteljskih. Med najboljše spadajo seznami, ki svoje podatke zbirajo iz analiz protismetnih programov - kadar iz nekega vira pride dovolj smetja, se vir doda na črno listo. Značilen primer je storitev MXRate. Seveda so take storitve praviloma plačljive.

Spletnih strani, ki vodijo t.i. črne liste je veliko, toda kar nekaj jih je v toliko nezanesljivih, da njihove odločitve ne smemo jemati kot "suho zlato".

Blokiranje lahko izvajamo tudi po drugih merilih. Ker velik del elektronskega smetja izvira iz okuženih računalnikov, ki brez vedenja njihovih lastnikov pošiljajo smeti v svet, taki računalniki pa navadno uporabljajo dinamične naslove IP, nekateri poštni strežniki nočejo sprejemati pošte od dinamičnih ali klicnih uporabnikov. Spet drugi zavračajo pošto, ki jo pošiljajo računalniki z operacijskim sistemom Windows, ker so vsi znani virusi, ki proizvajajo smeti, spisani za ta operacijski sistem, večina večjih poštnih strežnikov pa teče na kateri od različic Unixa. Ti načini niso pretirano zanesljivi. Pametneje je zavračati pošto od sistemov, ki nimajo pravilno nastavljenih domenskih zapisov, saj se s tem izognemo tudi večini smetja iz okuženih računalnikov.

Ko smo ravno pri seznamih, omenimo še "bele liste" (whitelist). To so interni seznami zanesljivih pošiljateljev, ki jih nastavimo v protismetnem programu. Pošto, ki prispe iz tako označenih virov, bo program spustil skozi v vsakem primeru. Dobro nastavljena bela lista je zelo uporabno orodje v komercialnih okoljih, kjer nikakor ne želimo izgubiti nesmetnih sporočil.

Nekateri programi omogočajo samodejno izdelavo belih list. Kadar od nekoga dobimo dovolj sporočil, ki niso označena kot smetje, program njegov elektronski naslov samodejno doda na belo listo in ga s tem označi kot varnega pošiljatelja.

Sivi seznami

Med novejše tehnike boja proti elektronskemu smetju spadajo "sive liste" (greylisting). Ta tehnika je naperjena proti programom za množično pošiljanje elektronskega smetja. Ti programi so napisani tako, da karseda hitro pošljejo pošto kar največjemu številu naslovnikov. Zaradi tega ne upoštevajo pravil, ki se jih sicer držijo pravi poštni strežniki. Eno od teh pravil je, da je treba vsako sporočilo dostaviti, če se le da. Če druga stran ni dosegljiva ali če odgovori na način, ki poštnemu strežniku pove, da sporočilo ni bilo uspešno predano, bo pravi poštni strežnik sporočilo znova poslal čez nekaj časa, program za množično smetenje pa ne.

Programi s sivimi listami se vključijo v naš poštni strežnik ali celo predenj in so zato dostikrat napisani na kožo poštnemu strežniku ali operacijskemu sistemu, na katerem tečejo. Ko tak program dobi sporočilo, ki ga še ni videl, oddaljeni strani odgovori, da predaja ni uspela, in si to zapiše v zbirko. Če oddaljeni strežnik poskusi sporočilo takoj (ali v zelo kratkem času) poslati še enkrat, mu odgovarja z istim sporočilom o napaki. Šele ko oddaljeni strežnik poskusi po malo daljšem času (navadno je ta meja nastavljena na pol ure), protismetni program odgovori pritrdilno, spusti sporočilo do pravega poštnega strežnika, hkrati pa si še zapomni, da je na drugi strani "dober" pošiljatelj, in pošto, ki prihaja od istega pošiljatelja iz istega strežnika v prihodnje spušča naprej brez vseh teh zapletov. Pri uporabi sivih list zato na začetku pride do krajših zakasnitev prenosa pošte (če se jim želimo izogniti, je priporočljiva uporaba belih list), pozneje pa vse deluje normalno. Razen če ...

Programov za vpeljavo sivih seznamov je največ na Unix (Linux/BSD) sistemih, toda tudi omislimo si jih lahko tudi že v Oknih.

Seveda je tudi pri sivih listah cel kup če-jev in ampak-ov, kaj pa ste drugega pričakovali. Ko bodo iznašli delujoč sistem proti elektronskemu smetju, ga bomo vsi začeli uporabljati in članki, kot je ta, sploh ne bodo več potrebni.

V tem primeru so če-ji (vsaj) trije. Težave imamo s pošiljatelji, ki imajo neumno nastavljene poštne programe (tako da ti poizkušajo prepogosto ali pa prehitro obupajo). Zatakne se tudi pri pošiljateljih, ki uporabljajo dinamične naslove IP in se vsakič javijo z drugega naslova. Pomaga le pameten upravitelj, ki to opazi in take pošiljatelje doda na belo listo.

Tretja problematična skupina pa so veliki ponudniki elektronske pošte (Microsoft, AOL, Yahoo, Google ...), ki za pošiljanje sporočil uporabljajo več računalnikov, zato lahko sporočilo dobimo vsakič z drugega naslova IP. Na srečo so naslovi IP, ki jih uporabljajo, znani, zato so v nekaterih programih te vrste že prednastavljeni kot varni.

Zaviranje

Med tehnike, ki izkoriščajo lastnost programov za množično pošiljanje, da poskušajo sporočila kar najhitreje poslati naprej, spada tudi zaviranje (tarpitting). Pri tej tehniki poštni program (oziroma, pogosteje, majhen program, ki stoji med poštnim programom in svetom) zavira komunikacijo. Namesto da bi si programa v nekaj desetinkah sekunde izmenjala elektronsko sporočilo, traja več sekund (ali deset sekund), da poštni strežnik sploh odgovori na začetni pozdrav. Pravi poštni strežniki to preživijo brez težav, večina programov za množično pošiljanje pa hitro prekine povezavo in se loti naslednje tarče.

Ker pa tako zaviranje ni najvljudnejše do drugih pošiljateljev, ga navadno uporabljamo v kombinaciji z drugimi tehnikami. Pogosto je, denimo, zaviranje povezav, ki so na črni listi, ali še nepreverjenih sivih povezav.

Zanimivo statistiko uporabe sivih seznamov in zaviranja najdete na naslovu:

undeadly.org/cgi?action=article&sid=20060217105149.

Preverjanje krajevnih naslovov

Če si ogledamo statistiko elektronskega smetja, poslanega na poljuben poštni strežnik, opazimo, da je večina sporočil naslovljena na neobstoječe krajevne uporabnike. Programi za množično pošiljanje marsikdaj generirajo lokalni del naslova kar naključno ali na podlagi seznama pogostih imen. Večino poštnih strežnikov lahko nastavimo tako, da zavračajo sporočila za neobstoječe uporabnike. To nam hitro izboljša razmerje med smetmi in pravimi sporočili.

Vseeno pa moramo omeniti, da v določenih okoljih tak način ni priporočljiv, ker predstavlja (drobno) razpoko v sistemu varnosti. Če imamo vključeno preverjanje krajevnih naslovov, lahko namreč oddaljeni napadalec hitro ugotovi, kateri uporabniški naslovi so definirani na poštnem strežniku, in jih lahko potem poskusi napasti.

Druge tehnike

Dobra zamisel, ki pa žal (še?) ni zaživela, je SPF - Sender Policy Framework. Temelji na tem, da imajo pravi poštni strežniki urejene zapise DNS, v katere je mogoče shraniti še marsikaj, in da so zapisi DNS razmeroma varni pred potvarjanjem. Pri sistemu SPF ima vsak poštni strežnik v posebnem zapisu DNS shranjeno tudi, kateri naslovi IP so uradno zadolženi za pošiljanje pošte za neko domeno. Ko dobite pošto z naslova @nekje.si, lahko torej iz sistema DNS potegnete zapis SPF, v katerem so našteti naslovi IP, ki smejo pošiljati pošto za domeno nekje.si. Dobra plat SPFja je, da podpira tudi pošiljatelje z dinamičnimi naslovi. Tudi opiranje na obstoječo strukturo DNS je dobra poteza. Slaba plat pa je, da bi SPF zaživel šele, če bi ga uporabljala večina strežnikov po svetu. Ker pa je imel Microsoft s SPFjem svoje načrte (Sender ID; zamisel je na srečo padla v vodo), je malo možnosti, da bo SPF postal tudi zares uporaben.

Ob uporabi sistema Sender Policy Framework imamo v zapisih DNS shranjene naslove IP, ki so izključno zadolženi za pošiljanje pošte za našo domeno.

Sistemi z izzivom in odgovorom (challenge/response) izkoriščajo to, da je pošiljatelj nesmetnih sporočil navadno človek. Kadar dobijo sporočilo od neznanega pošiljatelja, mu odgovorijo z izzivom ("pošljite to-in-to na ta-in-ta naslov, če niste robot, ki proizvaja smeti") in šele, ko je na izziv odgovorjeno, dovolijo pošiljatelju nemoteno pošiljanje pošte. Ker pa je mnogo legalnih sporočil izdelanih in poslanih samodejno in ker se uporabnikom navadno ne ljubi odgovarjati na take izzive (ljudje smo pač leni), sistem ni v širši rabi. Še sreča.

Nekateri (denimo naš kolumnist Nikolaj Pečenko) zagovarjajo obvezno plačevanja elektronske pošte. Za vsako poslano sporočilo bi plačali neko minimalno vsoto, ki se večini uporabnikov ne bi niti poznala (oziroma bi bil nekakšen mesečni bonus že vštet v internetno naročnino), pošiljalce smeti pa bi krepko usekala po žepu. Zamisel je sicer čisto smiselna in temelji na sistemu navadne pošte, a se zatakne že pri poštnih seznamih, ki bi postali popolnoma neuporabni, še bolj pa pri tem, da bi moral tak sistem hkrati vpeljati ves svet.

Priporočamo

Za konec omenimo še nekaj nasvetov vsem upraviteljem poštnih strežnikov. Če se jih boste držali, bo vaše življenje (in življenje vaših uporabnikov) bistveno lažje.

Pazite na rezervne poštne strežnike. Ti imajo navadno slabše vzdrževano protismetno zaščito (sploh če so postavljeni na oddaljeni lokaciji), zato programi za množično smetenje praviloma pošljejo pošto kar rezervnemu poštnemu strežniku in ne glavnemu. Ker je to nelegalno obnašanje (ni po standardih za izmenjavo elektronskih sporočil), pa je hkrati dober indikator elektronskega smetja. Na rezervnem poštnem strežniku lahko zato postavimo močnejše filtre. Upravitelji po svetu že postavljajo sisteme, pri katerih glavnemu in rezervnemu strežniku dodajo še enega, posebej pripravljenega za to, da ga bodo napadli programi za smetenje. Vso pošto, ki pride v tak strežnik, zavračajo, poleg tega pa povezave zavirajo in pošiljatelje dodajajo na svoje črne liste. Metoda je (vsaj zaenkrat) nadvse uspešna.

Pazite, kako imate nastavljeno posredovanje sporočil, da se ne boste znašli na črni listi.

Lokalnim uporabnikom nastavite varne protokole za pošiljanje (TLS). To vam poleg varnosti vaših uporabnikov prinaša tudi zelo dobro obrambo proti temu, da bi se znašli na črni listi.

Nastavite poštni strežnik tako, da bo preverjal zapise DNS pošiljateljev in metal stran pošto, ki izvira iz strežnikov brez zapisov DNS.

Predvsem pa spremljajte nova dognanja. Boj proti elektronskemu smetju je, vsaj zaenkrat, še zelo dinamičen in odprt.

Koristne povezave

www.flakshack.com/anti-spam/old-index.html

flakshack.com/anti-spam/wiki/index.php

www.chrishardie.com/tech/qmail/qmail-antispam.html

undeadly.org/cgi?action=article&sid=20060217105149

projects.puremagic.com/greylisting/whitepaper.html

razor.sourceforge.net

www.rhyolite.com/anti-spam/dcc

www.openspf.org

tmda.sourceforge.net

www.mxrate.com

www.cloudmark.com

Objavljen je le del celotnega besedila članka. Celotni članek z vsemi podatki lahko preberete v tiskani izdaji Monitorja.

Naroči se na redna tedenska ali mesečna obvestila o novih prispevkih na naši spletni strani!
Prijava

ph

Komentirajo lahko le prijavljeni uporabniki