Snort'un mimarisi performans, basitlik ve esnekliğe dayalıdır. Snort IP ağları üzerinde gerçek zamanlı trafik analizi ve paket loglaması yapabilen bir yazılımdır. Yazılım protokol analizi, içerik tarama/eşleme yapabildiği gibi, arabellek taşması, port taraması, CGI saldırısı, işletim sistemi parmakizi denemesi gibi pek çok saldırı ve zararlı/şüpheli yazılım çeşidini tespit edebilmektedir. Snort üzerinden geçen trafiği tanımlamak için kullanıcı tarafından da tanımlanabilen esnek kural dilini kullanır; bunun yanı sıra modüler takma-program (plug-in) mimarisini kullanan tespit motoru da bulunmaktadır. Snort'un gerçek zamanlı alarm mekanizması vardır. Bu mekanizma Windows istemcilerine WinPopup pencereleri çıkarabilir, Linux türevlerinde alarm mekanizmalarını syslog'a dahil edebilir, ya da özelleştirilmiş günlük dosyasında alarmları biriktirebilir.
Snort mimarisinin 3 temel bileşeni vardır: paket çözücü, tespit motoru ve günlükleme/alarm altsistemi. Snort temel olarak uygulama seviyesine kadar tüm katmanlardaki veriye bakar ve bu veri içerisinden belirli trafiği toplar; kullanıcı ya da geliştirici tarafından tanımlanabilen kural setlerini uygulayarak bulduklarını değerlendirir.
Snort temelde 3 ayrı modda çalışabilecek şekilde yapılandırılabilir:
Paket İzleyici modu (packet sniffer): Bu mod tcpdump paket izleyici programı gibi basit bir şekilde ağdan paketleri okuyup sürekli bir şekilde konsola akıttığı moddur. Konut satırında
- ./snort -v
Paket Günlükleme modu (packet logger): paketleri diske yazar. Komut satırında
- ./snort -dev -l ./log
Ağ Sızma Tespit/Engelleme Sistemi modu (NIDS/NIPS): Snort'un en karmaşık ve yapılandırılabilir modudur. Snort bu modda temel olarak trafiği analiz edip kullanıcı tarafından tanımlanabilen bir kural seti ile gördüklerine karşı çeşitli eylemler gerçekleştirebilir. Örneğin komut satırında
- ./snort -dev -l ./log -h 192.168.1.0/24 -c snort.conf
Kuralları Yazmak
Snort kuralları basit bir şekilde yazılabilmesine rağmen zararlı/şüpheli trafiği tespit etmede oldukça başarılıdır.
Snort kuralları basit bir şekilde yazılabilmesine rağmen zararlı/şüpheli trafiği tespit etmede oldukça başarılıdır.
Snort kuralları mantıksal olarak iki kısma ayrılmaktadır: kural başlığı ve kural opsiyonları. Kural başlığı kural eylemini, protokolü, kaynak IP adresi, hedef IP adresi, alt ağ maskeleri ile kaynak ve hedef port bilgilerini içerir. Kural opsiyonu ise kural eylemi takınılacaksa paketin hangi kısımlarının inceleneceğini belirler. Kural eylemi 8 şekilde olabilir:
- Pass (Geçir): Paketi basit bir şekilde geçirilir
- Log (Günlükle): Günlükleme rutini kullanıcı tarafından ne tanımlandı ise tam paket olarak kaydedilir.
- Alert (Alarm): Kullanıcı tarafından belirlenen metotla bir olay bildirisi yaratır ve tüm paketi günlükler.
- Activate (Etkinleştir): Alarm ver ve ardından başka bir dinamik kuralı etkinleştirir.
- Dynamic (Dinamik): Bir etkinleştir kuralı etkinleştirinceye kadar boşta kalır, sonra günlükle olarak çalışır.
- Drop (Düşür): Paketi düşür ve günlükler.
- Reject (Reddet): Paketi engeller, günlükler, protokol TCP ise TCP yeniden başlat (TCP reset)ya da ICMP port erişilemez mesajı yollar.
- Sdrop (Günlüklemeden Düşür): Paketi düşürür ve günlüklemez.
Aşağıda örnek olarak bir alarm kuralı gösterilmiştir:
- alert tcp any any ? 10.1.1.5 80 (content: "cgi-bin/phf" ; msg "PHF probe!";)
- alert - kural eylemi: alarm ver
- tcp - protokol
- any - kaynak IP, herhangi bir IP adresinden
- any - kaynak port, herhangi bir porttan
- 10.1.1.5 - hedef IP adresi
- 80 - hedef port
- content: -"cgi-bin/phf" - mesaj içeriğinde "cgi-bin/phf" var ise
- msg "PHF probe!" - PHF probe! Alarmı ver.Kural setleri periyodik olarak Snort geliştirici grup tarafından Snort resmi web sitesinden yayınlandığı gibi, kurallar kullanıcılar tarafından da oluşturulabilmektedir.
Snort Kurulumu
Snort kurulumunu gerçekleştirmeden önce Snort'un düzgün çalışması için bir takım paketlerin kurulması gereklidir.
- # apt-get update
- # apt-get install -y build-essential
- # apt-get install -y libpcap-dev libpcre3-dev libdumbnet-dev
- # apt-get install -y bison flex
- # apt-get install -y zlib1g-dev
komutları ile gerekli kurulumları gerçekleştirelim.
- # wget https://www.snort.org/downloads/snort/daq-2.0.6.tar.gz
komutu ile Snort'un kullandığı ağ kütüphanesi olan Daq kütüphanesini indirelim.
- # tar -xvzf daq-2.0.6.tar.gz
- # cd daq-2.0.6
- # ./configure
- # make
- # make install
komutları ile Daq kütüphanesini kuralım.
- # wget https://www.snort.org/downloads/snort/snort-2.9.7.6.tar.gz
komutu ile Snort'u indirelim.
- # cd ..
- # tar -xvzf snort-2.9.7.6.tar.gz
- # cd snort-2.9.7.6
- # ./configure --enable-sourcefire
- # make
- # make install
komutları ile Snort'u kuralım.
Not! Snort'un en güncel sürümü için https://www.snort.org/ sitesini ziyaret edebilirsiniz.
No comments:
Post a Comment