Snort IPS – IDS Windows ve Kali Linux Üzerinde Kurulumu ve Yapılandırılması
Snort dünyada en fazla tercih edilen açık kaynak kodlu IDS/IPS yazılımından biridir. Snort’u kişisel bilgisayarda kullanılabileceği gibi iyi yapılandırılması durumunda büyük yapılarda en az ticari rakipleri kadar başarılı olmaktadır. Snort’un kullanım amacı genelde IPS’ den ziyade IDS olarak kullanılmaktadır. Snortun kullanım amaçlarını aşağıdaki gibi sıralaya biliriz.
Sniffer
Packet Logger
Forensic Data Analysis tool
Network Intrusion Detection System
Snort’un iyi yapılandırılması durumunda ağınızı bir çok zararlı yazılımdan koruya bileceği gibi ağdaki sorununların kaynağının tespit edilmesinde de etkili olacaktır. Yapılandırma işleminden sonrada sürekli takip edilerek snort’un üretmiş olduğu uyarıların analizleri iyi yapılması ve analiz sonuçlarına göre yeni imzalar oluşturulmadır. Snortun iyi yapılandırılması için iyi derece TCP/IP bilgisine sahip olmak gerekmektedir.
Kurulumları Windows 7 ve Kali Linux 1.0.9a üzerinde gerçekleştireceğim.
Windows Ortamı için Kurulum ve Yapılandırma
İlk olarak https://www.snort.org adresinden “Snort_2_9_7_2_Installer.exe” ve “snortrules-snapshot-2972.tar.gz” indiriyoruz. Snort kurulumu için gerekli olan WinPcap (“WinPcap_4_1_3.exe”) programını http://www.winpcap.org/ adresinden indiriyoruz. WinPcap ağ analizi ve paket yakalama için açık kaynak kodlu bir kütüphane.
WinPcap 4.1.3 sürümünü kurmak için:
WinPcap_4_1_3.exe üzerine çift tıklayın
Gelen karşılama ekranını Next ile geçiyoruz.
WinPcap lisans sözleşmesini kabul ediyoruz.
Install ile kurulumu tamamlıyoruz.
Snort’un kurulumu için izlenecek adımlar:
İndirmiş olduğumuz Snort_2_9_7_2_Installer.exe üzerine çift tıklıyoruz.
Karşımıza gelen lisans anlaşmasını kabul ediyoruz.
Yüklenecek olan bileşenler ekranını “Next” ile geçiyoruz.
Snort’u kuracağımız dizini seçip “Next” ile ilerliyoruz. Ben kurulumu C:\Snort dizini altına gerçekleştireceğim.
“Close” ile Snort’un kurulumunu tamamlıyoruz.
Kurulum tamamlandıktan sonra “snortrules-snapshot-2972.tar.gz” şıkıştırılmış dosyanın içerisndeki kuralları ve config dosyalarını C:\Snort dizinine kopyalıyoruz.
Kali Lunix üzerinde Snort Kurulumu
Öncelikle Kali Linux’a ssh ile bağlanmak için ssh servisini start edip ip bilgisini kontrol ediyorum. Bu işlem için “service ssh start” ve “ifconfig” komutlarını kullanıyoruz.
Snort’un kurulumuna geçmeden Kali Linux’u güncelleme işlemini gerçekleştiriyoruz. Bu işlemi “apt-get update && apt-get upgrade && apt-get -y install dkms” komutu ile gerçekleştiriyoruz.
Snort’un kurulumunu için ilk önce snort ‘un veri toplama kütüphanesinin kurulumunu yapıyoruz. Eğer bu kütüphanein kurulumu snortdan önce gerçekleştirmezsek snort kurulumu sırasında aşağıdaki hata alırız.
Kurulumu gerçekleştirme“wget https://www.snort.org/downloads/snort/daq-2.0.4.tar.gz” komutu iledownload ediyoruz.
Download işleminden sonra “tar xvfz daq-2.0.4.tar.gz” komutu ile şıkıştırılmış dosyaları açıyoruz.
“cd daq-2.0.4” komutu ile şıkıştırılmış dosyaları açtığımız dizine giriyoruz.
“./configure; make; sudo make install” komutu ile daq kurulumunu gerçekleştiriyoruz.
Bir sonraki adım olarak snort 2.9.7.2 versiyonunu download edeceğiz. “wget https://www.snort.org/downloads/snort/snort-2.9.7.2.tar.gz”
“tar xvfz snort-2.9.7.2.tar.gz” komutu ile şıkıştırılmış dosyaları açıp. “cd snort-2.9.7.2” komutu ile şıkıştırılmış dosyaları açtığımız dizine giriş yapıyoruz.
Snort’un kurulumunu “./configure –enable-sourcefire; make; sudo make install” komutu ile gerçekleştiriyoruz.
Kurulum sonunda aşağıdaki gibi bir hata ile karşılaşa biliriz. Burada libpcap kütüphanesinin kurulu olmadığını belirtmekte.
Libpcap kütüphanesin kurulumu için ilk önce “wget http://www.tcpdump.org/release/libpcap-1.5.3.tar.gz” komutu ile download ediyoruz.
İndirdiğimiz şıkıştırılmış dosyayı “tar xvfvz libpcap-1.5.3.tar.gz” komutu ile açarak “cd libpcap-1.5.3” komutu ilede ilgili klasör içerisine giriyoruz.
Kurulum için sırasıyla “./configure” “make && make install” komutları çalıştırıyoruz.
Snort’un kurulumunda aşağıdaki gibi bir hata ile de karşılaşabiliriz.
Libdnet kurulumu için “wget https://libdnet.googlecode.com/files/libdnet-1.12.tgz” komutu ile download işlemini gerçekleştiriyoruz.
Download işleminden sonra” tar xvfvz libdnet-1.12.tgz” komutu ile şıkıştırılmış dosyarı açıp “cd libdnet-1.12” komutu ile şıkıştırılmış dosyaları açtığımız dizine giriyoruz.
Kurulumu sırasıyla “./configure “CFLAGS=-fPIC” “ , “make install” komutlarıyla tamamlıyoruz.
Libdnet kütüphanesinin kurulmu tamamladıktan sonra snort kurulumu yukarıda anlatıldığı gibi yeniden gerçekleştiriyoruz ve kurulum aşağıdaki gibi başarılı bir şekilde tamamlanıyor.
Kurulumu tamamladıktan sonra snort’un kurallarını “snortrules-snapshot-2962.tar.gz” www.snort.org sayfasından indirmemiz gerekmektedir. İndirmek için öncelikle kayıt olup sayfada oturum açmamız gerekmektedir.
İndirme işlemi tamamladıktan sonra “snortrules-snapshot-2972.tar.gz” şıkıştırılmış dosyanın içerisndeki kuralları ve config dosyalarını /root/snort-2.9.7.2 dizinine kopyalıyoruz. Şıkıştırılmış dosyayı açmak için Kali Linux üzerinde “tar –xvf snortrules-snapshot-2972.tar.gz” komutunu kullanıyoruz.
Snort.conf Dosyasının Yapılandırılması
Snort ile ilgili bütün konfigurasyon ayarlarını “snort.conf” dosyası üzerinden yapacağız. Snort.conf dosyası windows için “C:\Snort\etc” dizini içerisinde Kali Linux için kurulumu yaptığımız “/root/ snort-2.9.7.2/etc” içerisinde bulunmaktadır.Dosyanın yeri kurulum yaptığımız dizine göre değişiklik gösterecektir. Config dosyasında ilk olarak ağ ayarlarını yapılandıracağımız bölüm bulunmaktadır. Bu bölümün iyi yapılandırılması gerekmektedir. Ağ ayarlarının iyi yapılandırılması Snort’un performanslı çalışmasını ve az sayıda false-positive üretmesini sağlayacaktır.
Configurasyon dosyasında IP adresleri “ipvar”, portlar “portvar”, değişken ise “var” anahtar sözcüğü ile tanımlanmaktadır. Kendi iç network’ümüzü (koruma altına aldığımız network) “HOME_NET”, dış network’ü ise (saldırı beklenen network) “EXTERNAL_NET” olarak tanımlanmış durumda. Ayrıca korumaya altına alacağımız sunucular için gerekli değişkenler de burada tanımlanmıştır.
IP adreslerini tek başına veya liste olarak tanımlaya biliriz. Ağ adresleri için CIDR notasyonunu da kullana biliriz. Liste veya CIDR notasyonu kullandığımızda bu yapılandırmayı “[]” köşeli parantezler arasında ifade edeceğiz. Belirtiğimiz ağ adresisi içerisindeki bazı ip adreslerini kapsam dışında tutmak istersek “!” işareti ile belirtmemiz gerekmektedir. Örnek yazılım olarak :
ipvar HOME_NET [10.10.120.10, 192.168.2.0/24, ![192.168.2.100, 192.168.2.110] ]
Örnekte korumaya aldığımız iç network’ümüzü 10.10.120.10 ip adresinden ve 192.168.2.0/24 ağından oluştuğunu fakat 192.168.2.100, 192.168.2.110 iplerini iç network’ümüze dahil etmediğimiz belirtmiş olduk.
Ben HOME_NET’i dahil olduğum ip bloğu olarak belirtip. EXTERNAL_NET de bir sınırlamaya gitmeyerek any olarak bırakıyorum.
Bir sonraki adım olarak kuralların bulunduğu dizinin config dosyasına tanımlanması gerekmektedir. Configurasyon dosyasında “RULE_PATH”, “SO_RULE_PATH” ve “PREPROC_RULE_PATH” değişkenleri kuralların bulunduğu dizini göstermektedir.
Kuralları Windows için kurulum yaptığımız C:\Snort dizini altında gösteriyoruz. Kali Linux için /root/ snort-2.9.7.2/etc dizini gösteriyoruz.
Bir sonraki adım olarak white ve black listituttuğumuz dosyaları göstermek için “WHITE_LIST_PATH” ve “BLACK_LIST_PATH” değişkenlerin de düzenleme yapacağız. Configurasyon dosyasında “WHITE_LIST_PATH” ve “BLACK_LIST_PATH” değişkenleri için indirdiğim kurallar arasında hazır olarak “blacklist.rules” dosyası bulunmakta fakat whitelist.rules dosyası bulunmamaktadır.Bu dosyayı Windows için “C:\Snort\rules” dizini altında Kali Linux için “/root/ snort-2.9.7.2/etc” dizini altına bizim oluşturmamız gerekmektedir. Bu işlem için ilgili dizin altına “whitelist” adında boş txt dosyası oluşturup uzantısını .”rules” olarak değiştiriyoruz.
Bu işlemleri tamamladıktan sonra windows ortamı için configurasyon dosyasında değişleri aratıp önümde ki “/” işaretini “\” şeklinde değiştirmemiz gerekmektedir. Çünkü windows klasörler içindeki alt klasör veya dosyarı “\” işariti ile yolunu göstermekteyiz. Linux da ise “/” işareti ile.
Bir sonraki adım olarak Windows için dynamic libraries dll dosyalarını ve dizini configurasyon dosyasına göstereceğiz. Dll dosyaları “C:\Snort\lib\snort_dynamicpreprocessor” dizini altında bulunmaktadır. Düzenlemeyi configurasyon dosyasında “Step #4” altında yapmaktayız.
Kali Linux için /usr/lib/ snort_dynamicpreprocessor altında .so uzantısı ile bulunmaktadır.
Windows için Dynamicengine dll dosyasınıda yine aynı yerde gösteriyoruz. Dll dosyası “C:\Snort\lib\snort_dynamicengine” dizininde bulunmakta.
Kali Linux için /usr/lib/ snort_dynamicpreprocessor klasörü altında gösteriyoruz.
Bir sonraki adım olarak Windows için output ayarlarını yapacağız. Bu işlemleri Step #6’ ın altında gerçekleştireceğiz. Ben çıktıları tcpdump olarak “c:\Snort\log\tcpdump.log” olarak çıkması için düzenliyorum. Ayrıca aynı yerde bulunan “classification.config, reference.config” config dosyalarını yerini belirtiyoruz. Dosyalar C:\Snort\etc altında bulunmaktadır.
Kali Linux üzerinde output ayarları istenildiği gibi değiştirilebilir.
Configurasyon dosyasında yapıla bilcek başka bir ayar ise kuralların aktif/pasif yapılması olabilir. Kuralları pasif yapmak için başına “#” işareti koymamız gerekmekte. Aktif yapmak içinde işareti kaldırmamız gerekmekte. Aşağıdaki gibi
Snort’un Test Edilmesi
Windows için snort’u çalıştımak için komut satrından “cd C:\snort\bin” ile dizinine gidilir. C:\Snort\bin>snort –h ile yardım penceresi görüntülenir.
Makinemiz üzerindeki interfaceleri listelemek için “Snort –W” komutunu kullanıyoruz. Eğer makinemizin üzerinden birden fazla ethernet kartı olsaydı hepsi listelenecek ve index numarası üzerinde “-i” paremetresi ile isteğimiz interface’in trafiğini dinleye biliriz.
Örnek olarak “snort –v –i 1” ile snort’u verbose modunda çalıştırmış olduk.
Kali Lunix üzerinde snort’u “snort -vd” komutu ile çalıştırarak test ediyoruz.
Çıktı ekranı aşağıdaki gibidir.
Mevcut bir pcap dosyasını incelemek için “snort -c /etc/snort/snort.conf -r /Malware/20140905/20140905.pcap -A console -l snort_log > ~/snort_log/snort_pcap.log 2>&1” komutunu kullana biliriz.
Komutu çalıştırdığımızda root dizini altında oluşturduğumuz “snort_log” klasörüne snort_pcap.log dosyasının oluşturulmuş olduğunu görmekteyiz.
Snort hakkında daha fazla bilgi için https://www.snort.org/#documents adresini ziyaret edebilirsiniz.
Faydalı olması dileğiyle. Bir sonraki yazıda görüşmek üzere.