OpenBSD spamd tarkvara kasutamine
Sisukord
Sissejuhatus
Rämpspostiks (ingl. k. spam, unsolicited bulk email (UBE), unsolicited commercial email (UCE)) nimetatakse massiliselt juhuslikele adressaatidele saadetavat e-posti, mida adressaat ei soovi saada. Reeglina püütakse rämpsposti abil midagi müüa, tutvustada või neis kirjades puudub üldse tähenduslik sisu. Tehnilises mõttes koormab rämpspost postisüsteemi, kuna iga saabunud kirja tuleb töödelda ja sellele kulub ressurssi, mitte-tehnilises mõttes segab kasutajatel tegeleda nö põhitegevusega.
Rämpsposti saatjate eesmärgiks on oma kirjad sokutada postisüsteemi kasutajate nö õige posti hulka. Postisüsteemi üheks ülesandeks on saada aru, millisel juhul on tegu rämpspostiga ning takistada sellel kasutajaid eksitada.
Üldiselt tegeldakse rämpspostiga rakendades kahesuguseid meetmeid
- aktiivne - postisüsteem teeb ennem kirja vastuvõtmist piisava tõenäosusega kindlaks, et tegu on rämpspostiga ning kirja ei võeta vastu (nt Spamd, dns blacklistid)
- passiivne - postisüsteem võtab kirja vastu ja paigutab kasutaja postkasti, kuid analüüsi tulemusena märgitakse rämpspost spetsiifiliselt ära, näiteks lisatakse Subject reale '*****SPAM*****' või paigutatakse automaatselt kasutaja postkasti spetsiaalsesse kausta (nt Spamassassin)
Spamd tööpõhimõte
Spamd tarkvara abil saab aktiivselt takistada rämpsposti jõudmist kasutajateni, st rämpspost avastatakse enne, kui postisüsteem kirja nö tervikuna vastu võtab ja seejuures võtab kirjaga edasi toimetamise eest vastutuse endale. Spamd ei analüüsi absoluutselt posti sisu, vaid toetub asjaolule, et reeglina rämpsposti saatja proovib kirja saata ainult üks kord samal ajal kui nö õiget posti püütakse saata peale ajutise veateate saamist korduvalt mitme tunni kuni mitme päeva jooksul.
Alustuseks võib lihtsustatult öelda, et Spamd tarkvara kasutamisel on kaks otsest eesmärki
- pidada paketifiltri jaoks <spamd-white> tabelit, kus on kirjas need ip aadressid, kust spamd andmetel saadetakse nö õiget posti
- pidada iseenda jaoks /var/db/spamd andmebaasi, kus on kirjas muu hulgas rämpsposti saatnud aadressid ja mida ta kasutab neilt ip aadressidelt tulnud ühenduste kiusamiseks
/var/db/spamd andmebaas on tegelikult seetõttu olulisemagi tähendusega, et spamd kasutab seda nö rämpsposti saatvate ja õiget eposti saatvate ip aadresside kindlakstegemiseks, mida kirjeldatakse üksikajasjalikult järgmises punktis.
Spamd esineb tulemüüris spamd nimelise deemoni kujul, kuulates reeglina localhost:8025 porti ja paketifilter ühendab sinna kõigilt ip aadressidelt saabunud ühendused, mis pole kirjas <spamd-white> tabelis. <spamd-white> tabelis olevatelt ip aadressidelt lähtuvad ühendused suunab paketifilter otse MTA'le, nende jaoks praktiliselt spamd olemasolu jääb praktiliselt märkamatuks.
Iseenesest töötab spamd deemon ajutiste SMTP veateadete väljastajana, kuidas seda täpselt kasutatakse, selgitatakse samuti üksikasjalikult järgmises punktis. Oluline on tähele panna, et spamd deemon ei tööta SMTP vahendajana (ingl. k. proxy), samuti ei ole spamd seadistamisel vaja kirjeldada millise domeeni epostiga MTA tegeleb ega ei olene spamd seadistamine millist konkreetset MTA tarkvara postisüsteemis kasutatakse.
Ühe spamd tarkvara sisaldava postisüsteemi skeem võiks näiteks olla selline
___ | | | | |___| kirja saatja internetis | | ... internet ... | | _|_ tulemüür: PF, Spamd, 172.16.1.17 | | | |------------------|---- |___| | | _|_ MTA (Postfix), Cyrus, 10.0.100.12 | | | | |___| | | --|---------|-------------|--------------- | | _|_ _|_ töökohaarvuti, 192.168.100.12 | | | | MUA (nt Thunderbird, Pine) |___| |___|
Spamd lahendust sisaldav postisüsteem töötab rämpspostiga ip aadressi täpsusega, st nii ei saa olla, et samal ajal osa ip aadressilt laekuvat posti lubatakse läbi takistamatult ning osa takistatakse.
Tihtipeale tegelevad arvutid rämpsposti saatmisega omaniku teadmata nt viirusega nakatumise tulemusena ning usutavasti omanik avastab selle ja lõpetab rämpsposti saatmise ning ka vastupidi, arvuti, mis täna saadab eranditult nö õiget posti võib olla homme kompromiteeritud ning asuda saatma rämpsposti. Selleks, et selliste muudatustega toime tulla ei ole nende ip aadresside nimekiri, mida spamd käsitleb rämpspostitajatena igavene ega pole ka <spamd-white> sisu samuti igavene, IP aadresse kustutatakse neist nimekirjadest automaatselt seadistustes kindlaksmääratud aja möödumisel.
Kirjeldatud ajutiste veateadete kasutamise tehnika rämpsposti takistamiseks võeti kasutusele 2003 aastal ja tundub uskumatu, et veel viis aastat hiljem 2008 aastal töötab see väga efektiivselt, aga nii see on. Ilmselt on põhjuseks asjaolu, et vaatamata sellele õnnestub rämpspostitajatel piisavalt posti ära saata.
/var/db/spamd andmebaas
Spamd selgitab välja <spamd-white> tabeli ip aadressid kasutades hallnimekirjamist (ingl. k. greylisting), mis toimub selliselt
- Esmakordselt pöördumisel ip aadressilt spamd poole registreeritakse see pöördumine /var/db/spamd andmebaasis nn GREY (ingl. k. hall) kirjena ning pöördujale vastatakse ajutise SMTP veateatega '451 Temporary failure, please try again later. (in reply to DATA command))'. Sellisel juhul peab korrektselt töötav postisüsteem mõnekümne minut pärast uuesti proovima sama kirja saata. GREY kirje sisaldab järgmisi andmeid
- saatja ip aadress
- HELO väärtus
- ümbriku (ingl. k. envelope) from aadress
- ümbriku to aadress
- kirje registreerimise aeg
- kirje tööle hakkamise aeg - registreerimise aeg + 25 minutit
- kirje kehtivus lõpp - registreerimise aeg + 4 tundi, sel ajal eemaldatakse GREY kirje /var/db/spamd andmebaasist
- Kui hiljem kui 25 minutit, aga mitte hiljem kui 4 tundi peale esimest pöördumist pöördutakse uuesti samalt aadressilt (õigupoolest peavad klappima GRAY kirje neli esimest välja), siis lisab spamd selle ip aadressi paketifiltri <spamd-white> tabelisse ning lisab /var/db/spamd andmebaasi selle ip aadressiga WHITE kirje, mis sisaldab
- saatja ip aadressi
- kirje tekitamise aega
- ?
- krije kehtivuse lõpp - registreerimise aeg + 36 päev, siis eemaldatakse WHITE kirje /var/db/spamd andmebaasist
- Kui peale esimest pöördumist nelja tunni jooksul uuesti ei pöörduta, siis spamd kustutab /var/db/spamd andmebaasist vatava GREY kirje. Kui seejärel kunagi pöördutakse uuesti samalt ip aadressilt, siis sooritatakse kogu protseduur algusest peale uuesti.
/var/db/spamd andmebaasi sisu saab esitada spamdb programmi abil
# spamd WHITE|192.168.10.1|||1211029865|1211029872|1214141349|1|3 GREY|192.168.10.54|endel.spam.tartu.loomaaed.ee|<endelspam@endelspam.com>|<mart@tartu.loomaaed.ee>|1211033587|1211047987|1211047987|1|0
Siit on näha, et ip aadressiga 192.168.10.1 seotud WHITE kirje on
- moodustatud Sat May 17 16:11:05 EEST 2008 (date -r 1211029865)
- ... (date -r 1211029872)
- aegub Sun Jun 22 16:29:09 EEST 2008 (date -r 1214141349)
WHITE kirjeid saab käsitsi lisada käsuga
# spamdb -a ip.aa.dre.ss
ning eemaldada käsuga
# spamdb -d ip.aa.dre.ss
Eemaldamisel tuleb arvestada asjaolu, et kui ip aadressiga seotud GRAY kirje on alles ning vastav WHITE kirje kustutada, siis järgneval meili vastuvõtmisel moodustatakse WHITE kirje uuesti. Et see nii ei juhtuks tuleb lisada ip aadress TRAPPED kirjena, millest on juttu järgmises punktis. GRAY kirjeid ei saab spamdb utiliidiga eemaldada.
Samal ajal saab jälgida paketifiltri <spamd-white> tabeli sisu öeldes
# pfctl -t spamd-white -T show
spamd deemoni kasutamine
spamd deemoni kasutamiseks tuleb deemon käivitada käsuga
# /usr/libexec/spamd -v -l 127.0.0.1
ning seadistada sobivalt paketifilter, näiteks sellise kahe reegli kasutamisega
rdr on $ext_if inet proto tcp from <spamd-white> to 172.16.1.17 port 25 tag SPAMD -> 10.0.100.12 rdr pass inet proto tcp to 172.16.1.17 port 25 -> 127.0.0.1 port 8025
Selleks, et spamd arvuti alglaadimise ajal kävituks tuleb faili /etc/rc.conf.local lisada rida
spamd_flags="-l 127.0.0.1 -v"
spamlogd deemoni kasutamine
spamlogd deemon on vajalik selleks, et WHITE kirjed /var/db/spamd andmebaasis (ja ip aadressid paketifiltri <spamd-white> andmebaasis) säiliks, st et WHITE kirje kehtivusaeg lõppeks alati 36 tundi peale viimase andmevahetuse toimumist. Kuna õigetelt ip aadressidelt toimub andmevahetus postisüsteemi MTA'ga otse, siis peab leiduma võimalus Spamd süsteemil jälgida MTA'de vahelist andmevahetust muul viisil. See on korraldatud selliselt, et spamlogd töötab koostöös paketifiltri logiseadmega kuulates tulemüüri sisenevat ja tulemüürist väljuvat MTA'de vahelist liiklust ning korrigeerides vajadusel mainitud andmebaase.
Praktiliselt on otstarbekas moodustada spetsiaalne logiseade käsuga
# ifconfig pflog1 create
ning kasutada paketifiltri seadistusfailis sarnaseid reegleid
pass in log (to pflog1) on $ext_if inet proto tcp to 10.0.100.12 port 25 pass out log (to pflog1) on $ext_if inet proto tcp from 10.0.100.12 to any port 25
spamdlogd deemon käivitatakse öeldes
# /usr/libexec/spamlogd -l pflog1
Selleks, et spamlogd arvuti alglaadimisel käivituks, tuleb faili /etc/rc.conf.local lisada rida
# spamlogd_flags="-l pflog1"
Peibutisaadressi kasutamine
Üks teravmeelne taktika rämpspostitavaid ip aadresse vahele võtta on sättida oma veebikoha lähteteksti sisse spetsiaalne peibutisaadress, nt rampsposti.loks@loomaaed.tartu.ee, mida veebiküljastaja brauseriga niisama ei näe, kuid mille tõenäoliselt rämpspostirobotid avastavad. Kui see aadress lisada /var/db/spamd andmebaasi SPAMTRAP (ingl. k. rämpspostilõks) kirjena käsuga
# spamdb -T -a rampsposti.loks@loomaaed.tartu.ee
siis sellele aadressi kirja saata püüdvad ip aadressid lisatakse /var/db/spamd andmebaasi TRAPPED (ingl. k. lõksupüütud) kirjetena. TRAPPED kirje eemaldatakse andmebaasist automaatselt 24 tunni pärast.
IP aadresse saab lisada käsitsi TRAPPED kirjetana öeldes
# spamdb -t -a ip.add.re.ss
/etc/mail/spamd.alloweddomains
Kui moodusta eposti aadresse sisaldav fail, rea kohta aadress või aadressi osa
# cat /etc/mail/spamd.alloweddomains mart@loomaaed.tartu.ee priit@loomaaed.tartu.ee
siis lisatakse kõigi ip aadressidega seotud TRAPPED kirjed /var/db/spamd andmebaasi, mis püüavad saata kirja mõnele aadressile, mida selles failis kirjas pole.
Tõrvatünnimine (ingl. k. tarpitting)
Spamd aktiivseks olemise üheks tunnuseks on mainitud rämpspostitajate kiusamine rämpspostitajate ressursside raiskamine teel. Nimelt, kui spamd deemoniga peab ühendust TRAPPED kirjes oleva ip aadressiga arvuti, siis spmad peab temaga väga rahulikus tempos toimuva andmevahetusega ühendust. Tavaliselt ootab rämpspostitaja SMTP rääkimise lõppu kümmekond minutit ja alati lõpetatakse see ajutise 451 veateatega.
Parasjagu käimasolevaid selliseid ühendusi saab jälgida logist ning käsuga
# netstat -an | grep 8025
Tõrvatünnimise juures peab muidugi jälgima, et spamd arvuti ressursside kasutusega ei liialdata.
Logi ja statistika
Vaikimisi salvestatakse logi faili /var/log/daemon.
Mustade nimekirjade kasutamine
Lisaks automaatselt täituvale /var/db/spamd andmebaasile (ning <spamd-white> andmebaasile) on olemas võimalus laadida spetsiaalselt ettevalmistatud failidest nimekirju, mida kasutatake tõrvatünnimiseks.