Bu yazının konusu; başka bir kurum adına gönderilen sahte ve kötü amaçlı e-postaları azaltmaktır. Bir çoğumuzun başına gelmiştir. Ya da “Fatura bilgisi e-postasına tıkladım, bilgisayarım çöktü” tarzında ifadeleri duymuşuzdur. Bu tarz e-postaların kullandığı yaygın yöntem şöyledir:
sirket.com.tr adresine benzeyen (sirket.cm, sirket.com, sirket.tr.com, vb.) bir alan adı üzerine koyulan, gerçek şirketin web sayfasına çok benzeyen, sahte bir web sayfası üzerinde virüs ya da oltalama formları kullanarak, kişileri kandrımaya çalışırlar.
Eğer ki gelen e-posta gönderici filtrelerine takılmayacak kadar iyi tasarlanmışsa, kara listeye takılmayabilir ve hatta spam puanlama sistemlerinden çok iyi puan alabilirler. Bu durumda son kullanıcının önüne gerçeğine çok benzeyen kandırmaca bir e-posta ulaşmış olur. Bize gelen bu tarz e-postaların spam skorunun, orijinal şirketin spam skorundan daha iyi olduğunu da gördüm.
Bu tarz e-postalardan korunmanın en iyi yolu aslında, kullanıcıların bilinçli ve dikkatli olmasıdır. Ancak bunu yapacak olan bir sihirli değnek yok. Okuduğunuz yazının konusu, bahse konu e-postaların düzenli ifadeler (Regular Expressions ~ RegEx) kullanılarak azaltılabileceğidir. Öncelikle Postfix’te düzenli ifadeleri nasıl kullanabileceğimize bakalım:
Postfix’te Düzenli İfadeler
Postfix’te; başlık (header), gövde (body) ve ilave içerikler (MIME) konusunda regex kullanılabiliyor. Bunun için; main.cf içerisinde aşağıdaki şekilde ilgili satırlar düzenlenebilir:
1 2 3 |
header_checks = regexp:/etc/postfix/header_checks body_checks = pcre:/etc/postfix/body_checks mime_header_checks = regexp:/etc/postfix/mime_header_checks |
Eşit işaretinin sağ tarafı; aranacak olan ifadelerin (kuralların) bulunduğu dosyayı işaret ediyor. Dosyanın önündeki regexp/pcre ifadesi de dosyanın hangi biçimde olduğunu belirtiyor. “regexp” Postfix’in varsayılan biçimidir. “pcre” ise, “Perl Compatible Regular Expressinons” biçimidir. regex’in farklı diller içerisinde ufak tefek farklarla kullanılması nedeniyle aynı ifade farklı sistemlerde farklı yorumlanabiliyor. Bugün uğraştığım işlemi regexp ile yapamadığım için, yukarıdaki kodda görülen pcre kısmını regexp yerine kullandım. Kullandığım Ubuntu sunucuda postfix’e pcre desteği vermek için, postfix-pcre paketini yüklemem gerekti:
apt-get install postfix-pcre
Yukarıda bahsedilmiş olan dosyalarda düzenleme yaptıktan sonra, bu ayarların etkin olması için Postfix’İn yapılandırmayı yeniden yüklemesi gerekmektedir. Şöyle:
1 |
$ sudo postfix reload |
E-posta’nın Başlık Kısmında Kullanılabilecek Olan Düzenli İfadeler
E-postanın başlığına baktığımızda From: Subject:, vb. ifadeler görürüz. Bu kısım ile ilgili bir kural yazmak için, header_checks dosyası kullanılmalıdır. Aşağıda fikir vermesi örnek bir dosya içeriği verilmiştir. WEB üzerinde bu konularda farklı örnekler de bulunmaktadır
1 2 3 4 5 6 |
### /etc/postfix/header_checks ### /^Subject:.*Re: Here is the document/ REJECT Virus ihtimalinden dolayi kabul edilmedi /^subject:/ WARN /^(From):.*\b(kullanici\@alanadi\.com\.tr)\b/ ACCEPT /^(From):.*\b(spamci\.com)\b/ REJECT #2014.01.07 phishing /^To:([^@]*@){30,}/ REJECT Too many recipients (30dan fazla kisiye gonderecekseniz, "alici" yerine "gizli" kismini kullaniniz.) |
Üstteki dosyanın satırlarını aşağıda açıklamaya çalışalım:
- Açıklama satırı
- Konusunda “Re: Here is the document” ifadesi geçen e-postaları engelle. Bu konuya sahip olan e-posta gönderen bir virüsü engellemek için yazılmış.
- İfade kısmı boş olduğu için, her şeyle eşleşiyor (match). Komut olarak ta WARN yazılmış. Bu durumda konusu ne olursa olsun, uyarı oluşturacaktır. Başka birdeyişle, giden/gelen e-postaların konusunu syslog’a yazmak için kullanılacaktır.
- kullanici@alanadi.com.tr kullanıcısına torpil yapılmış. Bu e-posta adresinden gelen e-postalar daha alttaki satırlara bakılmadan kabul edilecektir.
- Gönderici kısmında, spamci.com ifadesi bulunan tüm e-postalar reddedilecektir.
- Alıcı (To:) kısmında 30’dan fazla e-posta hesabı (@) olan e-postalar hata mesajı ile reddedilecektir.
Gövde Kısmında Kullanılabilecek Olan Düzenli İfadeler
Başlıkta değil de, e-posta metni içerisinde yer alan ifadelerle ilgili eşleştirme kuralları bu kısımda yazılmalıdır. Aşağıda örnek dosya içeriği verilmiştir:
1 2 3 4 5 |
### /etc/postfix/body_checks ### ~^[[:alnum:]+/]{60,}$~ OK /php5\.cz/ REJECT e-posta icindeki web adresi tehlikeli /(?=(http:\/\/.*turkcell|vodafone|avea\.)(?!com\.tr))/ REJECT Bu bir oltalama e-postasi olabilir. Metin icerisindeki URL'lere dikkat edin. /(?=(http:\/\/.*akbank|denizbank\.)(?!com))/ REJECT Bu bir oltalama e-postasi olabilir. Metin icerisindeki URL'lere dikkat edin. |
Şimdi satırları açıklayalım:
- Açıklama satırı
- E-posta gövdesinin ilk karakterlerine bak. Base 64 kodlama varsa, iilemciyi yormamak için e-postayı serbest bırak. Kodlanmış bir metin içinde, metin eşleştirmesi yapmanın anlamı yok tabiiki.
- E-posta gövdesinde php5.cz adresi geçerse, bu e-postayı reddet.
- Fatura e-postası şeklinde gelen kötü e-postaları bir nebze azaltmak için yazılmıştır. E-posta gövdesinde, http:// ile başlayan, daha sonra bir yerde turkcell. (sonunda “.” işareti var) sözcüğü geçen ancak sonrasında com.tr gelmeyen ifadeleri eşleştirir. turkcell.com, turkcell.cm turkcell.online.com şeklindeki ifadelerin tamamı ile eşleşmektedir. regex ifadelerini yazmak için birçok editör bulunmaktadır. Hatta online web üzerinden ücretsiz kullanılabilen editörler de bulunmaktadır. Örneğin yukarıdaki ifadeyi test etmek için, buraya tıklayabilirsiniz.
- Üstteki ifade ile benzer şekildedir. com.tr yerine com olacak şekilde yazılmıştır.
MIME Kısmında Kullanılabilecek Olan Düzenli İfadeler
E-posta ekleri ile ilgili kurallar burada yazılabilir. Aşağıda örnek dosya verilmiştir:
1 2 |
### /etc/postfix/mime_header_checks ### /name=[^>]*\.(bat|com|exe|dll)/ REJECT # Uzantısı bat, com, exe, dll, scr olan dosyalari reddet. |
Burada sadece bir tane kural verilmiştir. Yanında açıklama da yazıyor zeten. E-posyta ekinde bazı dosya tiplerinin gönderilmesini ve bu tarz eklere sahip olan e-postaların da bize gelmesini istemiyoruz.
Son Sözler
Düzenli ifadeler için yavaş olduğu söylenmektedir. Doğruluk payı da vardır. Daha iyisini bilen varsa, yorum ekleyerek bilgilendirebilir.
Kurumların kendi adreslerinden geliyormuş gibi görünen e-postaları engellemenin en güzel ve kolay yolu ise SPF‘tir. Örneğin; webmaster@bilecik.edu.tr alanından bilecik.edu.tr kullanıcılarına “kotanız doldu, buraya tıklayıp artırın” şeklinde gelen e-postaları bu şekilde engelledik. Bu sistem İki aşamalıdır. İlk aşamada DNS sunucusuna “.bilecik.edu.tr alanından sadece 79.123.224.5 IP adresi e-posta gönderebilir. Bunun haricinde bir IP adresinden bu alan adından bir e-posta gelirse , lütfen silin” şeklinde ayar yapılır. İkinci aşamada da Postfix üzerinde; “Gelen e-postalarda SPF yapılandırmasını kontrol et, uygunsuzları reddet” ayarı yapılarak işlem tamamlanır.
1 yorum
Murat
31 Ağustos 2015, 14:54 (UTC 2) Bu yoruma bağlantı
Faydalı bir yazı olmuş, teşekkürler Murat