Snort Nedir? Ne İşe Yarar?
Snort, 1998 yılında Martin Roesch tarafından kurulan açık kaynaklı bir IDS /IPS sistemidir. Dünyadaki en fazla kullanılan IDS/IPS sistemi olan snort SourceFire şirketi üzerinden geliştirilmektedir. Cisco 2013 de SourceFire’ı satın alarak kendi sistemleriyle entegre etmiştir. Snort genel olarak kötü amaçlı saldırılara karşı esnek koruma sağlamak için imza, protokol ve anomali tabanlı denetim sağlar. Snort, saldırı tespitini ağ paketlerini inceleyerek IP ağları üzerinde gerçek zamanlı trafik analizi sağlamaktadır. Snort’un bir ağ üzerindeki olayları gözlemleyebilmek için ağ üzerinde iletilen tüm paketleri gözlemlemesi gereklidir. Ancak yüksek hacimli bir trafiği izlemeye uygun değildir.
Snort2 ve Snort3 versiyonları bulunmaktadır. İki versiyon arasında büyük fark vardır. Aşağıdaki maddeler snort3 için uygulanmıştır;
Mümkün olan en iyi performansı elde etmek için, TCP taşıma katmanı protokolünün işlenmesi tamamen yeniden yazılmıştır. CPU’nuzun birden fazla çekirdeği varsa, donanımı en iyi şekilde kullanmak için ölçeklendirme yeteneği çok daha basittir. İki soket arasında köprü oluşturma ve bir inceleme gerçekleştirme gibi ham bir yükü işleme yeteneği vardır. Çoklu paket işleme iş parçacığı desteği, bu Snort’un özellikle RAM açısından daha az kaynak tüketmesine izin verir.
Snort Kullanım Modları
Snort 3 ayrı modda çalışmaktadır. Bunlar ise, paket izleyici modu, paket günlükleme modu ve ağ sızma tespit sistemi modudur.
Paket izleyici modu: gelen paketler okunarak TCP paket başlığı bilgisi yazılmaktadır.
Paket günlükleme veya diğer bir deyişle loglama modu: Gelen paketlerin TCP paket başlığının yanı sıra diğer paket bilgilerini de dizine kaydeder.
Ağ sızma tespit sistemi modu: Temel olarak gelen trafik analiz edilmekte ve gelen paketlere karşı belirli kurallar ile karşılık verilmektedir.
Snort kuralları, yazması basit ve de zararlı faaliyetlerin tespiti konusunda oldukça başarılıdır. Mantıksal olarak kural başlığı ve kural opsiyonları olarak 2 ye ayrılmaktadır. Kural opsiyonunda 8 temel kural eylemi belirtilmektedir. Şimdi kısaca bunlara değinelim.
Alert (Alarm): Kullanıcı tarafından belirlenen kurallara uyan paketleri belirleyerek o paketler için uyarı vermektedir.
Pass (Geçir): Paketleri önemsemeyerek basit bir şekilde geçirilmesini sağlar.
Log (Günlükleme): Alert de olduğu gibi kurallara uyan paketleri alır ancak uyarı vermez. Sadece log olarak kaydeder.
Activate (Etkinleştir): İlk olarak Alarm vererek sonrasında başka bir kuralı etkinleştirmektedir.
Dynamic (Dinamik): Active den gelen kuralı bekler, active edilince de kuralları uygular.
Drop (Düşür): Paketin düşürülerek log olarak kaydedilmesi sağlar.
Reject (Reddet) : Paketi engelleyerek log kaydı almaktadır.
Sdrop (Günlüklerden Düşür): Paketin düşürür ancak log kaydı almamaktadır.
Bu kurallar yazılırken TCP,UDP,ICMP,IP protokollerinin belirtilmiş olmasına dikkat edilmesi gerekmektedir.
Snort ve Bileşenleri
Snort, açık kaynak ağ tabanlı bir IDS’tir. 4.000.000’dan fazla indirme ve yaklaşık olarak 500.000 kayıtlı kullanıcı sayısı ile en fazla tercih edilen saldırı tespit sistemidir. Gerçek zamanlı ağ trafik analizi ve paket loglaması yapabilir. Ağdan dinlediği paketlerde protokol ve içerik analizi yaparak saldırıları tespit eder. Buffer overflow, port tarama, CGI saldırı gibi hareketleri tespit edebilir.
Kod çözücü: Ara yüzünden çeşitli tiplerdeki paketleri alır ve bir sonraki snort bileşeni için hazırlar.
Ön işlemci: Detection Engine’ den önce paketleri ona hazırlar ve paket başlıklarındaki anormalliklere göre saldırı belirlemeye çalışır. Preprocessor genellikle parça parça gelen büyük veri parçalarını bir araya getirmek için çalışır.
Tespit motoru: Snort’un en önemli bileşenlerinden birisidir. Paket içindeki saldırı türlerini belirlemekten sorumludur. Bu saldırıları tespit etme noktasında da snort kurallarını kullanmaktadır. Snort kurallarında belirtilmiş bir saldırı işareti ile preprocessor bileşeninden gelen paket içeriği karşılaştırılır ve tehlikeli bir durum varsa kural başlığında yer alan eylem gerçekleştirilmek için bir sonraki modüle geçilir.
Loglama ve Alarm üretimi: Detection engine bileşeni paket içeriğinin hangi kural ile örtüştüğünü tespit etikten sonra kural başlığında belirtilen eyleme göre loglama, uyarı verme gibi işlemler yapar. Loglar tcpdump veya daha başka bir dosya formatında basit bir yazı dosyasına kaydedilebilir. Snortun çalışması için verilen komutta -l parametresi ile loglama yapılacak dizin de belirtilebilir.
Snortun Çalışma Şekilleri
Snort şu üç faklı şekilde çalışması için yapılandırılabilir:
- Paket İzleme Modu (Packet Sniffing): Ağdan almış olduğu paketleri olduğu gibi tcpdump formatında konsol ekranında gösterir. Bunun için komut olarak “snort -v ” kullanılır.
- Paket Günlükleme Modu (Packet Logger): Ağdan almış olduğu paketleri belirtilmişş olan dizine kaydeder. Bunun için “snort -dev -l /var/log/snort” komutu kullanılır ve paketler belirtilen dizine kaydedilir.
- Ağ Sızma Tespit/Engelleme Sistemi Modu (NIDS/NIPS): Snortun en karmaşık modudur. Snort ağı dinlerken daha önceden belirlenmiş kuralları da uygular. “snort -dev -l ./log -h 192.168.1.0/24 -c snort.conf ” komutu ile snort.conf dosyasında belirtilen kurallara göre işlem yapar.
Snort İle Kullanılan Eklentiler
BARNYARD: Snort’ un ağ dinlerken tuttuğu kayıtların belirli bir şablon dahilinde veri tabanına yazılmasını sağlar
ADODB: Veri tabanı ile BASE arasındaki bağlantıyı sağlar.
BASE: Barnyard’ın veri tabanına yazdığı snort kayıtlarını, bir web ara yüzünden daha anlaşılır şekilde grafiksel tablolar ile kullanıcıya sunulmasını sağlar.
OINKMASTER: Snort kurallarını düzenlemek için hazırlanmış kullanıcıların işini kolaylaştıran bir araçtır.
PULLEDPORK: Snort kuralları güncellendiği zaman sistemimizdeki snort kurallarını da güncelleyen kullanıcıların işini kolaylaştıran bir araçtır.
SNORTSAM: Güvenlik duvarında otomatik olarak IP engellemesi yapılmasını sağlayan bir snort eklentisidir.
ACID: Saldırı tespit sistemleri tarafından veri tabanına yazılmış verileri alıp işleyip bir web ara yüzünde kullanıcıya sunmayı sağlayan bir PHP tabanlı analiz aracıdır.
SNORBY: Güvenlik durumunu izlemeyi sağlayan ruby on rails ile geliştirilmiş bir web uygulamasıdır. Populer IDS’ler ile beraber çalışabilir.