Elasticsearch, Logstash, Kibana, Beats (Elastic stack) nedir?

Giriş

BT sistemlerinden çeşitli sebeplerle log toplama ve arama ihtiyacımız doğar. Örneğin bir alışveriş sitesinde kullanıcı davranışlarını loglamak (müşteriler hangi tarayıcılarla, hangi ülkelerden geliyorlar, hangi ürünleri geziyorlar vb.) bu amaçlardan birisi olabileceği gibi, Windows+Linux hibrit bir ortamdaki sistemlerden (kullanıcı yada sunucu) yada IPS/IDS/WAF/NAC/Firewall/Proxy/DHCP/DNS vb. gibi sistemlerden de güvenlik yada regülasyon amaçlı log toplamak isteyebiliriz.

SIEM?

Bilindik ticari SIEM ürünlerinden farklı olarak Elastic ailesi tanım itibariyle aslında bir SIEM değildir fakat bu onu SIEM olarak da kullanamayacağınız anlamında gelmez. Hatta ve hatta geri-planında bir arama ve indeksleme motoru çalıştığından yaptığı/yapacağı sorgular çoğu SIEM'den daha hızlı sonuçlar getirecek, üstüne üstük ÜCRETSİZ (donanım ve bakım masrafları hariç) olması onu çoğu SIEM'den daha avantajlı bile kılacaktır. Bakım masraflarının ürün masrafını aşmayacağı ideal bir işyerinden bahsediyorsak tabii. Zira open-source ürünlerde ne yaptığını bilen insan kaynağına/desteğe sahip olmak önemlidir. Eğer ekibiniz sınırlı kaynaklarla çalışıyorsa bunları da göze almanız önemli. Bu konu özellikle 'detection content' diyebileceğimiz, aldığınız loglarla saldırıları ve anormallikleri hangi kurallarla/nasıl tespit edeceğimiz konusunda önemli. Yine keza log parsing ve anlamlandırma noktasında da -her ne kadar
açık kaynaklar mevcutsa da- emek gerekiyor. Zira ticari SIEM'lerin neredeyse hepsi beraberinde pek çok hazır kural ve parser da getirir. Elastic Stack kurduğunuzda ise elinizdeki sadece bir loglama platformudur. Onun diğer SIEM'leri aşan teknik avantajlarını gerçek bir SIEM'e dönüştürme işi size kalmıştır.

İşin gerçek zamanlı korelasyon konusunda hala tartışmalar olduğundan o kısma fazla girmeyeceğim ama şahsi görüşüm esnek log zenginleştirme imkanı ve lisans parasını düşünmeden sistemi ölçekleyebilme/esnetebilme imkanının EN AZ gerçek zamanlı korelasyon kadar önemli olduğu yönünde. Bu ilk kısımda Elastic ailesi fazla rakip kabul etmiyor. Ve günün sonunda 'endpoint is the new perimeter' denilen bir zamanda binlerce Windows client'tan ticari bir SIEM'e doğrudan log alabilmek bir yürek işidir :) Burada pek çok hibrit model de konuşulabilir fakat bu apayrı bir yazının konusu.

Elastic

Bu yazıda Elastic ailesinin (eski adıyla ELK stack) temel bileşenlerinden bahsedilecektir. Serinin devamında ise kurulum ve analiz konuları detaylandırılacaktır.

Elastic Stack, açık kaynak kodlu log toplama, arama ve analiz bileşenlerinin tamamına verilen genel addır. Kabaca aşağıdaki bileşenlerden oluşur;

  • Elasticsearch
  • Kibana
  • Logstash
  • Beats ailesi
    • Winlogbeat
    • Filebeat
    • Packetbeat

Şimdi bu bilenşenleri hızlıca özetlemeye çalışalım.

Elasticsearch

Elasticsearch esasında bir arama ve veri indeksleme motorudur. Geriplanında, Apache Lucene projesini kullanır. Bunu bir veritabanı olarak düşünebilirsiniz. Verileri Logtash yada doğrudan Beats agent'ları üzerinden alarak onları aranabilir halde indeksler. Ve REST ve JSON teknolojilerini kullanarak HTTP protokolü üzerinden veri üzerinde arama, ekleme, silme vb. operasyonları yapmanızı sağlar. En büyük avantajlarından birisi esnekliği ve bu sebeple sağlanan kolay ölçeklenebilme avantajıdır.

Logstash

Log toplayan, ihtiyaca göre onları işleyen ve Elasticsearch'e bu logları indekslenmek üzere gönderen sistemdir. Tipik bir konfigürasyonu şöyledir;

input { stdin { } } output { stdout { } }

Burada input alanında logların Logstash bileşenine nasıl geldiğini, output'da ise işlendikten sonra nereye göndereceğimizi ifade ediyoruz. Bu örnekte örneğin konsoldan gelen logu yine konsola basıyoruz. Fakat bu input alanı 514 syslog, bir Beats ajanı (Örneğin Windows bir sistemden log alan ve Logstash'a gönderen Winlogbeat) da olabilir.

Kibana

Elasticsearch bahsettiğimiz gibi Lucene tabanlı bir arama ve log indeksleme moturuydu. REST ve JSON teknolojileri kullanarak curl, Python vb. onlarca farklı imkanla bu veritabanından veri okuyup/aratıp/yazabiliriz. Bunu bir web arayüzüyle görsel olarak yapmak istediğimizde ise arkada bu işlemleri bizim yerimize yapan Kibana karşımıza çıkıyor. Varsayılan olarak authentication (yetkilendirme) bile yapmayan Elastic'in X-Pack satmak için ne kadar büyük bir güvenlik riskini göze aldığını ise sizlere bırakıyoruz :) (Bu işi reverse-proxy yöntemlerle ücretsiz de kotarabilirsiniz, bkz: Security Onion)

Beats

Beats ürün ailesinin üyelerini kabaca sistemlerden Logstash'a log gönderen ajanlar olarak düşünebiliriz.

Bazı örnekleri şu şekildedir;

  • Winlogbeat: Windows eventlog okuyup bunu indensklenmek üzere gönderen Beats ailesi üründür.

  • Packetbeat: Kurduğunuz sisteme dair network verisi getiren bileşendir. Bu sayede örneğin kritik bir sunucunuzdaki network anormalliklerini izleyebilirsiniz.

  • Filebeat: Bir dosyayı izleyerek bu dosya içeriğindeki değişiklikleri gönderen Beats ailesi ürünüdür. Örneğin /var/log/httpd.log dosyanızı bu ajana gösterek bu dosyayı loglayabilirsiniz.

Hemen denemek istiyorum

Elastic Stack'ı manuel kurmak ilk aşamada görece zahmetli gözükse de (ki değil), arzu ederseniz hazır kurulu imajları kullanabilirsiniiz. Örneğin SOF-ELK, HELK, Security Onion size kullanıma hazır ELK ortamları sağlar. Fakat ileride göreceğimiz gibi, bu hazır kurulumlar altyapınızı ölçeklerken sizleri kendi kabiliyetleriyle sınırlayacaktır.

Nereden öğrenirim

Her ne kadar bu seride güvenlik amaçlı ELK kullanımını detaylandırıyor olacaksak da daha profesyonel bir eğitim için Applied Network Security'in ELK for Security Analysis ve SANS'ın SEC455 eğitimi tamamen ELK'in güvenlik amaçlı kullanım amacına yönelik eğitimlerdir.

Şimdilik güvenlik günler.

Furkan ÇALIŞKAN

Read more posts by this author.