Güvenlik PHP

DNSBL Kullanarak Php ile Spam IP Sorgulama

DNSBL Nedir
Yazar : Burak Demir

DNSBL Nedir?

DNSBL, DNS Block List veya DNS Black List anlamlarına gelmektedir. DNSBL mekanizması genel olarak SPAM yayın yapan sistemlerin IP adreslerini yayınlar. Kullanıcılarına en iyi ve güvenli şekilde hizmet vermek veya sistemlerini spam IP adreslerinden korumak isteyen geliştirici ve firmalarda DNSBL servislerini kullanarak kullanıcı ve sistemlerini spam IP adreslerine karşı korumaktadırlar. Dünya genelinde sayısız DNSBL servisi bulunmaktadır. Bunların en çok kullanılan dört tanesini sizin için inceledim.

SpamHaus

Kullanımı en yaygın ve en sık güncellenen servistir. 5 Alt servisten oluşmaktadır.

  1. PBL Advisory : MAil gönderim yetkisi olmayan IP adres bilgilerini tutar.
  2. SBL Advisory : Spam gönderim yaptığı onaylanmış sistem ve servislerin IP adres bilgilerini tutar.
  3. XBL Advisory : Üçüncü parti sistem veya servislerin IP adres bilgilerini tutar.
  4. Zen : PBL,SBL ve XBL Advisory servislerinin tamamının aynı anda çalışmasını sağlar.
  5. SBL-XBL : SBL ve XBL Advisory servislerinin tamamının aynı anda çalışmasını sağlar.

Barracuda

Barracuda, Spam engelleme konusunda kendi yöntemlerini kullanrak oldukça başarılı olan servislerden bir tanesidir.

SORBS(Spam and Open Relay Blocking System)

SORBS sayısı 10’dan fazla olan DNSBL sunucularıyla en kapsamlı servislerdendir.

SpamCop

Kullanıcılardan aldığı bildirimlerle listelerinde güncelleme yaparak hizmet veren SpamCop, kullanıcılar tarafından bildirilen IP adreslerini inceler ve IP adreslerinden spam yayın yapılıyorsa listelerine ekler.

DNSBL Nasıl Çalışır?

Yazının başında da bahsettiğim gibi DNSBL, DNS Block List veya DNS Black List anlamlarına gelmektedir. Standart bir DNS sunucusu gibi çalışır. IP adresi bu sunuculara gönderilir. Eğer gönedrilen IP adresi her hangi bir spam listesinde bulunuyorsa kullanıcıya cevabı döndürülür.

Online DNSBL Sorgulama

Aşağıdaki adreslerden online sorgulama yapabilirsiniz.

PHP ile DNSBL Servislerini Kullanarak Spam IP Sorgulama

Her DNSBL servisinin belirli bir sorgu adresi bulunmaktadır. Hazırladımız metodumuz ile DNSBL servislerine istekler gönderip dönen cevaplara göre IP adresinin spam listelerinde bulunup bulunmadığını kontrol edeceğiz. Eğer spam listesinde bulunuyorsa kırmızı bulunmuyorsa yeşil bir şekilde spam listesinin adını ekrana yazdıracağız. Uygulamada kullanacağım DNSBL servislerinin sorgu adresleri aşağıdaki gibidir.

  • Spamhaus XBL : xbl.spamhaus.org
  • Spamhaus SBL : sbl.spamhaus.org
  • Spamhaus PBL : pbl.spamhaus.org
  • Spamhaus Zen : zen.spamhaus.org
  • Spamhaus SBL-XBL : sbl-xbl.spamhaus.org
  • Barracuda : b.barracudacentral.org
  • SORBS : dnsbl.sorbs.net
  • SpamCop : bl.spamcop.net

Metodumuzu yazalım.

function dnsblSorgula($ip){

    //Reverse IP oluşturuyoruz.
    $reverse_ip = implode(".", array_reverse(explode(".", $ip)));

    //Spamhaus XBL Sorguluyoruz. Eğer spam listesinde ip adresi yer alıyorsa Kırmızı yer almıyorsa yeşil çıktı alıyoruz.
    if (checkdnsrr($reverse_ip . ".xbl.spamhaus.org.", "A")) {
        echo '<span style="color: red">Spamhaus XBL</span><br/>';
    }else{
        echo '<span style="color: green">Spamhaus XBL</span><br/>';
    }

    //Spamhaus SBL Sorguluyoruz. Eğer spam listesinde ip adresi yer alıyorsa Kırmızı yer almıyorsa yeşil çıktı alıyoruz.
    if (checkdnsrr($reverse_ip . ".sbl.spamhaus.org.", "A")) {
        echo '<span style="color: red">Spamhaus SBL</span><br/>';
    }else{
        echo '<span style="color: green">Spamhaus SBL</span><br/>';
    }

    //Spamhaus PBL Sorguluyoruz. Eğer spam listesinde ip adresi yer alıyorsa Kırmızı yer almıyorsa yeşil çıktı alıyoruz.
    if (checkdnsrr($reverse_ip . ".pbl.spamhaus.org.", "A")) {
        echo '<span style="color: red">Spamhaus PBL</span><br/>';
    }else{
        echo '<span style="color: green">Spamhaus PBL</span><br/>';
    }

    //Spamhaus ZEN Sorguluyoruz. Eğer spam listesinde ip adresi yer alıyorsa Kırmızı yer almıyorsa yeşil çıktı alıyoruz.
    if (checkdnsrr($reverse_ip . ".zen.spamhaus.org.", "A")) {
        echo '<span style="color: red">Spamhaus ZEN</span><br/>';
    }else{
        echo '<span style="color: green">Spamhaus ZEN</span><br/>';
    }

    //Spamhaus SBL-XBL Sorguluyoruz. Eğer spam listesinde ip adresi yer alıyorsa Kırmızı yer almıyorsa yeşil çıktı alıyoruz.
    if (checkdnsrr($reverse_ip . ".sbl-xbl.spamhaus.org.", "A")) {
        echo '<span style="color: red">Spamhaus SBL-XBL</span><br/>';
    }else{
        echo '<span style="color: green">Spamhaus SBL-XBL</span><br/>';
    }

    //Barracuda Sorguluyoruz. Eğer spam listesinde ip adresi yer alıyorsa Kırmızı yer almıyorsa yeşil çıktı alıyoruz.
    if (checkdnsrr($reverse_ip . ".b.barracudacentral.org.", "A")) {
        echo '<span style="color: red">Barracuda</span><br/>';
    }else{
        echo '<span style="color: green">Barracuda</span><br/>';
    }

    //SORBS Sorguluyoruz. Eğer spam listesinde ip adresi yer alıyorsa Kırmızı yer almıyorsa yeşil çıktı alıyoruz.
    if (checkdnsrr($reverse_ip . ".dnsbl.sorbs.net.", "A")) {
        echo '<span style="color: red">SORBS</span><br/>';
    }else{
        echo '<span style="color: green">SORBS</span><br/>';
    }

    //SpamCop Sorguluyoruz. Eğer spam listesinde ip adresi yer alıyorsa Kırmızı yer almıyorsa yeşil çıktı alıyoruz.
    if (checkdnsrr($reverse_ip . ".bl.spamcop.net.", "A")) {
        echo '<span style="color: red">SpamCop </span><br/>';
    }else{
        echo '<span style="color: green">SpamCop</span><br/>';
    }

}

Yukarıdaki metod ve örnek kullanımına buraya tıklayarak Github hesabımdan ulaşabilirsiniz.

Not: İlk Github depomdur. Yanlışlık yaptıysam affola.

Yazar Hakkında

Burak Demir

Süleyman Demirel Üniversitesi Bilgisayar Mühendisliği öğrencisiyim. Yazılım, bilgi güvenliği, adli bilişim ve bir çok konuda meraklı !asosyal bir yazılımcı.