İletişim

Bir Ağ Güvenlik Aracı Olarak SNORT

Snort, 1998 yılında Martin Roesch tarafından geliştirilmiş bir ağ sızma tespit/engelleme sistemidir. (NIDS / NIPS – Network Intrusion Detection System/Network Intrusion Prevension System). GNU lisansı ile dağıtılan, açık kaynak kodlu ve ücretsiz bir yazılım olan Snort, şu anda Martin Roesch’un kurduğu Sourcefire firması tarafından geliştirilmektedir. Bu yazının yazıldığı tarih itibari ile (Ocak 2013) yazılımın mevcut en son sürümü 2.9.4‘dir. Yazılım, çeşitli Linux dağıtımları, Windows ve MAC gibi pek çok işletim sistemi üzerinde çalıştırılabilmektedir. Snort yazılımını temel alarak grafik arayüz desteği ile çalışacak şekilde geliştirilen bağımsız şirket yazılımları da mevcuttur. Bu yazılımlar yönetim, raporlama, günlükleme (loglama) gibi işlevleri yerine getirmektedir.

 

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:

  1. 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şeklinde çalıştırılabilir; bu şekilde sadece TCP paket başlık bilgilerini ekrana basar.
  2. Paket Günlükleme modu (packet logger): paketleri diske yazar. Komut satırında./snort -dev -l ./logkomutu ile çalıştırılabilir. Burada TCP paket başlık ile birlikte paket bilgilerini de kaydeder ve /log dizinine günlükler.
  3. 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.confile çalıştırıldığında snort temel bir NIDS olarak çalışır ve snort.conf dosyasındaki kural seti uyarınca işlem yapar. Eğer snort “inline” modda çalıştırılırsa (./snort -Q) snort IPS olarak davranır ve drop paket düşürme (drop) kurallarını da devreye alır.

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ı 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:

  1. Pass (Geçir): Paketi basit bir şekilde geçirilir
  2. Log (Günlükle): Günlükleme rutini kullanıcı tarafından ne tanımlandı ise tam paket olarak kaydedilir.
  3. Alert (Alarm): Kullanıcı tarafından belirlenen metotla bir olay bildirisi yaratır ve tüm paketi günlükler.
  4. Activate (Etkinleştir): Alarm ver ve ardından başka bir dinamik kuralı etkinleştirir.
  5. Dynamic (Dinamik): Bir etkinleştir kuralı etkinleştirinceye kadar boşta kalır, sonra günlükle olarak çalışır.
  6. Drop (Düşür): Paketi düşür ve günlükler.
  7. Reject (Reddet): Paketi engeller, günlükler, protokol TCP ise TCP yeniden başlat (TCP reset)ya da ICMP port erişilemez mesajı yollar.
  8. Sdrop (Günlüklemeden Düşür): Paketi düşürür ve günlüklemez.

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.

Örnek bir Snort kuralı:

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!”;)

Örnek kuralımızı detaylı olarak inceleyelim:

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.

 

Kaynaklar:

  1. http://en.wikipedia.org/wiki/Snort_%28software%29
  2. www.snort.org (yazılım resmi web sayfası)
  3. Lightweight Intrusion Detection for Networks – Martin Roesch
  4. Snort User Manual – 2.9.3 (www.snort.org)

İlgili linkler:

  1. Sguil web sitesi http://sguil.sourceforge.net/
  2. BASE web sitesi http://base.secureideas.net/
  3. Snorby web sitesi https://snorby.org/
  4. Aanval web sitesi http://www.aanval.com/

Bir Ağ Güvenlik Aracı Olarak SNORT
Etiketlendi:         

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir