spacer.png, 0 kB
Bilgi için: bilgi at bilgiguvenligi gov tr   

 

spacer.png, 0 kB
spacer.png, 0 kB
Yazarın bu bölümdeki diğer yazıları...
Snort OpenAppID İle Uygulama Farkındalığı Yazdır E-posta
Ömer ERDEM, TÜBİTAK BİLGEM SGE   
27.10.2014

Snort açık kaynak kodlu, GNU lisansı ile dağıtılan ve Sourcefire firması tarafından geliştirilen saldırı tespit ve önleme sistemidir. Firma 7 Ekim 2013 tarihinde 2,7 milyar dolara piyasadaki en büyük ağ teknoloji şirketlerinden biri olan Cisco bünyesine katılmıştır [1]. Snort stream5, http, ftp_telnet, smtp vb. gibi yakalanan paketlerin kurallarla karşılaştırılmasına hazır hale getirilmesini sağlayan birçok paket ön işleyicisi (preprocessor) bulundurmaktadır [2]. Geçtiğimiz aylarda Cisco Snort'un ağ üzerindeki uygulama seviyesinde farkındalığını sağlayan yeni ön işleyicisi OpenAppID'yi duyurmuştur. Bu yazıda OpenAppID'nin kurulum, konfigürasyon ve kullanımına değinilecektir.

1. OpenAppID Nedir? 

OpenAppID ağ üzerindeki, protokoller, istemci tabanlı sunucu uygulamaları ve web uygulamalarının tespiti, kontrolü, değerlendirilmesini sağlar. Dropbox, ebuddy, farmville, facebook, twitter, websense, chrome vb. 1500'ün üzerinde uygulamayı işleyebilir. Tespit işlemi herbir uygulama için LUA dili kullanılarak geliştirilen betikler sayesinde olmaktadır. LUA ile birlikte kullanıcılar istedikleri spesifik uygulama için kendi betiklerini yazabilir, paylaşabilir. Aslında bir anlamda her kullanıcının kendi açık kaynak kodlu "Next-Generation Firewall"'unu geliştirmesine olanak sağlamaktadır [3]. Ayrıca kural yazımı için sunulan yeni "appid" anahtar sözcüğü sayesinde uygulamalar için normal IDS/IPS kurallarında geçerli olan "alert, block, pass" işlemleri gerçekleştirilebilir.

OpenAppID ilk olarak Snort 2.9.7.0 Alpha sürümüyle duyurulmuştur. Son olarak 23.10.14 tarihinde yayınlanan Snort 2.9.7.0 ile birlikte ilk defa kararlı bir sürümde yer almıştır.

2. Kurulum

Bu yazı için hazırlanan test ortamında Ubuntu Server 14.04 (x64), Snort 2.9.7.0, DAQ 2.0.4 (Data AcQuisition library) ve OpenAppID kullanılmıştır. İlk olarak Snort ve OpenAppID için gerekli bileşenler sisteme yüklenir.

Snort;

apt-get -y install libpcre3 libpcre3-dbg libpcre3-dev \
libdnet libdnet-dev libdumbnet-dev libssl1.0.0 libssl-dev \
libpcap-dev pkg-config bison flex

OpenAppID;

apt-get -y install libluajit-5.1-2 libluajit-5.1-common libluajit-5.1-dev luajit

Gerekli uygulamalar Snort web sitesinden indirildikten sonra arşivden çıkarılarak hazır hale getirilir. İlgili dizinlere geçilerek derleme ve kurulum işlemleri yapılır. Bu işlemler için sistemde derleme işlemi için gerekli araçların (make vb.) kurulu olduğu varsayılmaktadır. Snort kurulumu için;

wget https://www.snort.org/downloads/snort/snort-2.9.7.0.tar.gz
wget https://www.snort.org/downloads/snort/daq-2.0.4.tar.gz
wget https://www.snort.org/downloads/openappid/833 -O snort-openappid.tar.gz

tar -xvzf daq-2.0.4.tar.gz
cd daq-2.0.4
./configure && make && sudo make install

tar -xvzf snort-2.9.7.0.tar.gz
cd snort-2.9.7.0/

./configure \
--sysconfdir=/etc \
--prefix=/usr/local/snort \
--with-dnet-includes=/usr/lib \
--with-dnet-libraries=/usr/include \
--enable-open-appid
make
sudo make install
ldconfig

adımları uygulanır. Ardından gerekli dizin oluşturma ve kopyalama işlemleri yapılıp, OpenAppID Snort'a eklenir.

mkdir -p /etc/snort/rules
mkdir /var/log/snort
mkdir /usr/local/snort/lib/snort_dynamicrules
touch /etc/snort/rules/white_list.rules
touch /etc/snort/rules/black_list.rules

cd snort-2.9.7.0/etc
cp classification.config gen-msg.map reference.config snort.conf threshold.conf unicode.map /etc/snort/
tar -xzf snort-openappid.tar.gz -C /usr/local/snort 

 "/usr/local/snort" dizini altında odp isimli bir dizin oluşmuştur. Bu dizin altındaki bazı önemli dizin ve dosyalar şunlardır;

  • appMapping.data: Uygulamalar için metadata'ları tutar. Dosyanın ikinci kolonu uygulama isimlerini gösterirken yedinci kolon kurallarda kullanılabilecek isimleri göstermektedir (Şekil 1). 
  • libs: Uygulamaların tespitini sağlayan, LUA dilinde geliştirilmiş kütüphaneleri bulunduran dizindir.
  • lua: Uygulamaların tespiti için geliştirilmiş LUA betiklerinin bulunduğu dizindir.
  • ports: Uygulamaların port tabanlı tespiti için gerekli YAML formatındaki dosyaların bulunduğu dizindir.

 sekil_1.png

 Şekil 1 OpenAppID ile tespit edilebilen bazı uygulamalar

 3. Konfigürasyon ve Kullanım

Kurulum işleminden sonra "/etc/snort/snort.conf" dosyasında çeşitli değişiklikler yapılacaktır. İlk olarak çeşitli kural, dosya yolları Şekil 2 ve Şekil3' de gösterildiği gibi değiştirilmelidir.

sekil_2_1.png 

Şekil 2 Snort konfigürasyonunda değiştirilecek kural dizin yolları 

 sekil_2.png

Şekil 3 Snort konfigürasyonunda değiştirilecek çeşitli dosya yolları

Bu işlemden sonra OpenAppID ön işleyicisi ile ilgili konfigürasyon "reputation" ön işleyicisinin hemen altına eklenmelidir.

 sekil_3.png

Şekil 4 OpenAppID ön işleyicisinin aktifleştirilmesi

Ön işleyicinin çalışması sonrası oluşacak çıktılar da konfigürasyon dosyasının "output plugins" bölümünde belirtilmelidir.

 sekil_4.png

Şekil 5 Snort'un çalışması sonrası oluşacak kayıtların yapılandırılması

Snort kuralları isteğe bağlı olarak indirilip uygun dizinlere atılarak ayarları düzenlenebilir. Bu konu için gerekli olmadığından snort.conf dosyasındaki kural satırları (ör: include $RULE_PATH/local.rules) hata alınmasını önlemek amacıyla başına "#" işareti konularak etkisizleştirilmelidir. Son olarak dosya içerisinde "config checksum_mode: all" değeri "config checksum_mode: none" olarak değiştirilmelidir.

 /usr/local/snort/bin/snort -c /etc/snort/snort.conf -T

komutu ile konfigürasyon dosyasının doğruluğu test edilerek

/usr/local/snort/bin/snort -c /etc/snort/snort.conf -i eth0

komutu ile Snort'un çalışması sağlanabilir. Belli bir süre sonra eth0 arayüzüne gelen trafiğe göre "/var/log/snort" dizininde şu dosyalar oluşacaktır:

  • snort.log.XXX: IDS alarmlarının tutulduğu binary formatındaki dosyadır. Okunabilmesi için "/usr/local/snort/bin" dizinindeki u2spewfoo uygulaması kullanılabilir.
  • alert.fast: IDS alarmlarının metin formatında tutulduğu dosyadır. 
  • appstats-u2.log.XXX: OpenAppID ön işleyicisi tarafından üretilen kayıtların tutulduğu binary formatındaki dosyadır. Okunabilmesi için "/usr/local/snort/bin" dizinindeki u2openappid uygulaması kullanılabilir.

Uygulamaların tespiti sonrası için herhangi bir kural yazılmadığından dolayı "snort.log.XXX" ve "alert.fast" dosyaları boş gelecektir. appstats-u2.log.XXX dosyası incelendiğinde tespit edilen uygulamalar, gelen giden veri miktarları görülebilmektedir (Şekil 6).

 sekil_5.png

Şekil 6 OpenAppID ile tespit edilen bazı uygulamalara ait kayıtlar

Çeşitli kurallar yazılarak tespit edilen bu uygulamalar üzerinde "alert", ağ üzerinde konumlandırılmasına göre "block ve pass" işlemleri yapılabilir. Örnek kurallar şu şekildedir; 

alert tcp any any -> any any (msg:"OpenAppID: Use of social media"; appid: twitter facebook linkedin; sid:5000001; rev:1)

alert tcp any any -> any any (msg:"OpenAppID: Use of dropbox"; appid: dropbox; sid:5000002; rev:1)

alert tcp any any -> any any (msg:"OpenAppID: Use of torrent"; appid: bt torrent_tracker torrentz extratorrent utorrent bittorrent_sync; sid:5000004; rev:1)

"appid" anahtar sözcüğünden sonra 10 adete kadar uygulama ismi sıralanabilir. Bu isimler boşluk ya da virgül karakteriyle birbirinden ayrılmalıdır [4]. Kurallar bir dosyaya yazılmalı, "/etc/snort/rules" dizinine kaydedilmeli ve normal bir kural dosyası gibi snort konfigürasyon dosyasında belirtilmelidir. Gerekli ayarlar yapılıp Snort yeniden başlatıldıktan sonra log dizininde alert.fast dosyasına normal IDS alarmı gibi log'ların düştüğü gözlemlenecektir.

08/21-16:08:28.106323  [**] [1:5000002:1] OpenAppID: Use of dropbox [**] [Priority: 0] {TCP} xxx.xxx.163.106:80 -> xxx.xxx.2.34:61808

08/21-16:08:32.891152  [**] [1:5000004:1] OpenAppID: Use of torrent [**] [Priority: 0] {TCP} xxx.xxx.7.36:59490 -> xxx.xxx.58.172:80

08/21-16:54:16.929316  [**] [1:5000003:1] OpenAppID: Use of mail [**] [Priority: 0] {TCP} xxx.xxx.5.12:30853 -> xxx.xxx.172.28:80

snort.log.XXX dosyası ise u2spewfoo aracı ile okunduğunda yakalanan olay ile ilgili detaylı bilgi ve paket içeriği görülebilecektir (Şekil 7).

sekil_6.png

Şekil 7 Yazılan kurallara göre oluşan olaylar

4. Sonuç

Bu yazıda Snort saldırı tespit ve önleme sisteminin yeni ön işleyicisi olan OpenAppID'ye değinilmiştir. Kullanıcıların spesifik uygulamalar için kendi tespit betiklerini yazabilmesine olanak veren OpenAppID, özellikle uygulama tabanlı tehditlere karşı hızlı bir biçimde önlem almayı sağlaması ve uygulama katmanı güvenliğini açık kaynak kodlu yazılım gücüyle desteklemesi açısından önemlidir. 

Kaynaklar 

[1] Cisco Banks On Sourcefire And Snort For Its Security Future

[2] Saldırı Tespit Sistemleri (Snort, Suricata, Bro)

[3] Cisco Announces OpenAppID – the Next Open Source ‘Game Changer’ in Cybersecurity

[4] Snort 2.9.7.0 Alpha with OpenAppID, a quick introduction to getting started


Favori olarak ekle (0) | Görüntüleme sayısı: 7220

Bu yazıya ilk yorumu yazın

Sadece kayıtlı kullanıcılar yorum yazabilir.
Lütfen sisteme giriş yapın veya kayıt olun.

 
spacer.png, 0 kB
spacer.png, 0 kB
Copyright 2017 TÜBİTAK-BİLGEM. Sitenin teknik altyapısında Joomla kullanılmıştır. Yazar ve site referans gösterilmeden alıntı yapılamaz. Görüşleriniz
spacer.png, 0 kB