Snort 2.8.0.1 kurulum.

Feb 15th, 2008

Snort kurulumu son zamanlarda olabildiğince kolaylaştı. Gerçi pekçok yazılım için aynı şeyi söylemek mümkün. Kurulumdan önce yüklenmesi gereken bazı uygulamalar olmaktadır. Bunları genelde debian türevleri için “aptitute install” komutu ile yükleyebilmekteyiz.

Snort uygulamasını kullanmak istiyorsak snort.org sitesine üye olmakta fayda var. Çok elzem olmasa da yararları olduğunu belirtmek isterim. Özellikle kural listesini edinirken işinize yarayacaktır.

Son sürüm snort’u sitesinden edinelim.

$ wget http://www.snort.org/dl/current/snort-2.8.0.1.tar.gz
$ wget http://www.snort.org/dl/current/snort-2.8.0.1.tar.gz.md5
$ md5sum -c  snort-2.8.0.1.tar.gz.md5
snort-2.8.0.1.tar.gz: Tamam
$ tar zxf snort-2.8.0.1.tar.gz
$ cd snort-2.8.0.1
$ configure --prefix=/usr/local/snort-2.8.0.1 \
	--enable-decoder-preprocessor-rules
..
..
$ make
$ make install

Kurulum bu kadar basit. Bundan sonra kural listelerini çekmek ve ayarlar dosyalarını oluşturmak gerekmektedir. Snort 2.8 serisi ile gelen güzel özellikler var. Mesela IPv6 desteği, yeni birleştirici (stream5), dinamik kural ekleme vb.

IPv6 desteği olmasına rağmen pekçok modülü şu anda IPv6 desteğine sahip değil bu yüzden bu desteği eklemek mantıklı olmuyor. Tabii, denemeler için böyle bir destek var.

Stream5 ise daha önceki versiyonlarının yerine (stream4) geliyor. Daha başarılı olduğu belirtiliyor. Artık beta değil. Rahatlıkla kullanılabilir. UDP trafiğini de izlemek mümkün. Gerçi bu track (izleme) işi yeni olduğundan henüz kurallarda yok ama yakında başlar.

Diğer yeniliklerden biri ise “dinamik preprocessor” ekipmanları. FTP, TELNET, DNS, SMTP izleyebiliyor. Yenileri de gelmeye başladı.

Gelelim ayarlar dosyalarına. İlk önce snort sitesinden kuralları indirmemiz gerekmektedir. Snort 3 yönteme izin veriyor.

  1. Subscribers: Gerçek zamanlı güncellenen kural listesine sahip olabiliyor. (Paralı)
  2. Registered: Subscription kural listesine girdikten 30 gün sonra edinilebilen kurallar listesi. Bunun için ücretsiz kayıt yapmanız gerekiyor.
  3. Unregistered: Bu da her yeni ana dağıtımda çıkan kural listesi. Güncellenmiyor ama yararlı.
  4. Belki 4. olarakda Community kural listesi sayılabilir. Bunun da çok güncellendiği söylenemez. Nedeni herhalde snort’un lisansını değiştirmesi olabilir. Daha çok Bleeding/Emerging Edge kural listesi olarak karşımıza çıkıyor.

Ben registered kural listesini sitesinden indiriyorum. Bunun için OINK kodumu kullanıyorum. Bu konuda belki sonra yazarım.

Kural listeleri ana süremlere göre faklılık göstermektedir. Current olarak geçen sürüm CVS sürümüdür ve muhtemelen hiçbir zaman ihtiyacınız olmayacaktır.

Burada iki farklı kural listesi var. Birincisi klasik kural listesi rules dizini altında, diğeri ise yeni nesil kural listesi ki so_rules dizini altında bulunmaktadır. İlk listeyi ekleyince hemen çalışır. İkinci liste için ise önceden bir dizi işlem yapılması gerekmektedir.

$ wget http://www.snort.org/pub-bin/oinkmaster.cgi/0f8a74xyzb4cxyzdbfecb4932cxyzd798xyz2d3d/snortrules-snapshot-2.8.tar.gz
$ tar zxf  snortrules-snapshot-2.8.tar.gz
$ mv etc /usr/local/snort-2.8.0.1/
$ mv rules /usr/local/snort-2.8.0.1/
$ mv so_rules /usr/src/snort-2.8.0.1/
$ cd /usr/src/snort-2.8.0.1/so_rules/src/
$ vi Makefile

Burada

	BASEDIR=../../
	INSTALLDIR=/usr/local/snort-2.8.0.1/lib/snort_dynamicrules/

olmalıdır. Orijinal dosyada bu satırlar farklıdır ve kurulumda sorun çıkarmaktadır. Tabii burada önceden derlenmiş olan versiyonlarını da kullanabilirsiniz. Tekrar derlemeyi tercih etmek her zaman için iyidir.

$ make
$ make install
$ cat *.rules >> /usr/local/snort-2.8.0.1/rules/so-rules.rules
$ rm /usr/local/snort-2.8.0.1/lib/snort_dynamicrules/lib_sfdynamic_example_rule.*

Bu silme işlemini snort’u çalıştırdığımızda hata mesajı vermesin diye yaptık.

$ cd /usr/local/snort-2.8.0.1/etc
$ vi snort.conf

Burada sadece bir iki tanıtım yapacağım. Onun dışında snort.conf dosyası hakkında istek gelirse birşeyler yazmaya çalışırım.

var HOME_NET [10.0.0.0/24,192.168.1.0/25]
var EXTERNAL_NET !$HOME_NET
..
..
var RULE_PATH ../rules
..
..
dynamicpreprocessor file /usr/local/snort-2.8.0.1/lib/snort_dynamicpreprocessor/libsf_dcerpc_preproc.so
dynamicpreprocessor file /usr/local/snort-2.8.0.1/lib/snort_dynamicpreprocessor/libsf_dns_preproc.so
dynamicpreprocessor file /usr/local/snort-2.8.0.1/lib/snort_dynamicpreprocessor/libsf_ftptelnet_preproc.so
dynamicpreprocessor file /usr/local/snort-2.8.0.1/lib/snort_dynamicpreprocessor/libsf_smtp_preproc.so

Bence SSH’ı yüklemeyin.

#dynamicpreprocessor file /usr/local/snort-2.8.0.1/lib/snort_dynamicpreprocessor/libsf_ssh_preproc.so
dynamicengine /usr/local/snort-2.8.0.1/lib/snort_dynamicengine/libsf_engine.so

Daha önce derlediğimiz tüm dinamik kuralları yükler.

dynamicdetection directory /usr/local/snort-2.8.0.1/lib/snort_dynamicrules/

Log konusu ilginçtir. Sizin için uygun olanını seçin. Unified log şekli yeterince hızlıdır.

output alert_unified: filename snort.alert, limit 128
output log_unified: filename snort.log, limit 128

Kural dizininden de istediğinizi ekleyebilirsiniz. Baş taraftaki # işaretini kaldırmanız yeterli.
Biz burada derlediğimiz dinamik kuralları ekleyeceğiz.

include $RULE_PATH/so-rules.rules

Son olarak da preprocessor ve decoder kural listesini eklemeyi görelim. Bu kural listesi ana dağıtım kütüğü içerisinde bulunmaktadır.

$ cp /usr/src/snort-2.8.0.1/preproc_rules/decoder.rules /usr/local/snort-2.8.0.1/rules/
$ cp /usr/src/snort-2.8.0.1/preproc_rules/preprocessor.rules /usr/local/snort-2.8.0.1/rules/
$ vi snort.conf

Kural listesi kısmına şu satırları ekleyelim.

include $RULE_PATH/preprocessor.rules
include $RULE_PATH/decoder.rules

Son olarak da denememizi yapalım.

$ snort -v -T snort.conf
. .
. .
[ Port Based Pattern Matching Memory ]
+-[AC-BNFA Search Info Summary]------------------------------
| Instances        : 974
| Patterns         : 405178
| Pattern Chars    : 4034448
| Num States       : 2489289
| Num Match States : 447000
| Memory           :   60.31Mbytes
|   Patterns       :   11.57M
|   Match Lists    :   19.44M
|   Transitions    :   29.21M
+-------------------------------------------------

        --== Initialization Complete ==--

   ,,_     -*> Snort! <*-
  o"  )~   Version 2.8.0.1 (Build 72)
   ''''    By Martin Roesch & The Snort Team: http://www.snort.org/team.html
           (C) Copyright 1998-2007 Sourcefire Inc., et al.
           Using PCRE version: 4.5 01-December-2003

           Rules Engine: SF_SNORT_DETECTION_ENGINE  Version 1.6  <Build 11>
           Rules Object: bad-traffic  Version 1.0  <Build 1>
           Rules Object: nntp  Version 1.0  <Build 1>
           Rules Object: netbios  Version 1.0  <Build 1>
           Rules Object: p2p  Version 1.0  <Build 1>
           Rules Object: web-client  Version 1.0  <Build 1>
           Rules Object: dos  Version 1.0  <Build 1>
           Rules Object: misc  Version 1.0  <Build 1>
           Rules Object: exploit  Version 1.0  <Build 1>
           Rules Object: smtp  Version 1.0  <Build 1>
           Preprocessor Object: SF_SSH  Version 1.0  <Build 1>
           Preprocessor Object: SF_SMTP  Version 1.0  <Build 7>
           Preprocessor Object: SF_FTPTELNET  Version 1.0  <Build 10>
           Preprocessor Object: SF_DNS  Version 1.0  <Build 2>
           Preprocessor Object: SF_DCERPC  Version 1.0  <Build 4>

Snort sucessfully loaded all rules and checked all rule chains!
Snort exiting

Şimdi herşey çalışıyor. Tam olarak çalıştırmak için ise;

$ snort -i eth0 -c snort.conf

Hayırlı olsun.

Tags:
  1. msurucu
    Jul 5th, 2008 at 23:33
    Reply | Quote | #1

    İlgilenenler için snortsam plugini de oldukça faydalı olabilir. IDS modda çalışan snort ile desteklenen güvenlik duvarları ve router üzerinden istediğiniz kurallara uyan ip leri engelleyebiliyorsunuz.