Wazuh, güvenlik olaylarının izlenmesi, analiz edilmesi ve tehditlerin tespit edilmesi için kullanılan güçlü bir SIEM ve XDR platformudur. Ancak sistem üzerinde biriken loglar kontrolsüz şekilde büyüdüğünde, Wazuh altyapısında performans sorunları ortaya çıkabilir. Özellikle index sayısının ve shard miktarının artması, zamanla sistemin sağlıklı çalışmasını olumsuz etkileyebilir.
Bu yazıda, Wazuh üzerinde oluşan logların yaşam döngüsünü yöneterek eski indexlerin otomatik olarak salt okunur duruma getirilmesini ve belirli bir sürenin sonunda silinmesini nasıl sağlayabileceğimizi inceleyeceğiz.
Wazuh Index Yönetimi Neden Önemlidir?
Wazuh üzerinde bütün servisler çalışıyor olabilir ve loglar arayüzde görünmeye devam edebilir. Ancak Threat Hunting ekranında arama yaptığınızda sonuç alamayabilir veya işlemlerin beklendiği gibi çalışmadığını görebilirsiniz.
Bu tür sorunların olası nedenlerinden biri, OpenSearch tarafında biriken indexlerin ve shard sayısının artmasıdır. Özellikle shard limitine ulaşılması, yeni indexlerin oluşturulmasını ve bazı arama işlemlerini etkileyebilir.
Shard limitini yükseltmek kısa vadede çözüm sağlayabilir. Ancak bu yöntem, kontrolsüz büyüyen indexlerin oluşturduğu temel sorunu ortadan kaldırmaz. Uzun vadede daha sağlıklı bir yapı için index yaşam döngüsünün yönetilmesi gerekir.
İşte bu noktada Index State Management (ISM) devreye giriyor.
ISM politikaları sayesinde indexlerin belirli bir yaştan sonra salt okunur duruma getirilmesini, farklı durumlara geçirilmesini veya otomatik olarak silinmesini sağlayabiliriz.
Bu örnekte aşağıdaki yaşam döngüsünü oluşturacağız:
- 0–30 gün: Index normal şekilde kullanılmaya devam eder.
- 30 gün: Index salt okunur (read-only) duruma geçirilir.
- 365 gün: Index silinir.
Böylece eski logların gereksiz yere kaynak tüketmesini önlemeye ve index yönetimini otomatik hâle getirmeye çalışacağız.
1. State Management Policies Bölümünü Açalım
İlk olarak Wazuh Dashboard üzerinden Index Management bölümüne giriyoruz.
Ardından State Management Policies menüsünü açıyoruz.
Yeni bir politika oluşturmak için şu adımları izliyoruz:
- Create policy seçeneğine tıklıyoruz.
- Visual editor seçeneğini seçiyoruz.
- Continue policy diyerek devam ediyoruz.
- Policy için bir isim belirliyoruz.
Örneğimizde policy adını aşağıdaki gibi belirleyebiliriz:
30gunluk_cold_1y_delete
Policy oluştururken Error notification bölümünden hata bildirimlerini de yapılandırabilirsiniz. Burada, kullandığınız ortama uygun bildirim yöntemini seçerek politika çalışırken oluşabilecek hatalardan haberdar olabilirsiniz.
2. ISM Templates Ayarlarını Yapılandıralım
Oluşturduğumuz politikanın hangi indexler üzerinde kullanılacağını belirlememiz gerekiyor.
ISM Templates bölümüne geliyoruz.
Ardından:
- Add template seçeneğine tıklıyoruz.
- Template alanına
wazuh-alerts-*değerini giriyoruz. - Ayarlarımızı kontrol ederek devam ediyoruz.
Bu tanım, eşleşen Wazuh alert indexlerini hedeflememizi sağlar. Ancak mevcut indexlere politikanın otomatik olarak uygulanacağını varsaymamalıyız. Mevcut indexlere policy uygulama işlemini yazının son bölümünde ayrıca gerçekleştireceğiz.
3. İlk State: Hot
Şimdi index yaşam döngüsünün ilk durumunu oluşturacağız.
States bölümünden Add state seçeneğine tıklıyoruz.
State adını hot olarak belirliyoruz.
Bu aşamada index üzerinde herhangi bir işlem yapmadan, belirlediğimiz yaş sınırına ulaşıldığında sonraki duruma geçmesini sağlayacağız.
Add Transition seçeneğine tıklıyoruz ve aşağıdaki ayarları yapıyoruz:
- Minimum index age:
30d - Transition destination:
cold
Ardından Save state seçeneğiyle kaydediyoruz.
Bu ayar sayesinde index, 30 günlük minimum yaş koşulunu sağladığında cold durumuna geçebilecektir.
Burada önemli bir ayrıntı var: Index yaşı, ilgili indexin oluşturulma zamanına göre değerlendirilir. Dolayısıyla bu süre, her index için ayrı ayrı hesaplanır.
4. İkinci State: Cold
Şimdi 30 günlük indexlerin salt okunur duruma geçirilmesini sağlayacağız.
Tekrar Add state seçeneğine tıklıyoruz ve state adını cold olarak belirliyoruz.
Bu state altında Add action seçeneğine tıklıyoruz.
Açılan işlem seçeneklerinden Read only seçeneğini seçiyoruz.
Bu işlem sayesinde ilgili index üzerinde yeni veri yazılması engellenir. Böylece eski indexlerin değişmeden saklanması ve aktif yazma yükünün azaltılması hedeflenir.
Ardından Add Transition seçeneğine tıklıyoruz ve şu koşulu tanımlıyoruz:
- Minimum index age:
365d - Transition destination:
delete
Ayarlarımızı kaydediyoruz.
Bu aşamada dikkat edilmesi gereken nokta, geçiş koşullarının ve state sıralamasının doğru yapılandırılmasıdır. Cold state’e geçiş yapan index, 365 günlük yaş koşulunu sağladığında silme aşamasına ilerleyebilecektir.
5. Üçüncü State: Delete
Son olarak, 365 günlük indexlerin otomatik olarak silinmesini sağlayacağız.
Tekrar Add state seçeneğine tıklıyoruz ve state adını delete olarak belirliyoruz.
Bu state içerisinde Add action seçeneğine tıklayarak Delete işlemini seçiyoruz.
Böylece index yaşam döngüsünün son aşamasını oluşturmuş oluyoruz.
Oluşturduğumuz policy’nin genel çalışma mantığı şu şekildedir:
- Index, ilk oluşturulduğunda normal şekilde çalışır.
- 30 günlük yaş koşuluna ulaştığında cold state’ine geçer ve salt okunur yapılır.
- 365 günlük yaş koşuluna ulaştığında delete state’ine geçerek silinir.
Önemli: Bu örnekte 365 gün, indexin toplam yaşı için hedeflenmiştir; cold state’ine geçtikten sonra ayrıca 365 gün beklemesi amaçlanmamaktadır. Bununla birlikte, kullandığınız OpenSearch sürümündeki ISM geçiş koşullarını ve Minimum index age alanının davranışını doğrulamanız gerekir. Cold state’inde geçen süreyi esas almak istiyorsanız geçiş koşulunu buna göre düzenlemelisiniz.
{
"policy": {
"policy_id": "30gunluk_cold_1y_delete",
"description": "A sample description of the policy",
"schema_version": 21,
"error_notification": null,
"default_state": "hot",
"states": [
{
"name": "hot",
"actions": [],
"transitions": [
{
"state_name": "cold",
"conditions": {
"min_index_age": "30d"
}
}
]
},
{
"name": "cold",
"actions": [
{
"retry": {
"count": 3,
"backoff": "exponential",
"delay": "1m"
},
"read_only": {}
}
],
"transitions": [
{
"state_name": "delete",
"conditions": {
"min_index_age": "365d"
}
}
]
},
{
"name": "delete",
"actions": [
{
"retry": {
"count": 3,
"backoff": "exponential",
"delay": "1m"
},
"delete": {}
}
],
"transitions": []
}
],
"ism_template": [
{
"index_patterns": [
"wazuh-alerts-*"
],
"priority": 100
}
]
}
}
6. Oluşturduğumuz Policy’yi Mevcut Indexlere Uygulayalım
Policy’yi oluşturmak tek başına yeterli değildir. Mevcut indexler için de bu politikayı uygulamamız gerekiyor.
Bunun için Index Management → Indexes bölümüne giriyoruz.
Arama alanına aşağıdaki ifadeyi yazıyoruz:
wazuh-alerts-*
Arama sonuçlarında eşleşen indexleri listeliyoruz.
Ardından:
- Uygulamak istediğimiz indexleri seçiyoruz.
- Actions menüsünü açıyoruz.
- Apply policy seçeneğine tıklıyoruz.
- Oluşturduğumuz
30gunluk_cold_1y_deletepolitikasını seçiyoruz. - İşlemi onaylıyoruz.
Bu işlemle seçtiğimiz mevcut indexlere yaşam döngüsü politikasını uygulamış oluyoruz.
Yeni oluşturulacak indexlerin de politikayla otomatik eşleşmesi için ISM Templates yapılandırmasını ayrıca kontrol etmeliyiz.
7. Policy’nin Çalıştığını Nasıl Kontrol Ederiz?
Yapılandırmayı tamamladıktan sonra işlemlerin beklendiği gibi çalıştığını doğrulamak önemlidir.
Index Management ekranında ilgili indexlerin policy durumlarını kontrol edebilirsiniz. Ayrıca kullandığınız OpenSearch sürümüne ve arayüzüne bağlı olarak ISM durum bilgilerini ve hata mesajlarını inceleyebilirsiniz.
Kontrol sırasında özellikle şu noktalara dikkat edin:
- Policy doğru indexlerle eşleşiyor mu?
- Indexler beklenen state içerisinde mi?
- Read-only işlemi başarıyla uygulanmış mı?
- Transition koşulları doğru çalışıyor mu?
- Silme işlemi sırasında bir hata oluşmuş mu?
Bir indexin beklenen state’e geçmemesi durumunda policy hatalarını, index eşleşmelerini ve OpenSearch loglarını incelemek gerekir.
Sonuç
Wazuh üzerinde biriken logları yönetmek, sistem performansını ve sürdürülebilirliğini korumak açısından önemlidir. Shard limitini artırmak bazı durumlarda geçici bir çözüm sağlayabilir; ancak uzun vadede index yaşam döngüsünü doğru şekilde yönetmek çok daha sağlıklı bir yaklaşımdır.
Bu örnekte oluşturduğumuz ISM policy ile 30 günlük indexleri salt okunur duruma getiriyor ve 365 günlük indexlerin otomatik olarak silinmesini hedefliyoruz. Böylece eski verilerin kontrolsüz şekilde birikmesini önleyerek index yönetimini daha düzenli hâle getirebiliriz.
Unutmayın, saklama süresi ortamın ihtiyaçlarına göre belirlenmelidir. Güvenlik incelemeleri, olay müdahalesi, mevzuat ve denetim gereksinimleri nedeniyle logların daha uzun süre saklanması gerekebilir. Silme politikasını devreye almadan önce bu gereksinimleri mutlaka değerlendirin.