“Bilgi Güvenliği Olayları Görselleştirmesi” yazı disizinin bu son bölümünde SELKS (Suricata IDPS, Elasticsearch, Logstash, Kibana ve Scirius) ile görselleştirmeden bahsediyoruz. Görselleştirmeye geçmeden önce SELKS’in üzerinde çalıştığı beş bileşeni anlatıp, ardından görselleştirme üzerinde duracağız.
UYARI: Bu yazı ve yazı dizisinin tamamı bir teknik proje halinde bir yüksek lisans programında zaten sunulmuştur. Ayrıca yine bu proje başka bir tezin içeriğini de oluşturmuştur. Bu yüzden bu yazıların ve içindeki herhangi bir bilginin izinsiz alınması, kopyalanması, çoğaltılması ve/veya başka herhangi bir ortamda farklı bir kişi tarafından yazılmış gibi yayınlanması ve kullanılması kesinlikle yasaktır.
SELKS (Suricata IDPS, Elasticsearch, Logstash, Kibana ve Scirius) ile GÖRSELLEŞTİRME
Günümüzde açık kaynak sistemler için en yaygın olarak kullanılan yöntemlerden birisi, birden çok açık kaynak ürünün entegre edilerek belirli bir amaca özel Linux dağıtım sistemleri oluşturmaktır. Bu amaç ile oluşturulan SELKS [1], Linux kullanılan bileşenlerin baş harflerinin alınması ile oluşturulmuştur. Suricata IDPS [2], Elasticsearch [3], Logstash [4], Kibana [5], Scirius [6] ürünlerinin her biri ayrı ayrı özelliklere sahip ürünlerdir.
Suricata IDPS
OISF (Open Information Security Foundation) topluluğu tarafında geliştirilen Suricata IDPS ürünü GPL lisansı ile dağıtılan bir açık kaynak kod olarak geliştirilmiş bir saldırı tespit ve engelleme uygulamasıdır. Endüstri standardı haline gelen Snort gibi imza/kural bazlı çalışmaktadır. Ayrıca Snort’a ait kural setini de desteklemektedir. Suricata’nın en çok göze çarpan özelliği ise ürünün multi-thread çalışmasıdır. Suricata, başlangıçta verilecek olan parametrelere göre çalışma yapısını belirtmektedir. Paketin işlenmesinde en çok tercih edilen “pcap device” olarak tanımlamadır. Yani yapılacak herhangi bir saldırı esnasında paketin yakalanması, çözümleme ve tespit mekanizmasından geçirilmesidir. Ayrıca bu ürünü saldırı engelleme moduna alınabilir (IPS).
Resim-1: Suricata Çalışma Mimarisi [2, 7]
Suricata modülleri şu şekildedir [2, 7]:
- Paket Yakalama Modülü (Capture Module): Gelen paketin Suricata’ya iletilmesi ile görevlidir. Ayrıca alınan paketi başka veri bağı çözümleyiciler için de uygun hale getirir.
- Paket Çözümleme Modülü (Decoding Module): Bu modülde paketin belleğe alınıp Suricata’nın desteklediği yapıya dönüştürülmesi için kullanılır. Bu alanda ayrıca paket veri sınıflarına uygun şekilde sınıflandırılıp, uygun çözümleyicilerde işlenir.
- Akış İşlemleri Modülü (Stream Module): Bu modülde birkaç işlemi beraber yapmaktadır. Anlaşılır bir ağ bağlantısı için akış takibi yapar. TCP bağlantılarında ana akışın tekrarlanması için paketleri sıraya koyar. Uygulama (Application) katmanı denetimi yapar (HTTP).
- Tespit Modülü (Detect Module): Konfigürasyonda belirtilen tüm kuralların yüklenmesi, tespit eklentilerinin başlatılması ve paketlerin gruplanarak kurallarla eşleştirilmesi gibi önemli işlerden sorumludur. Kuralları kendi içerisinde gruplandırır.
ElasticSearch
Apache Lucene altyapısı kullanılarak geliştirilen ElasticSearch ürünü, hızlı ve kolay kurulum özelliklerine sahiptir. Açık kaynak kodlu ve ücretsiz olan ElasticSearch, esnek, ölçeklendirilebilir bir arama motorudur. ElasticSearch, birçok işletim sistemi üzerinde ve bütün tarayıcılar ile çalışabilir, Java tabanlıdır ve ResetfulAPI üzerinden hizmet verir. 3. parti görselleri ve güvenlik seçenekleri hızlı ve gelişmiştir. Suricata loglarını çok hızlı bir şekilde indeksleme yapabilir. Ayrıca cluster desteği olması ona artı bir değer katmaktadır. Temel olarak Suricata üzerinden gelen alarmlar Elasticsearch üzerinde daha sonra analiz edilmek üzere depolanmaktadır. [4, 6, 8]
Logstash
Olay ve kayıt yönetim yazılımı olan Logstash ayrıca kayıtların toplanması, ayrıştırılması ve saklanması işlemlerini yapabilen Java tabanlı bir üründür. 165 adet API desteği bulunmaktadır. Bu özelliği ile ücretsiz oluşu onu fazlasıyla cazip kılmaktadır. API desteği ve ürünü kullanan kullanıcılar tarafından geliştirilebilmesi ayrı bir katkı sağlamakta ve toplanan, saklanan bilgi arasında filtreleme yapılabilmektedir. Oluşturulan mimaride Logstash, Suricata tarafından üretilen JSON tipindeki ham verinin sorgulanarak analiz edilebilmesine olanak sağlamak amacı ile uygun formata çevirip, Elasticsearch’e yazılmasını sağlamaktadır. Bu şekilde Logstash üzerinden ayrıştırılarak düzenlenmiş veri analiz edilmek üzere düzgün bir formata kavuşmaktadır. [4, 6, 8]
Kibana
Kibana esnek yapısı olan Elasticsearch ile çalışmak için tasarlanmış bir arayüzdür. Elasticsearch’ün güçlü arama ve analitik yeteneklerini kullanır. Alınan verileri görselleştirmede grafikler, histogramlar ve haritalar kullanır. Elasticsearch dışında 3. parti desteği bulunmaktadır. Kibana, kullanacağımız mimaride Suricata tarafından üretilen ve Logstash tarafından formatlanarak Elasticsearch’de depolanan verinin analiz edilerek görselleştirilmesine olanak sağlayan katmandır. Bir web arabirimi üzerinden erişilen Kibana ile Elasticsearch’de indexlenmiş her tür veri sorgulanabilir ve elde edilen sonuçlar grafiksel olarak yine web arabirimi panelleri üzerinden görüntülenebilmekedir. [4, 6, 8]
Scirius
Django ile yazılmış olan Scirius, Suricata IDS sistemi yönetimi için kullanılan bir web arayüzüdür. Suricata’nın kullanmış olduğu imzaları ve bu imzaların bulunduğu dosyaları günceller. [4, 6, 8]
SELKS İLE GÖRSELLEŞTİRME
SELKS Linux dağıtımının bileşenlerini ayrı ayrı kullanılmakla beraber bu bileşenleri entegre edip, çıktılarını görselleştirmektedir. Kullanılacak bileşenler ayrı ayrı olarak başka ürünler ile çalışmaktadır. Örneğin Suricata yerine Snort kullanılabilir. Ya da Logstash uygulaması başka alanlarda da kullanılabilir.
“Suricata –c /etc/suricata/suricata.yml –r inan_isci.pcap” komutu ile pcap dosyalarını suricata ile analizi manuel yaptığımızda süreç başlatılmış olur. Bu süreçte ilk olarak baktığımız, pcap dosyası yada oluşan trafiğin Suricata tarafından yorumlanıp mevcut kural setlerinden geçilerek yapılan atağın imzası ile kaydedilmesidir.
Kibana ile görselleştirilen ekranlar oldukça gelişmiş ve geniş bir sunuma sahiptirler. Aynı ekranda sadece atağın zaman grafiğine bakılabildiği gibi başka özellikleri de ön plana çıkartılabilmektedir. Gelen paketlerin Suricata imza seti, yakalanan paketin içerisinde hangi portlarda işlem yapıldığı, yapılan alan adı istekleri, alan adları gibi geniş bir bilginin görselleştirilmesi söz konusudur. Bu sayılan işlemler istenirse tek tek ekranlar halinde olacağı gibi istenirse hepsi bir arada da yapılabilmektedir.
Resim-2: Kibana Ekran Görüntüsü (Pie, Signature)
Ayrıca paketin içerisinde bulunan GeoIP bilgileri sayesinde işlemleri bir harita üzerinden görselleştirmemize yaramaktadır. GeoIP özelliği, IP adresinin mevcutta kullanılan veritabanlarındaki coğrafi konumunu belirlemeye ülke, şehir ve ISP gibi bilgilere yapar. Bu işlem için uygulama içerisindeki API kullanılmaktadır. Aşağıda bir örnek gösterilmiştir.
Resim-3: Örnek GEOIP Bilgisi ve Çalıştırdığı HTML Kodu
Bilindiği gibi bir ağ trafiği alındığında, aslında birçok bilgi de beraberinde alınmış olur. Ağ trafiği alındığında, daha özet bir trafik bilgisi alınabildiği gibi bütün ağ trafiğini süzmeden de alınabilmektedir. Bu şekilde analiz etmemiz gereken trafiğin parametreleri değişiklik gösterebilmektedir. Örneğin yapılan bir saldırının, hangi porttan ve hangi IP’den hangi IP adresine yapıldığı ya da flow id, GeoIP gibi bilgiler birçok ipucu vermektedir. Bu bilgilere kolayca ulaşabilmek ve bu bilgiler ışında sorgu yapmak, birçok işlemin daha hızlı ve esnek yapılmasını sağlamaktadır. Kurulacak görselleştirme mimarisinde bu bilgilere de ulaşılması önemlidir.
Resim-4: Kibana Sorgu Ekran Görüntüsü
Birçok açık kaynaklı IDPS ürününün kural setlerinin sürekli güncellenmesi ve bu güncellemelerinin aktif olması gerekmektedir. Burada anlatılan mimaride ise Scirius ile bu işi hızlı ve anlaşılır yapmak mümkündür.
Resim-5: Sicirius ile kural seti takibi
Referanslar
- https://github.com/StamusNetworks/SELKS
- http://suricata-ids.org/
- https://www.elastic.co/products/elasticsearch
- https://www.elastic.co/products/logstash
- https://www.elastic.co/products/kibana
- https://github.com/StamusNetworks/Scirius
- https://www.bilgiguvenligi.gov.tr/saldiri-tespit-sistemleri/saldiri-tespit-sistemleri-snort-suricata-bro.html
- http://elasticsearchturkiye.com/elasticsearch-nedir/
— YAZI DİZİSİ SONU —