Backscatter Spam Nedir, Nasıl Önlenir ?
Backscatter diye tanımlanan spam faliyetleri, her sistem yöneticisinin önlem alması gereken bir konudur. Kullandığınız MTA ne olursa olsun, kısaca, “spammer ya da worm’lar tarafından sahte gönderen adresleri ile atılan spam maillerden bounce edenlerin, ilgili sahte sender’ın posta sunucusunda yol açtığı bounce bombardımanı” olarak özetlenebilecek backscatter olaylarına mahal vermemek için çeşitli adımlar atmak icap etmektedir. Aksi halde, posta sunucunuz bir backscatter faliyetinin kurbanı ya da bir DDoS atağının bir elemanı olabilir. |
İşte bu nedenle, backscatter’in ne olduğu, nasıl önlenebileceği gibi konulara genel geçer olarak değinmek için bu yazıyı yazmak istedim. Zira, backscatter ile ilgili araştırma yaparken çevremizdeki bir çok posta sunucusunun backscatter için önlem almadığına şahit oldum.
TTNet’in SMTP (25) Portunu Engellemesi
Bildiğiniz gibi TTNet spam mailler ile mücadele için bugün itibari ile pilot bölge seçilen bazı şehirlerde, dinamik IP’ye sahip adsl abonelerinin 25. portlarını kapatıyor. Böylece bu aboneler 25 numaralı smtp portuna ulaşamayacaklar. Bu konu gündeme geldiği zaman üye olduğum bir çok mail listesine konuyla ilişkili eleştirel bir çok mail geldi.Fakat ben bu uygulamanın bu kadar eleştiriyi hakketmeyen, aksine tam da yerine bir uygulama olduğunu düşünüyorum. |
İşte bu nedenle de konunun teknik kısımları ile ilgili bu yazıyı yazmak istedim.
Greylisting
Greylisting, enteresan ve efektif bir spam ile başetme metodudur. Bu metod, gönderilen her bir mailin source ip’sini, gonderen e-mail adresini ve alıcı e-mail adresini kontrol ediyor. (Bu üç bilgiye triplet deniyor.) Eğer gönderilen bir maile ait bu üç bilgi daha önce rastlanılmamış bir triplet ise "geçici olarak servis dışı"ymış gibi davranarak ilgili maili reject ediyor ve "Daha sonra tekrar deneyiniz" şeklinde bir hata mesajı gönderiyor.
Server servis dışı olmadığı halde gönderilen maili geçici bir süre için reject etti. İşte greylist uygulamasının enteresan yönü bu.
Bu yalancı reject durumunun nedeni aslında çok basit; SMTP’nin standartların belirtildiği RFC 2821 uyarınca, bir mail geçici olarak reject edildiği zaman, gönderide bulunan MTA ya da maili gönderen uygulama bir müddet sonra aynı maili tekrar göndermek için teşebbüsde bulunur; bulunmuyorsa o mail spamdir.
Spamdyke – Spam filter for qmail
Hatrı sayılır oranda mail trafiğine sahip bir qmail sunucusunun spam trafiği de o oranda fazla oluyor. Böyle bir sunucum var ve spam ile mücadele etmek için bu serverı, üzerinde spamassassin, qsheff ve rblsmtp kurulu olan bir smtp gateway arkasında çalıştırıyorum. Bu üçlü, kullanıcıları spam illetinden oldukça başarılı bir şekilde kurtarıyor. |
Ancak söz konusu spam ile savaş olduğunda, bazı zamanlar false positive durumlar yaşanmaması imkansız oluyor. Geçenlerden yine bir false positive sorunu ile karşılaştım. Ilgili qmail üzerinde hesabı bulunan ve Internet’e ADSL ile bağlanan bir kullanıcının ip’sinin, kullandığım block listte yer almasından dolayı gönderdiği mailler RBLSMTP tarafından reject ediliyordu.
Smtp authentication işleminden geçmesine rağmen adsl ip pool’undan aldığı kirli bir ip adresi nedeniyle ortaya çıkan bu sorun kafayi yemek için güzel bir false positive örneği değil mi?
Bu durum karşısında, yani smtp auth yapmış kişiler için rbl check işlemini pass geçmek için bir çözüm ararken Sam Clippinger’ın 2007’de yazdığı spamdyke isimli bir yazılıma rastladım. Qmail için yazılmış bu tool herhangi bir patch gerektirmeden sisteme kolayca kurulabiliyor ve yapılandırması oldukça basit. FreeBSD ports collectionda bulunan spamdyke’ı kurmam ve yapılandırmam 10 dakikamı almadı.
İşte üzerinde vpopmail çalışan bir qmail’in /var/qmail/supervise/qmail-smtpd/run dosyasının spamdyke ile ilgili temel satirları:
/usr/local/bin/spamdyke -l3 -d /var/qmail/control/rcpthosts -a 300 -T 60 -S /var/qmail/control/blacklist -x bl.spamcop.net --smtp-auth-command-encryption "/home/vpopmail/bin/vchkpw /usr/bin/true" --hostname hostname.domainname.com --access-file /etc/tcp.smtp
Smtp auth. özelliğinden başka bir sürü işe yarar özellikle birlikte gelen spamdyke gerçekten süper bir anti-spam aracı.
Şiddetle tavsiye ederim.
Daha fazla bilgi için:
http://www.spamdyke.org/documentation/README.html
Rblsmtpd
Rblsmtpd, ucspi-tcp paketi ile gelen Realtime Blocking List yazılımıdır. Bu yazılım gelen maillerin source ip’lerini daha önceden belirlediğiniz bir RBL veritabanınında sorgular ve listede bulması halinde maili reject eder. Bu şekilde spammerlara karşı güzel bir önlem almış olursunuz.
Yapılandırması da oldukça kolaydır:
Qmail’inizi stop ettikten sonra, /var/qmail/supervise/qmail-smtpd/run dosyasını editleyin.
Dosyanın orjinali (genel olarak) aşağıdaki gibidir :
#!/bin/sh QMAILDUID=`id -u qmaild` NOFILESGID=`id -g qmaild` MAXSMTPD=`cat /var/qmail/control/concurrencyincoming` LOCAL=`head -1 /var/qmail/control/me` if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ]; then echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in echo /var/qmail/supervise/qmail-smtpd/run exit 1 fi if [ ! -f /var/qmail/control/rcpthosts ]; then echo "No /var/qmail/control/rcpthosts!" echo "Refusing to start SMTP listener because it'll create an open relay" exit 1 fi exec /usr/local/bin/softlimit -m 7000000 \ /usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \ -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd 2>&1
Dosyaya, aşağıda kırmızı ile belirtilmiş eklemeleri yapın.
#!/bin/sh QMAILDUID=`id -u qmaild` NOFILESGID=`id -g qmaild` MAXSMTPD=`cat /var/qmail/control/concurrencyincoming` LOCAL=`head -1 /var/qmail/control/me` RBLLIST="" RBLLIST=$RBLLIST" -r bl.spamcop.net" #RBLLIST=$RBLLIST" -r relays.ordb.org" RBLLIST=$RBLLIST" -r dnsbl.sorbs.net" #RBLLIST=$RBLLIST" -r safe.dnsbl.sorbs.net" #RBLLIST=$RBLLIST" -r dev.null.dk" #RBLLIST=$RBLLIST" -r list.dsbl.org" #RBLLIST=$RBLLIST" -r multihop.dsbl.org" #RBLLIST=$RBLLIST" -r orbs.dorkslayers.com" #RBLLIST=$RBLLIST" -r orbz.gst-group.co.uk" #RBLLIST=$RBLLIST" -r sbl-xbl.spamhaus.org" if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ]; then echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in echo /var/qmail/supervise/qmail-smtpd/run exit 1 fi if [ ! -f /var/qmail/control/rcpthosts ]; then echo "No /var/qmail/control/rcpthosts!" echo "Refusing to start SMTP listener because it'll create an open relay" exit 1 fi exec /usr/local/bin/softlimit -m 7000000 \ /usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \ -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp \ /usr/local/bin/rblsmtpd -C $RBLLIST /var/qmail/bin/qmail-smtpd 2>&1
Daha sonra qmail’i yeniden başlatın. Böylce, gelen smtp istekleri dosyanın yukarısında belirtilen RBLLIST sunucularında sorgulanacaktır. Örnekte, bl.spamcop.net ve dnsbl.sorbs.net block listeleri kullanılıyor. Başlarında # işareti konup comment out edilmiş olanlar ignore edilmektedir. Farklı blocklistler kullanmak istemeniz durumunda, yeni RBLLIST satırları ekleyebilirsiniz.
Linkler:
http://cr.yp.to/ucspi-tcp/rblsmtpd.html
http://www.qmailinfo.org/index.php/Rblsmtpd
http://www.belgeler.org/howto/qmail-kurulumu-nasil_rblsmtpd.html