Showing posts with label Saldırı Tespit Sistemi. Show all posts
Showing posts with label Saldırı Tespit Sistemi. Show all posts

Wednesday, January 13, 2016

Suricata'da IP İtibar (IP Reputation) Ayarlarının Yapılması

Suricata saldırı tespit/engelleme sistemi IP kara listesinde (IP blacklist) olan IP adreslerinden ya da bu IP adreslerine doğru olan trafiği de yakalayabilmektedir. Saldırı engelleme modunda kurulu ise bu trafiği engelleyebilmekte, saldırı tespit modunda ise bu trafikle ilgili alarm üretebilmektedir.
Bu yazıda, bunun için Suricata'da yapılması gereken ayarlardan bahsetmeye çalışacağım.
Suricata'nın yapılandırma (konfigürasyon) dosyası olan suricata.yaml dosyası içerisinde "IP reputation" bölümü bulunmaktadır. Bu bölümün altını değiştirerek Suricata'da IP itibar ayarları yapılmaktadır. Suricata'nın örnek bir "IP Reputation" bölümü aşağıdaki gibidir:
#IP Reputation
 reputation-categories-file: /etc/suricata/iprep/categories.txt
 default-reputation-path: /etc/suricata/iprep
 reputation-files:
  - reputation.list
IP itibar ayarı yaparken ilk önce kara listeye dahil edilecek IP adreslerinin bir sınıflandırmaya tabi tutulması gerekiyor. Bu sınıflandırmanın yer aldığı dosyanın varsayılan (default) ismi /etc/suricata/prep/ dizininde bulunan categories.txt dosyasıdır. (Dosya isimleri ya da dosya yol'u tabii ki farklı olabilir. Burada varsayılan isimler kullanılmıştır.)
categories.txt isimli dosyanın formatı aşağıdaki gibi bir CSV dosyasıdır:
root@suricata:/etc/suricata/iprep$cat categories.txt
1,HACK,Hack Siteleri
2,MP3,MP3 Siteleri
3,SPYWARE,Spyware Listesi
categories.txt dosyasının içeriğindeki satırlar "üç" bölümden oluşmaktadır:
, ,
Sınıfladırmaya öncelikle bir numara vermek durumunudayız: . Bu numara 1 ile 60 arasında olmak zorundadır. Yani IP itibar listemizde en fazla 60 kategori olabilmektedir.
Sınıflandırmaya kısa bir de isim veriyoruz: . Bu isimlerin bire bir aynısı, iprep.rules dosyasına saldırı kuralı (attacking rule) yazarken kullanılmaktadır.
Sınıflandırma için bir de açıklama yazıyoruz:
Sınıflandırma dosyasının yol'unu da suricata.yaml yapılandırma dosyası içerisinde reputation-categories-file: /etc/suricata/iprep/categories.txt şeklinde belirtiyoruz.
IP itibar ayarlarının yapıldığı dizini de yine suricata.yaml yapılandırma dosyası içerisinde belirriyoruz: default-reputation-path: /etc/suricata/iprep
Sınıflandırma dosyasının içeriğini doldurduktan sonra hangi IP adreslerinin engelleneceğini ya da hangi IP adreslerine karşı alarm üretileceğini belirlememiz gerekiyor. Bu listeyi de default-reputation-path: /etc/suricata/iprep dizinine reputation.list dosyası adıyla koyuyoruz. Bu dizinin altında birden fazla liste olabilir. badhosts.listzararli_ip.listmalware.list gibi.
reputation.list ya da benzeri dosyaların içeriği aşağıdaki gibidir:
root@suricata:/etc/suricata/iprep$cat reputation.list
63.71.76.111,1,100
66.28.56.113,1,100
210.60.141.1,1,100
24.215.5.116,1,100
83.149.65.117,1,100
85.17.73.137,2,50
216.74.109.140,2,50
64.239.80.146,2,50
198.65.238.151,2,50
195.144.11.157,3,125
abidancegubidance.com,3,125
abeedeekgubeedeek.com,3,125

reputation.list dosyası da categories.txt dosyası gibi yine bir CSV dosyasıdır ve üç alandan oluşmuştur:
, ,
Kara listemizde olan IP numarasını (216.74.109.140) ya da alan ismini (abidancegubidance.com) ilk bölüme yazıyoruz.
Daha sonra bu IP numarasının ya da alan adının sınıflandırma numarasını belirtiyoruz. Bu numara 1 ile 127 arasında olmak durumundadır.
Son alana da bu IP numarasının ya da alan adının skor değerini yazıyoruz.
Kara listedeki IP adreslerine (IP blacklist) ya da alan isimlerine birçok internet sitesinden erişilebilmekte ve bu kara listede yer alan IP adresleri/alan isimleri indirilebilmektedir. Bunlardan paralı olanlar olduğu gibi ücretsiz olanlar da mevcuttur. Bu kara listenin bir örneğine https://sslbl.abuse.ch/blacklist/ adresinden erişilebilir.
Buraya kadar categories.txt ve reputation.list dosyalarının içeriklerini belirledik. Bu dosyalar, bu halleriyle bir şey ifade etmezler. Bu dosyalar için kural(lar) yazmamız gerekmektedir. IP itibar (IP Reputation) kurallarını herhangi bir Suricata kuralı içerisine yazarsak da çalışacaktır. Fakat IP itibar kurallarını /etc/suricata/rules/iprep.rules altına yazmayı tercih ettik. Aşağıda örnek bir iprep.rules lural dosyası bulunmaktadır. (Aşağıdaki imzalar deneme amaçlı oluşturuldukları için kurallarda tutarsızlıklar olabilir.)
alert tcp any any -> any any (msg:"BU NASIL BIR TRAFIK YA? COK AYIP BU!"; iprep:any,SPYWARE,=,125;)
alert tcp any any -> any any (msg:"AHAN DA DUTDUM SENI!";iprep:dst,SPYWARE,=,125;)
alert tcp any any -> any any (msg:"HACKINGAM PALACE"; iprep:any,HACK,=,100; sid:10005; rev:1;)
alert tcp any any -> any any (msg:"HACKLEME BENI HACKLERIM SENI"; iprep:src,HACK,=,100; sid:10006; rev:1;)
alert tcp any any -> any any (msg:"NE SALDIRIYDI BE!"; iprep:dst,MP3,=,50; sid:10007; rev:1;)
alert tcp any any -> any any (msg:"YETTI GARI"; iprep:both,MP3,<,100; sid:10008; rev:1;)
Şimdi bu kural seti içerisindeki bazı satırları inceleyelim:
alert tcp any any -> any any (msg:"HACKINGAM PALACE"; iprep:any,HACK,=,100; sid:10005; rev:1;)
IP itibarı (IP Reputation) için Suricata saldırı imzasının (kuralının) içerisine iprep parametresini eklememiz gerekiyor. iprep parametresi dört alandan oluşmaktadır:
<any/src/dst/both>: Trafiğin kaynağı belirtilmektedir. Buradaki örnekte kaynak ya da hedef IP kısmında kara listedeki bir IP adresi görülürse alarm üretilmektedir.
HACK: Burada yazan ifade categories.txt dosyası içerisindeki ikinci alanın aynısı olmak zorundadır. (1,HACK,Hack Siteleri) Buradaki kural için bir sınıflandırma belirtmiş oluyoruz bu şekilde.
=,<,>: Burada reputation.list dosyasının üçüncü alanındaki değerle bir kıyaslama yapılmaktadır. (83.149.65.117,1,100) Buradaki örnekte sınıflandırma numarası "1" olan IP adresleri için geçerli bir kural vardır. Sınıflandırma numarası "1" olan IP adresinin "score" değeri de "100" olarak verilmiştir. Bu kurala denk gelen bir trafik olduğu zaman da kurada yer alan tırnak içerisindeki uyarıyı vermektedir. (HACKINGAM PALACE)
categories.txt
1,HACK,Hack Siteleri
reputation.list
83.149.65.117,1,100
Suricata kuralı
alert tcp any any -> any any (msg:"HACKINGAM PALACE"; iprep:any,HACK,=,127; sid:10005; rev:1;)
Konuyu özetleyen bir resmi de aşağıya ekliyorum:

Thursday, January 7, 2016

Suricata'nın Saldırı Trafiği Haricindeki Kayıtları Tutma(ma)sı

Suricata, beta sürümü ilk defa 2009 yılının Aralık ayında ve ilk kararlı sürümünün de 2010 yılının Temmuz ayında piyasaya sürülmüş olan açık kayaklı bir saldırı tespit/engelleme sistemi yazılımıdır. (http://suricata-ids.org) Suricata, OISF (Open Information Security Foundation) adlı bir sivil toplum kuruluşu tarafından geliştirilmiştir. (http://oisf.net)

Bu yazımızda Suricata'nın özelliklerine değinmeyeceğiz. Bu yazımızda değineceğimiz hususu aşağıya yazmaya çalıştım.

Suricata, -diğer tüm saldırı tespit sistemleri gibi- ağa gelip giden tüm trafiği dinleyecek şekilde ağ topolojisi üzerinde konumlandırılır. Saldırı tespit sistemleri, dinledikleri ağ trafiği içerisinde kendi saldırı imza veri tabanlarına (signatures) karşılık gelen trafikleri alarm (alert) oluşturacak şekilde bir kayıt (log) dosyasına yazarlar. Yani saldırıları kayıt (log) altına alırlar.
Suricata, dinlediği ağ trafiği içerisinde saldırı veri tabanıyla eşleşmeyen trafiği -yani saldırı haricindeki trafiği- de bir kayt (log) dosyasına yazabilir. Yani ağa gelip giden tüm trafiği dinliyor ve sizin seçmiş olduğunuz protokole göre bu trafiği de kayıt (log) altına alabiliyor. Örneğin herhangi bir saldırı örüntüsü içermeyen; SSH (TCP 22), HTTP (TCP 80), NTP (UDP 123), SMTP (TCP 25),... gibi trafikleri de kayıt altına alabilmektedir. Suricata bu kayıtları "json" kayıt formatında tutabilmektedir. Bu kayıt dosyasının varsayılan (default) ismi “eve.log”dur. (/var/log/suricata/eve.log)
Saldırı olmayan trafiğin kayıtlarını (log) tutmak istemiyorsak Suricata'nın yapılandırma (konfigürasyon) dosyası olan suricata.yaml dosyasının içeriğinde değişiklik yapmamız gerekmektedir. suricata.yaml dosyası içerisinde "app-layer" başlığı altındaki parametreler, saldırı örüntüsü içermeyen ağ trafiğinin dinlenmesini sağlamaktadır.
Aşağıda örnek bir suricata.yaml dosyasının "app-layer" başlığı altındaki bazı parametre değerleri gösterilmektedir. Aşağıdaki örnekte Suricata saldırı tespit sisteminin sadece SMB trafiğini eve.json isimli kayıt (log) dosyasına kaydetmesi sağlanmıştır. Bunun haricinde kalan hiçbir trafik kayıt (log) dosyasına kaydedilmemektedir. Sadece imza veri tabaındaki saldırılara karşılık gelen saldırı kayıtları (log) ve SMB trafiği kayıt (log) altına alınmaktadır.
**********
app-layer altında yapılan değişiklikler aşağıda açıklanmıştır:
  
-app-layer:
--protocols:
---tls:
----enabled: no (HTTPS trafiğinin kaydı engellenmiştir.)
----detection-ports:
-----dp: 443
---dcerpc:
----enabled: no (DCE/RPC trafiğinin kaydı engellenmiştir.)
---ftp:
----enabled: no (FTP trafiğinin kaydı engellenmiştir.)
---ssh:
----enabled: no (SSH trafiğinin kaydı engellenmiştir.)
---smtp:
----enabled: no (SMTP trafiğinin kaydı engellenmiştir.)
---imap:
----enabled: no (IMAP trafiğinin kaydı engellenmiştir.)
---msn:
----enabled: no (MSN trafiğinin kaydı engellenmiştir.)
---smb:
----enabled: yes (SMB trafiğinin kaydına izin verilmiştir.)
----detection-ports:
-----dp: 139
**********
Suricata ile ilgili olarak şimdilik bu kadar. Yukarıda yazdığım özelliği bulmak biraz vaktimi aldığı için çözümü paylaşmak istedim.