1. Ana Sayfa
  2. Siem Çözümleri
  3. Splunk Üzerinde Log Kesintilerini Tespit Etmek

Splunk Üzerinde Log Kesintilerini Tespit Etmek

featured

SIEM sistemlerinde en çok ihtiyaç duyulan ya da sistemin sağlıklı çalıştığından emin olunmak istenen konulardan biri log kesintilerini tespit edebilmektir. Bu konu neredeyse bütün SIEM değerlendirme kriterlerinde haklı olarak bulunmaktadır.

Log kesintisini tespit etmek konu başlığı altında birçok alt madde barındırmaktadır. Örnek olarak;

  • Bir sistemin hiç log göndermiyor olması
  • Bir sistemin sadece bazı logları göndermiyor olması
  • Logların geliyor ancak gecikmeli olması

Splunk üzerinde basit bir sorgulama ile bu durumlar tespit edilebilir ve alarm oluşturulabilir.

Splunk sorgulamaları SPL (Search Processing Language) adı verilen kendine özgü bir dil ile yapılmaktadır. Çok geniş içeriğe sahip olan SPL ile ihtiyaçların karşılanmasının birden fazla yöntemi bulunmaktadır. Bu yöntemler sorgunun basitliği, cevap dönme süresi gibi farklılıklara sahip olabilir. Bu yazıda çok fazla kaynaktan log toplanıyor olması ihtimali nedeniyle en performanslı ve kısa bir sorgu örneğini paylaşacağım. Performansa en çok pozitif etki eden etken az bilinen tstats komutu ile gizli bir alan olan _indextime alanını kullanmamız olacaktır.

Öncelikle loglardaki zaman bilgisi hakkında bilgi vermek istiyorum. Splunk her bir logu indekslerken iki adet zaman bilgisi kaydeder. Bu bilgiler _time ve _indextime alanlarında bulunur.

  • _time alanı logun içerisinde geçen zaman bilgisini içerir. Eğer log içerisinde bir zaman bilgisi yok ise Splunk Indexer’in zaman bilgisi kaydedilir.
  • _indextime alanı ise logun zaman bilgisinden bağımsız olarak Splunk Indexer’in bu logu alıp kaydettiği (indekslediği) zaman bilgisini kaydeder.

Biz bu çalışmada _indextime alanını kullanacağız. Bunun nedeni logların gecikmeli geliyor olması durumunu kesinti olarak tanımlamamaktır.

Splunk’ın her log için kesinlikle kaydettiği host alanını da sistemi belirlemek için kullanacağız.

Bir sistemin log kesintisini tespit etmek için yapacağımız işlemler;

  • Her host için en son indekslenen verinin zamanını bulacağız
  • Bu zamanın bizim belirleyeceğimiz süreden daha eski olup olmadığını kontrol edeceğiz
  • En son gelen log, bu belirlediğimiz zamandan daha eski ise listeleyeceğiz.

Kullanacağımız SPL sorgusu aşağıdaki şekildedir.

| tstats latest(_indextime) as latest where index=* earliest=-24h by host

| eval delay = now() -latest

| where delay > 900

| eval delay=tostring(delay, “duration”)

| fields -latest

Sonuç olarak aşağıdaki şekilde bir sonuç aldık. “test_host” isimli sistem 16 dakika 23 saniyedir log göndermiyor.

Resim-1

Şimdi kullandığımız SPL’i adım adım açıklayalım;

| tstats latest(_indextime) as latest where index=* earliest=-24h by host

tstats komutu Splunk’ın indekslenmiş alanlardan hızlı sorgulamamızı sağlayan komutdur.

Bu komut ile bütün indexlerde (index=* ) en son indekslenen logun indekslenme zamanını ( latest(_indextime) as latest ) host bazında listeleyecektir.

Aramayı son 24 saat’te gelen bütün loglarda yapacağımızı earliest=-24h parametresi ile veriyoruz. Bu komut çıktısında latest alanında epoch formatında en son loglanan zaman bilgisini elde ettik.

| eval delay = now() -latest

now() fonksiyonu bize sorgu anındaki zaman bilgisini epoch formatında verecektir. Bu değer ile latest alanındaki zaman bilgisinin farkını alarak en son gelen logun kaç saniye önce geldiğini eval komutu ile hesaplıyoruz.

| where delay > 900

Hesapladığımız gecikme süresini saniye olarak belirlediğimiz maksimum gecikme süresi ile karşılaştırıp, bu değerden büyük olanları filtreliyoruz. Bu örnekte 15 dakika karşılığı olarak 900 saniye olarak kullandım.

| eval delay=tostring(delay, “duration”)

Artık elimizdeki liste (eğer varsa) 15 dakika’dan fazla süredir log göndermeyen hostları içeriyor. Artık çıktıyı okunması/yorumlanması daha kullanışlı olması için saat:dakika:saniye şeklinde görünmesi için formatlıyoruz. Burada yine eval komutunu tostring fonksiyonu ile kullanıyoruz. Sonucu yine delay alanına yazıyoruz.

| fields -latest

Son olarak elimizde ihtiyacımız kalmayan değer olan latest alanını kaldırıyoruz.

Bu sorguyu isterseniz “Save as Alert“ seçeneğini kullanarak alarm haline getirerek, düzenli aralıklar ile çalıştırılmasını ve e-posta ya da başka şekilde bilgilendirilmeyi sağlayabilirsiniz.

 

Umarım açıklamalar ve sorgu sizlere faydalı olmuştur.

 

Sorguda kullandığımız komutlar ve fonksiyonlar için aşağıdaki linklerden detaylı bilgi edinebilirsiniz. Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

tstats

https://docs.splunk.com/Documentation/Splunk/8.2.3/SearchReference/Tstats

eval

https://docs.splunk.com/Documentation/Splunk/8.2.3/SearchReference/Eval

tostring https://docs.splunk.com/Documentation/Splunk/8.2.3/SearchReference/ConversionFunctions#tostring.28X.2CY.29

where

https://docs.splunk.com/Documentation/Splunk/8.2.3/SearchReference/Where

 

fields

https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/Fields

Yorum Yap

Yazar Hakkında

Yıldız Teknik Üniversitesi Elektronik ve Haberleşme Mühendisliği mezunuyum. 28 yıllık çalışma hayatımda Mikroişlemci Tabanlı Benzin İstasyonu Otomasyon Sistemi Tasarımı ve uygulaması ile başlayıp, 20 yıla yakın Gerçek-Zamanlı Finansal Veri Dağıtımı sistemleri üzerinde Türkiye’de ilkleri gerçekleştirdiğim Operasyon, Destek, Donanım, Network ve Yöneticilik tecrübem bulunmaktadır. Data Analitik konusunda lider bir ürün olan Splunk ile tanıştıktan sonra 2017’den beri profesyonel Splunk Danışmanlığı yapmaktayım. Splunk Core Certified Consultant sertifikasına sahibim ve Splunk adına Professional Service verme konusunda akrediteyim. Destel Biliçim Çözümleri A.Ş. ile Splunk’ın Premimum ürünleri olan Enterprise Security (SIEM), UBA (User Behaviour Analytics), Splunk SOAR (Phantom) ürünleri ile kurumsal büyük ölçekli müşterilere danışmanlık ve hizmet vermekteyiz. 10 GB/gün ile birkaç TB/gün kapasitelerinde Single-Site ve Multi-Site cluster olarak çalışan yapıların kurulumları ve diğer SIEM’lerden dönüşüm projeleri gerçekleştiriyorum. Ayrıca SplunkTrust üyesi olarak Splunk Community platformunda aktif destek vermekteyim.

Yorum Yap