Karaliste oluşturmak
Önceki IP Karalistesi NASIL Sonraki
Karaliste oluşturmak
Karalisteler herhangi bir şekilde oluşturulabilir. Sonuçta, karaliste, sizin iletişim kurmak istemediğiniz bir IP numaraları listesinden ibarettir. Tabii gereksiz yere iletişim kurmayı reddetmek sizin zararınızadır, dolayısıyla karalistelerinizi sizin için uygun bir veri kümesini içerecek şekilde hazırlamalısınız.
Bu karaliste için kullanılacak veri kümesinini, ağa gereksiz portlardan ulaşmaya çalışıp erişimi engellenen, Türk dinamik IP bloklarından gelen IP adreslerinden oluşturmayı düşünüyorum. Tabii ki, böyle bir veri kümesi oluşturmak istememin bazı sebepleri var:
  1. Kolayca elde edebiliyorum, bir yerden başlamak lazım. Dolayısıyla karalisteye girmeye aday veri kümesini, ağa hizmet verilmeyen portlardan (örneğin Netbios portları) girmeye çalışan IP'lerden oluşturuyorum.
  2. Bir kullanıcı statik IP'li olabilir. Fakat eğer Netbios v.b. portundan iletişim kurmaya çalışıyor ise ya bilgisayarında virüs vardır ve spam yollamaya (kendi farkında olmaksızın) başlama ihtimali yüksektir ya da kötü niyetlidir.
  3. Bir kullanıcı tamamen dinamik IP'li olabilir. O zaman bir daha bağlandığı zaman o IP tamamen başka bir kullanıcıya verilecektir. Fakat ne ilk, ne de sonraki kullanıcının bu kadar dinamik bir düzende posta sunucusu çalıştırıp posta kabul etmesi mümkün değildir. Eğer posta sunucusu çalıştırmak istiyorlar ise, o zaman statik IP başvurusu yapmışlardır (ücretsiz). Eğer (çok uzak ihtimal), dinamik DNS metodları ile dinamik bloklar üzerinden bir posta sunucusu çalıştırıyorlar ise, çok daha az zahmet ile TTNET'e başvurup bir statik IP tahsis ettirebilirler. Dolayısıyla tamamen dinamik IP'lerden kaynaklanan posta, spam olacaktır.
Veri Kümesinin Oluşturulması
Bu örnek, birebir sizin için uygulanabilir olmayacaktır. Daha ziyade fikir vermesi amacı ile hazırlanmıştır. Donanım Zyxel ADSL router'dan oluşmaktadır. İlk önce bu donanımın günlüklerinin Linux makinası üzerinde tutulması için gereken ayarları yapacağız.
Ağa gereksiz portlardan erişmeye çalışıp erişimi engellenen IP adreslerini toplayacağım için güvenlik duvarı olarak kullandığım makinanın bana günlük kayıtlarını göndermesini sağlamalıyım. Günlük kayıtlarını Linux makinama local1 tanımı ile göndertiyorum. Bu durumda Linux makinamdaki /etc/syslog.conf dosyasına,
local1.*                        -/var/log/firewall.log
yazarak günlük kayıtlarının ayrı bir dosyada birikmesini sağlıyorum. Ayrıca, bu kayıtların bir de /var/log/messages dosyasına eklenmesini engellemek için,
*.=info;*.=notice;*.=warn;  -/var/log/messages
olan tanımı,
*.=info;*.=notice;*.=warn;local1.none  -/var/log/messages
haline getiriyorum.
Tabii bir de günlük dosyalarının sonsuz büyümesini engellemekte fayda var. /etc/logrotate.d dizinine firewall adında bir dosya koyarak firewall.log'un ne şekilde tutulacağını belirliyorum:
/var/log/firewall.log {
        weekly
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 root adm
}
Bu, haftada bir yeni bir günlük dosyası açıp 52 haftalık günlükleri diskte tutacaktır. Bu şekilde ham veri kümemizi firewall.log dosyalarından toplayabileceğiz.
Veri Kümesinin İşlenmesi
firewall.log dosyasından örnek satır:
Jan  8 01:53:53 192.168.1.1 RAS: src="81.213.17.202:4747"
dst="XXX.XXX.XX.XXX:445"
msg="Firewall default policy: TCP (W to W/PRESTIGE)"  note="ACCESS BLOCK"
devID="EF63AF"
cat="Access Control"
Yapacağım işlem, bu satırlardan IP adreslerini çıkartarak bu adreslerin Türk kökenli ve dinamik olduğunu kontrol etmek ve daha önce karalisteye alınmamış ise karalisteye almak.
/var/lib/rbldns/karaliste_ekle diye bir betik oluşturalım:
#!/bin/bash

grep "ACCESS BLOCK" /var/log/firewall.log.0 | \
awk '{ if ($6 ~ /^src.*/ ) { \
  srcip=$6; gsub(/src\=\"/,"",srcip); \
  gsub(/\:.*/,"",srcip); \
  gsub(/\"/,"",srcip); \
  split(srcip,A,/\./); \
  printf( \
          "%s\t%s.%s.%s.%s.tr.countries.nerd.dk\
          \t%s.%s.%s.%s.dul.dnsbl.sorbs.net\
          \t%s.%s.%s.%s.rbl.zzz\n",\
          srcip, \
          A[4], A[3], A[2], A[1], \
          A[4], A[3], A[2], A[1], \
          A[4], A[3], A[2], A[1]) }  }'   \
   | sort | uniq > /tmp/tmp.rbl

tarih=`date +%F`

while read srcip tr_test dul_test rbl_test
do
rbl_result=`dig +short $rbl_test`
if [[ $rbl_result != '127.0.0.2' ]] ; then
   tr_result=`dig +short $tr_test`
   if [[ -n $tr_result ]] ; then
      dul_result=`dig -p 530 $dul_test`
      if [[ -n $dul_result ]] ; then
         printf "%s :127.0.0.2: Izinsiz erisim yapan TR dinamik IP -- %s\n" \
                $srcip $tarih >> /var/lib/rbldns/rbl.zzz
      fi
   fi
fi
done < /tmp/tmp.rbl
rm -f /tmp/tmp.rbl
Bu betik, yukarıda örneğini verdiğim günlük kaydından IP adresini alıyor. Yukarıdaki örneğe uygular isek, srcip değişkeni 81.213.17.202 olacak. Daha sonra, IP kontrolünü yapabilmek için bu adresi A dizisine alıyor ve ters çevirerek /tmp/tmp.rbl dosyasına şu satırı ekliyor:
81.213.17.202 202.17.213.81.tr.countries.nerd.dk
¬ 202.17.213.81.dul.dnsbl.sorbs.net 202.17.213.81.rbl.zzz
Daha sonra, betik, /tmp/tmp.rbl dosyasını işleyerek bu karalisteleri kontrol ediyor ve eğer Türk kökenli ise, dinamik IP ise ve mevcut karalistede yok ise, karaliste dosyasına ekliyor.
Her hafta firewall.log döndürülürken karalisteye ekleme yapılması makul olur. /etc/logrotate.d/firewall dosyasını aşağıdaki şekilde değiştirelim:
/var/log/firewall.log {
        weekly
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 root adm
        sharedscripts
        postrotate
                /var/lib/rbldns/karaliste_ekle
        endscript
}
Internet'ten rbl.zzz Dosyasının Temini
Eğer bu şekilde oluşturulan karalistenin sizin için faydalı olacağını düşünürseniz,
$ rsync -az --delete rsync.belgeler.org::rblzzz/rbl.zzz.gz .
komutu ile alabilirsiniz.
Önceki Üst Ana Başlık Sonraki
Kendi karalistenizi kullanmak Başlangıç Sonuç
Bir Linux Kitaplığı Sayfası