Bir Ağ Güvenlik Aracı Olarak SNORT
 
 İçindekiler
 Yeni Bir İşletim Sistemi  Kurmadan Önce  İzlenmesi Gereken  Adımlar
 Basit Çözümler, Daha  Fazla Güvenlik
 Bir Ağ Güvenlik Aracı  Olarak SNORT
 NFC Nedir?
 Web Servislerinde  Single-Sign-On ile  Yetkilendirme
 İçerik Yönetim Sistemi  (İYS) Nedir?
 ODTÜ BBS  Kapsamındaki Veri  Sözlüğü Çalışmaları
 CISN Arşiv
 Geribildirim
 
     
 

Bu yazı, ağ güvenliği araçlarından Snort ile ilgili yazılmış başlangıç seviyesinde bir yazıdır. Yazıda orta düzeyde teknik detaylara girilecek ve genel olarak bu yazılımın ne amaçla kullanıldığına dair bilgi verilecektir.

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 ./log

    komutu 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.conf

    ile ç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.

ODTÜ'de Snort'un kullanımı:

ODTÜ Bilgi İşlem Daire Başkanlığı Ağ Grubu, 2002 yılından bu yana yerleşke dışı trafikte zararlı/şüpheli trafiği tespit etmek için Snort yazılımını kullanmaktadır. Snort, ODTÜ'de NIDS olarak çalışmaktadır.


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/

Suna Yılmaz

 
     
  - BAŞA DÖN -