| 10-05-05 09:05 Graylisting
 
  piše ŽELJA BOROŠ
 
 
 Neželjena pošta, spam, svima nam zadaje glavobolju. Svaka nova tehnika zaštite od spama samo je poluciklus na koji spameri brzo nalaze odgovore. Zamjene slova brojkama, namjerni tipfeleri, reklamni slogan kao slika... sve su to lukavstva za zaobilaženje filtera protiv spamova.
   Kako se onda boriti protiv spama?
 Spamerima je najvažnija brzina. Što više isporučenih poruka, na što više adresa, u što kraće vrijeme, pa će i zarada biti veća. Svjesni činjenice da ljudi mijenjaju adrese, primjenjuju nove filtere, da njihov adresar svakog trenutka sve manje vrijedi, spameri su neprestano u žurbi. Na tome se može graditi obrana. Spameri ne provjeravaju kod greške, tj. statusni kod koji im poslužitelji primatelja vraćaju. Kod je u pravilu pozitivan, tj. signalizira da je poruka prihvaćena i proslijeđena. No, u pojedinim situacijama poslužitelj nije spreman za prihvaćanje maila, što daje do znanja kodovima 4xx. Ovi kodovi poručuju pošiljatelju da dostavu pokušaju kasnije. Potpunu listu SMTP kodova možete naći u ovom članku.
   Kad jednom "ispucaju" sve adrese s vaše domene (a to je događaj koji se mjeri sekundama, eventualno minutama), spameri ne pokušavaju ponovno, ili do novoga pokušaja protječe nekoliko sati ili dana. Upravo se na tome temelji novi način obrane od spama - graylisting.
   Graylisting
   Što su crne i bijele liste može se zaključiti iz samog imena. Siva lista (graylist), služi za privremenu "karantenu" IP adresa koje pokušavaju isporučiti e-poštu našem poslužitelju. U prvom razdoblju sva se pošta s te adrese odbija. Karantena traje kratko, 15 ili 25 minuta, a nakon toga se IP adresa prebacuje u bijelu listu i pošta se s nje prima određeno vrijeme, najčešće jedan dan.
 Za razliku od spamerskog softvera, regularni poslužitelji su podešeni tako da se neisporučena pošta šalje ponovo dok ne nastupi definirani timeout (uobičajeno 3-5 dana). Razmak između pokušaja je najčešće petnaestak minuta.
 Ova jednostavna razlika u načinu rada bit je ideje obrane putem graylistinga. Svaki regularni mail ("ham") nakon nekoliko pokušaja bit će uspješno isporučen, a nakon toga svaki sljedeći s te adrese neće se zadržavati. Kako spameri ne provjeravaju uspješnost isporuke, neće ni znati je li poruka isporučena, a njihov će softver krenuti na drugi niz adresa.
   Mane i prednosti
 
 
 Graylisting nije savršen. Glavna mu je mana očigledna, svaka će se poruka u početku odbiti, što može zasmetati u slučajevima kad je nužna hitnost isporuke. Problem ublažava pažljivo složena inicijalna bijela lista. Dodatna je nevolja što odbijajući poruke opterećujemo udaljene poslužitelje, što će eskalirati kad se mnogi počnu braniti graylistingom.
 Druga mana je što spam ipak može proći zaštitu jer je istekao period karantene, a adresa spamera je završila na bijeloj listi. No bijela lista vrijedi samo 24 sata (ili koliko ste već odredili), pa jedan te isti spamer neće moći dugotrajno isporučivati neželjenu poštu. Također, moguće je njegovu IP adresu staviti u access listu sendmaila i trajno riješiti problem upornih spamera.
 Treći i najveći problem je u tome što će se spameri neminovno prilagoditi novom sustavu zaštite. Spamerski softver samo treba malo dograditi, definirati da se svaki odbačeni mail kod kojega greška nije fatalna pokuša ponovno isporučiti. To bi srušilo temelj ovog sustava obrane, te će on u tom slučaju brzo zastarjeti.
 Pozitivne strane primjene graylistinga ne treba više posebno isticati. Koliki će biti dobici ovisi o svakom poslužitelju pojedinačno, njegovoj konfiguraciji te prometu. No, može se reći da graylisting propusnost spama smanjuje od 60 do 80 posto, pa i bolje. Ako se pri tome rabe i klasični filtri (SpamAssassin, razor, pyzor, PureMessage itd.), postotak zaustavljanja spama može prijeći 95%, što će korisnici svakako zamijetiti i znati cijeniti. Trenutačno nema razloga da ne primijenite ovaj sustav, jer nakon primjene nema potrebe za daljim administriranjem, a instalacija je izuzetno jednostavna.
   Instalacija
 Graylisting se može primijeniti na svakom mail poslužitelju, no ovdje ćemo se ograničiti na CARNetov standard, sendmail. Iskoristit ćemo moćan filter ugrađen u sendmail, milter.
 
 Milter koji ćemo rabiti "inventivno" se zove graymilter. Instalacija je jednostavna. Opisat ćemo postupak instalacije iz izvornog koda, koji se nalazi na adresi http://www.acme.com/software/graymilter/. Paketa za Debianovu distribuciju trenutačno nema, ali je dostupan paket postgrey za Postfix.
   Postupak kompiliranja je standardan i jednostavan:
 ./configure & make & make install
 
 Konfiguracija
 
 Najprije treba sastaviti početnu bijelu listu. Kolegijalno upišite sve javne operatere u Hrvatskoj, što će spriječiti nepotrebno zadržavanje pošte. U najmanju ruku u datoteku je potrebno staviti CARNet. Unosi u datoteci su rasponi IP adresa (u CIDR notaciji):
 161.53.0.0/16 # CARNet
 193.198.0.0/16 # CARNet
 195.29.150.0/8 # T-com
 213.191.142.0/8 # Iskon
 213.191.133.0/8 # Iskon
 83.139.64.5 # X-net
 83.139.64.12 # X-net
 212.91.98.0/8 # Vipnet
 212.91.97.0/8 # Vipnet
 213.149.32.0/8 # Globalnet
 217.14.208.0/8 # Vodatel
 195.78.32.0/8 # Posluh
 Navedeni su rasponi adresa naših ISP-ova, no popis nije potpun i valja ga prilagoditi lokalnim uvjetima i potrebama. Napomenut ćemo da je u bijelu listu dovoljno staviti samo onaj segment mreže gdje je Mail Exchanger (MX) poslužitelj, a ne cijeli IP raspon određenog ISP-a. Još je bolje staviti samo IP adresu MX poslužitelja, što je poželjno kod kabelskih i DSL operatera gdje su korisnička računala često zaražena virusima i spywareom.
 Datoteku s bijelom listom možete nazvati bilo kako, recimo "graymilter_initial_whitelist" i postaviti je u /etc/mail. Naziv i mjesto datoteke podešava se u startup skripti.
 
 Parametri
 
 Izvršna datoteka graymilter prima nekoliko opcija:
   -graytime seconds
 Opcija određuje koliko će dugo IP adresa biti u karanteni, a default je 25 minuta (1500 sekundi)
   -whitetime 
 Ovime se određuje vrijeme u kojemu je IP adresa označena kao sigurna, odnosno svaki mail s ove adrese neće biti zaustavljan u tom periodu.
   -initialwhitelist file
 Lokacija početne bijele liste. Popunite je uz pomoć uputa iz ovoga članka.
   -user user
 Korisnik pod čijom se prijavom vrti proces graymiltera. Ovo nije kritično; dovoljno je da je sendmailu dopušteno čitati početni graymilterov bijeli popis i njegov socket. U obzir dolaze korisnici smmsp, viruser/sweep, a na distribuciji Sarge najvjerojatniji je korisnik amavis.
   -nodaemon|-X
 Ova opcija određuje da se graymilter neće pokrenuti kao daemon, što može poslužiti kod debugiranja.
   -socket
 Putanja do graymilter socketa. Preporučamo /var/run/graymilter/graymilter.sock (ili neki kraći oblik).
 Startup skripta
 
 Isporučena startup skripta nije pogodna za operativne sustave Debian i Solaris, pa možemo prilagoditi amavisovu startup skriptu:
 #!/bin/sh
 # /etc/init.d/graymilter - start and stop the graymilter daemon
 # Zeljko Boros <zelja@ravnica.ptfos.hr> Sun, 10 Apr 2005 20:07:32 +0200
 set -e
 if [ `uname -s` = "SunOS" ] ; then
 PATH=/usr/bin:/sbin:/usr/sbin:/usr/ccs/bin:/usr/local/bin:/usr/local/sbin
 MILTER=/usr/local/sbin/graymilter
 else
 PATH=/bin:/usr/bin:/sbin:/usr/sbin
 MILTER=/usr/sbin/graymilter
 fi
 RUNDIR=/var/run/graymilter
 MSOCK=$RUNDIR/graymilter.sock
 WHITELIST=/etc/mail/graymilter_initial_whitelist
 # Time in seconds (default 25 mins and 2 days, here 15 mins and 2 days)
 GRAYTIME=900
 WHITETIME=172800
 USER=viruser
 test -x $MILTER || (echo "CN: $MILTER is missing"; exit 2)
 killkillkill() {
 # time to kill
 if [ `uname -s` = "SunOS" ] ; then
 pkill -f $MILTER >/dev/null 2>&1 || true
 else
 pkill -u $USER $MILTER >/dev/null 2>&1 || true
 fi
 sleep 1
 rm -fr $RUNDIR
 }
 case $1 in
 start)
 killkillkill
 if [ ! -d $RUNDIR ] ; then
 mkdir -p $RUNDIR
 chown $USER:$USER $RUNDIR
 chmod 700 $RUNDIR
 fi
 $MILTER -graytime $GRAYTIME -whitetime $WHITETIME -initialwhitelist \
 $WHITELIST -user $USER $MSOCK
 if [ $? -ne 0 ] ; then
 echo "CN: graymilter start failed! Look at logs for details."
 exit 4
 fi
 sleep 1
 ;;
 stop)
 killkillkill
 ;;
 restart)
 killkillkill
 exec $0 start
 ;;
 *)
 echo "Usage: `basename $0` (start|stop|restart)" >&2
 exit 1
 ;;
 esac
 exit 0
 Konfiguracija sendmaila
 
 Ostaje sustav povezati sa sendmailom. To je jednostavna operacija. Upišite sljedeći redak u sendmail.mc:
 INPUT_MAIL_FILTER(`graymilter',`S=local:/var/run/graymilter/graymilter.sock,
 T=S:4m;R:4m')
 Pokrenite "make -C /etc/mail" ako rabite Linux, a na Solarisu je potreban nešto složeniji naredbeni redak
 m4 -D_CF_DIR_=/usr/share/sendmail/sendmail.cf/ /usr/share/sendmail/sendmail.cf/m4/cf.m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
 Provjera logova
 
 Nakon uspješnog instaliranja, podešavanja i pokretanja, u log datoteci sendmaila bi se trebalo vidjeti zapis poput ovog:
 Apr 17 10:36:34 ravnica.ptfos.hr graymilter: [ID 175536 mail.info] reading
 /etc/mail/graymilter_initial_whitelist
 Da graymilter radi ispravno vidi se po sljedećim zapisima u mail logu:
 Apr 17 10:41:48 ravnica.ptfos.hr sendmail[18233]: [ID 801593 mail.info] j3H0fWfC
 018233: Milter: from=<sneed_do@tin.it>, reject=450 4.7.1 Please try again later.
 Svaki klijent koji nije u bijeloj listi dobija poruku 4.7.1 Please try again later, a njegova se adresa stavlja na sivi popis. Svake tri minute pregledavaju se IP adrese kojima je istekla karantena, te se one smještaju na bijeli popis.
 Apr 17 10:44:21 ravnica.ptfos.hr graymilter: [ID 722812 mail.info] graduating 3 addresses to whitelist
 Poslije toga sve se poruke s te IP adrese primaju bez zadržavanja.
 Apr 17 10:50:15 ravnica.ptfos.hr graymilter: [ID 532204 mail.info] 123.456.789.123 is whitelisted ? accepting
 Novi sustav za obranu od sveprisutnog spama je spreman za rad. Sretno!
 
 
 |