Splunk SPL Komutları 1
SPL Splunk'in veri işleme dilidir. Bu komutlar, Splunk'in indekslediği verileri sorgulamak, analiz etmek ve görüntülemek için kullanılır. Bugün yazımızda Correlation komutlarından bahsedeceğiz.
Bu yazı, Splunk'ı derinlemesine öğreneceğiniz serinin başlangıcıdır. İlk olarak SPL, Splunk'un kendi arama dili ve komut yorumlama dilidir. Splunk'ta verileri aramak, analiz etmek ve işlemek için kullanılır. SPL, güçlü bir dildir ve çok çeşitli görevleri gerçekleştirebilir.
SPL komutlarından biri olan Correlation (korelasyon komutları), farklı kaynaklardan gelen olayları ilişkilendirerek güvenlik tehditlerini tespit etmeye ve harekete geçirmeye yardımcı olur. Bu komutlar, belirli koşullar karşılandığında uyarılar veya eylemler tetiklemek için kullanılabilir.
Şimdi örneklerle Correlation Komutları..
1-) Append: Splunk indexine yeni veriler eklemek için kullanılır. Bu komut, verileri yeni bir olay olarak ekleyebilir veya mevcut bir olaya ekleyebilir.
Kullanımı; append index=index_name sourcetype=sourcetype [event_name] [fields] [values]
- index_name: Verilerin ekleneceği indeksin adı.
- sourcetype: Verilerin kaynağını tanımlayan kaynak tipi.
- event_name: Yeni bir olay oluşturmak için kullanılacak olay adı.
- fields: Eklenecek verilerin alanları.
- values: Eklenecek verilerin değerleri.
Örnek : "append index=web_access sourcetype=http_access event_name=login user="seyma" ip="192.168.1.1"
Bu komut, "web_access" indeksine "login" adı verilen yeni bir olay ekler. Olay, "user" ve "ip" alanlarına sahip bir kullanıcı girişini temsil eder.
2 -) Appendcols: Appendcols komutu, mevcut bir arama sonucuna yeni sütunlar eklemek için kullanılır.
Örnek: "search sourcetype=linux_secure | appendcols search sourcetype=linux_audit fields=username,ip"
Bu komut, "username" ve "ip" alanlarını "linux_audit" aramasının sonuçlarından "linux_secure" aramasının sonuçlarına ekler. Sonuçlar, "linux_secure" aramasından gelen tüm alanlara ve "linux_audit" aramasından gelen "username" ve "ip" alanlarına sahip olacaktır.
3 -) Arules: Alan değerleri arasındaki ilişki kurallarını bulur.
Örnek: "search sourcetype=linux_secure eventtype=login | arules field=action"
Bu komut, "linux_secure" indeksinden gelen oturum açma olayları için ilişki kuralları bulur. Sonuçlar, "action" alanındaki değerler arasında ilişki kuralları içerir.
Not: field parametresi belirtilmezse, arules komutu tüm alanlar için ilişki kuralları bulacaktır.
4-) Associate: Arama sonuçlarından ilişki istatistikleri bulmak için kullanılır. İlişki istatistikleri, iki veya daha fazla alanın birlikte görünme olasılığını ölçer.
Örnek: "index=linux_secure | where eventtype=login | associate field=action field=sourcetype"
Bu komut, "linux_secure" indeksinden gelen oturum açma olayları için, eylem ve kaynak türü alanları arasındaki ilişki istatistiklerini bulur.
Bu komutun çıktısı, aşağıdaki gibi bir ilişki istatistikleri tablosu döndürür:
field1 | field2 | support | lift
------- | --------------- | -------- | --------
action | sourcetype | 0.1 | 2
action | sudo | 0.2 | 2.5
action | su | 0.3 | 2
5-) Correlate: Farklı alanlar arasındaki korelasyonu hesaplar.
Örnek: "index=linux_secure | where eventtype=login | correlate max_gap=1m"
Bu komut, "linux_secure" indeksinden gelen oturum açma olayları için, bir kullanıcının bir oturum açmasından sonraki bir dakika içinde gerçekleşen diğer oturum açma olayları arasındaki ilişkiyi bulur.
Bu komutun çıktısı, aşağıdaki gibi bir ilişki tablosu döndürür:
sourcetype | source | dest | desttype | action | timestamp
--------------- |----------- | -------- | -------- | -------- | --------
linux_secure | root | localhost | local | sshd | 2023-09-26T12:00:00Z
linux_secure | user | localhost | local | sudo | 2023-09-26T12:00:01Z
6-) Diff: İki arama sonucu arasındaki farkı döndürür. diff komutunu kullanarak, aşağıdakileri yapabilirsiniz:
- İki dosyanın aynı olup olmadığını kontrol edin.
- İki dosya arasındaki farklılıkları belirleyin.
- İki dosyanın farklı sürümlerini karşılaştırın.
Örnek: "diff index=web_access_old index=web_access_new"
Bu komut, "web_access_old" ve "web_access_new" indekslerinden gelen web erişimi olaylarını karşılaştırır.
7-)Joın: Ana sonuçlar kanalından elde edilen sonuçları bir alt aramadan elde edilen sonuçlarla birleştirir.
Örnek: "index=linux_secure | where eventtype=login | join index=syslog | where source="sshd" | where action="failed"
Bu komut, "linux_secure" ve "syslog" indekslerinden gelen verileri birleştirir. join_on_field parametresi, iki veri kümesini birleştirmek için "source" alanını kullanır. Ayrıca, yalnızca başarısız oturum açma olaylarını döndürmek için where filtresini kullanır.
8-)Lookup: Alan değeri aramalarını açıkça çağırır. Veri kaynağından veri almak için kullanılan bir komuttur.
Örnek: "index=linux_secure | where eventtype=login | lookup users | where user=root"
Bu komut, Linux güvenlik günlüğünden oturum açma etkinliklerini arar ve ardından kullanıcı sütunundaki değeri "root" ile eşleşen kullanıcılar için kullanıcı verilerini eşler.
Bu komutun çıktısı, aşağıdaki gibi bir eşleştirme tablosudur:
user | id | name | email
------- | -------- | ------------- | --------
root | 12345 | John Doe | [email protected]
9-)Stats: İsteğe bağlı olarak alanlara göre gruplandırılmış istatistikler sağlar
Örnek:"index=linux_secure | where eventtype=login | stats count"
Bu komut, "linux_secure" indeksinden gelen oturum açma olaylarının sayısını hesaplar.
Bu komutun çıktısı, aşağıdaki gibi bir istatistik tablosudur:
count | 100
Not: Stats komutunu kullanarak, aşağıdakileri yapabilirsiniz:
- Bir veri kümesinin boyutunu belirlemek için. Örneğin, bir veri kümesinde kaç satır olduğunu belirleyebilirsiniz.
- Bir veri kümesinin minimum ve maksimum değerini belirlemek için. Örneğin, bir veri kümesinde en düşük ve en yüksek değeri belirleyebilirsiniz. ( stats max [field] )
- Bir veri kümesinin ortalamasını belirlemek için. Örneğin, bir veri kümesinde ortalama değeri belirleyebilirsiniz. ( stats avg [field] )
- Bir veri kümesinin medyan değerini belirlemek için. Örneğin, bir veri kümesinde medyan değeri belirleyebilirsiniz.
- Bir veri kümesinin standart sapmasını belirlemek için. Örneğin, bir veri kümesinde verilerin ne kadar dağıldığını belirleyebilirsiniz.
10-)Transaction: Arama sonuçlarını işlemler halinde gruplandırır.
- timeframe filtresini kullanarak, işlemleri belirli bir zaman aralığında gruplayabilirsiniz. Örneğin, aşağıdaki komut, son 24 saat içinde gerçekleşen oturum açma olaylarını tek bir işlem olarak gruplar:
"index=linux_secure | where eventtype=login | transaction login by timeframe"
- sourcetype filtresini kullanarak, işlemleri belirli bir kaynak türünden gelen olaylar için gruplayabilirsiniz. Örneğin, aşağıdaki komut, "sshd" kaynak türünden gelen oturum açma olaylarını tek bir işlem olarak gruplar:
"index=linux_secure | where eventtype=login | transaction login by sourcetype"
- dest filtresini kullanarak, işlemleri belirli bir hedeften gelen olaylar için gruplayabilirsiniz. Örneğin, aşağıdaki komut, "localhost" hedefine yönelik oturum açma olaylarını tek bir işlem olarak gruplar:
"index=linux_secure | where eventtype=login | transaction login by dest"
Karışık Komut Örnekleri :
- "append timestamp epoch(), message "This is a new message" => Her olaya bir zaman damgası ve bir metin değeri ekleme.
- "search sourcetype=linux_secure eventtype=login | arules" => Linux sistemlerindeki tüm oturum açma olayları için ilişki kuralları bulur.
- "associate field=action field=sourcetype" => Eylem ve kaynak türü alanları arasındaki ilişki istatistiklerini bulma.
- "index=windows_secure | where eventtype=login | head 10" => Windows güvenlik günlüğünden oturum açma olayları için ilk 10 olayı döndürür.
- " index=linux_secure | where eventtype=login | lookup users | where user=root | where timestamp between "2023-08-03 09:00:00" and "2023-08-03 10:00:00" " => Linux güvenlik günlüğünden oturum açma etkinliklerini arar ve ardından kullanıcı sütunundaki değeri "root" ile eşleşen kullanıcılar için kullanıcı verilerini eşler. Ayrıca, yalnızca belirli bir tarih aralığındaki oturum açma olaylarını döndürür.
ÖZET
- append ve appendcols komutlarını kullanarak, veri kümelerinizi birbirine bağlayabilir veya yeni sütunlar ekleyebilirsiniz.
- arules, associate ve correlate komutlarını kullanarak, veri kümelerinizdeki ilişkileri belirleyebilirsiniz.
- diff, join ve lookup komutlarını kullanarak, veri kümelerinizdeki farklılıkları belirleyebilir veya bunları analiz edebilirsiniz.
- transaction komutunu kullanarak, veri kümelerinizdeki işlemleri analiz edebilirsiniz.