Ana içeriğe atla

 

Splunk'ı Claude'a Bağlamak

 

Yapay zekâ bir SIEM'in içine girdiğinde ne olur? Doğal dil ile indeks sorgulama, sourcetype keşfi ve canlı healthcheck, gerçek bir lab ortamından notlar. *

 

Giriş: "Terminal Yorgunluğu" ve Bir Fikir

 

SOC'de yeterince yıl geçirdikten sonra fark edersiniz: asıl yorgunluk alarm sayısından değil, bağlam değiştirme maliyetinden gelir. Splunk'ta bir sorgu açarsınız, sonucu analiz edersiniz, başka bir sekmeye geçersiniz, tekrar dönersiniz. Bu döngü saatlerce sürer.

Bir gün şunu düşündüm: Splunk'a doğal dil ile konuşabilsem ne olurdu? "Son 24 saatte 4625 eventlerini getir, system kullanıcılarını dışla" diyebilsem? Cevap, Model Context Protocol (MCP) ile geldi.

Bu makale o serüveni anlatıyor, kurulumdan, canlı ortamdaki gerçek bulgulara kadar.

 

MCP Nedir? Neden Önemli?

 

MCP (Model Context Protocol), büyük dil modellerini dış araçlara ve veri kaynaklarına bağlayan açık bir standarttır. Anthropic tarafından geliştirilmiştir.

Bunu şöyle düşünebilirsiniz: Claude bir danışman, MCP ise o danışmanın ofisinizdeki sistemlere erişim kartı. Danışmanınız artık sadece sizi dinlemiyor, kendi bilgisayarınızdaki veri tabanına da bakabiliyor.

SOC perspektifinden MCP'nin önemi şu: SIEM'iniz artık bir metin kutusuna dönüşüyor. SPL bilmeden soru sorabilirsiniz, ama SPL biliyorsanız çok daha hızlı hareket edebilirsiniz.

 

Ortam ve Kurulum

 

Test ortamım:

- 1 Search Head (Linux, Splunk 9.4.4)

- 3 Indexer — idx1, idx2, idx3 (cluster mode)

- 1 Heavy Forwarder — hf

- 1 Windows Client — ZZ-sanal (Universal Forwarder ile)

- 1 Ubuntu Client — UF kurulu

 

Adım 1: MCP Server Kurulumu

Splunkbase’den Splunk MCP Server uygulamasını indirip Splunk Enterprise’a yükleyin. Kurulumdan sonra Splunk’u yeniden başlatın. Bu entegrasyonda Splunk’un resmi MCP Server uygulaması (Splunkbase App #7931, v1.1.0 -- https://splunkbase.splunk.com/app/7931) kullanılmıştır.

 

Adım 2: Rol ve Yetkilendirme

Rol adı tam olarak mcp_user olmalıdır. Splunk MCP Server bu ismi spesifik olarak arar; farklı isimde bir rol, doğru capability’lere sahip olsa bile çalışmaz.

Gerekli capability’ler: mcp_tool_execute (sorgu çalıştırma), mcp_tool_admin (tool yönetimi ve token oluşturma için).

 

Adım 3: Encrypted Token Oluşturma

Token’lar sadece MCP Server App içinden oluşturulmalıdır. Splunk’un standart Settings → Tokens sayfasından veya REST API ile oluşturulan token’lar sessizce reddedilir, hata mesajı vermez, sadece çalışmaz.

MCP Server App’i açın, “Create Token” butonuna tıklayın. Audience alanı otomatik olarak “mcp” gelir, değiştirilemez. Oluşturulan encrypted token sadece bir kez gösterilir, hemen kopyalayın.

 

Adım 4: Tool’ları Aktifleştirme

Kurulumdan sonra bazı MCP endpoint’leri varsayılan olarak kapalı gelir. Bağlantı sağlıklı görünür, handshake tamamlanır, splunk_get_info bile veri döner ama diğer tool’lar (SPL çalıştırma, AI Assistant vb.) client tarafında sessizce görünmez. Hata mesajı, uyarı yoktur.

MCP Server App → Settings ekranından ihtiyacınız olan tüm tool’ları açıkça etkinleştirin.

 

Adım 5: Claude Desktop Konfigürasyonu

claude_desktop_config.json dosyasına aşağıdaki konfigürasyonu ekleyin:

{

  "mcpServers": {

    "splunk-mcp-server": {

      "command": "cmd",

      "args": [

        "/c", "npx", "-y", "mcp-remote",

        "https://<SPLUNK_HOST>:8089/services/mcp",

        "--header",

        "Authorization: Bearer <ENCRYPTED_TOKEN>"

      ],

      "env": {

        "NODE_TLS_REJECT_UNAUTHORIZED": "0"

      }

    }

  }

}

 

Windows’a özel önemli notlar:

Config dosyası konumu: Claude Desktop Microsoft Store’dan kuruluysa config dosyası standart %APPDATA%\Claude\ yolunda değildir. Store sandbox path’indedir: C:\Users\<kullanıcı>\AppData\Local\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\. En güvenilir yöntem, Claude Desktop içindeki Settings → Developer → Edit Config butonunu kullanmaktır.

npx path sorunu: Node.js, C:\Program Files\nodejs\ gibi boşluk içeren bir dizine kuruluysa "command": "npx" başarısız olur. Çözüm: "command": "cmd" ile args’ın başına "/c", "npx" eklemektir.

PowerShell Execution Policy: npx çalıştırabilmek için Execution Policy’nin RemoteSigned olması gerekir: Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

Self-signed sertifika: Test/lab ortamında self-signed sertifika kullanılıyorsa NODE_TLS_REJECT_UNAUTHORIZED=0 env değişkeni gereklidir. Production’da mutlaka CA-signed sertifika kullanın.

 

Adım 6: Bağlantıyı Test Etme

Claude Desktop’u tamamen kapatıp yeniden açın (system tray’den sağ tık → Quit). Settings → Developer ekranında splunk-mcp-server bağlantısı görünmeli. Başarılı bağlantıda yeşil durum göstergesi, başarısızlıkta kırmızı “failed” etiketi görünür.

İlk test sorusu basit: “Bana tüm indeksleri sırala.

 

İlk Gerçek Test: İndekslerin Keşfi

Bağlantı kurulduktan sonra Claude’a yönelttiğim ilk soru şuydu:

“Bana bütün indeksleri sırala.”

Claude, arka planda şu sorguyu çalıştırdı:

| rest /services/server/info splunk_server=*

Ve geri dönen sonuç:

Ortamda 4 Splunk sunucusu (1 search head + 3 indexer) ve 20 unique indeks var.

 

İndeks

Tür

Toplam Boyut

Olay Sayısı

_internal

dahili

~20 GB

177M+

_audit

dahili

510K

main

sistem

~50 MB

49.8M

indextest

test

587K

oswinsec

güvenlik

0 MB

0

crowdstrike

güvenlik

0 MB

0

winwef

güvenlik

0 MB

0

 

İlk bulgular hemen dikkat çekiciydi. Güvenlik indeksleri; oswinsec, crowdstrike, winwef sistemde tanımlı ama içleri boş. Veri akışı hiç başlamamış ya da kesilmiş demekti.

 

4625 Araştırması: Başarısız Girişimler

Bir SOC analistinin en sık sorduğu soru: “Başarısız oturum açma denemeleri var mı?

Claude’a şunu söyledim:

“Bana 4625’leri system kullanıcılarını dışlayacak şekilde son 24 saatteki hareketi getir.”

Claude otomatik olarak şu SPL’i oluşturup çalıştırdı:

index=oswinsec EventCode=4625

NOT (TargetUserName IN ("SYSTEM", "LOCAL SERVICE",

     "NETWORK SERVICE", "ANONYMOUS LOGON", "-")

     OR TargetUserName="*$")

| timechart span=1h count AS failures

 

Sonuç: 0 kayıt.

Claude duraksayıp kendi kendine bir soruşturma başlattı. Sırasıyla şunları sorguladı:

-- Hangi indekste WinEventLog var?

index=* sourcetype=WinEventLog | stats count by index

 

-- Peki bu host son 30 günde ne gönderdi?

index=main sourcetype=WinEventLog | stats count by LogName

 

Ortaya çıkan tablo şaşırtıcıydı:

Log Adı

Olay Sayısı

Security

16.848

Application

1.074

System

402

 

Security log geliyordu ama 4625 hiç yoktu. Ve son veri tarihi: 20 Nisan 2026. Yani 7 günlük bir veri boşluğu vardı.

Claude’un teşhisi:

“İki olası neden: (1) Audit Policy’de ‘Logon Failures’ auditing kapalı, (2) UF servisi 20 Nisan’dan beri çalışmıyor.”

Bu, bir analistin manuel olarak yapacağı araştırmayı Claude’un otomatik olarak gerçekleştirmesiydi. Araç çağrısı, bulgu, hipotez doğrulama döngüsü, her şey doğal dil konuşması içinde.

 

Sourcetype Keşfi: Beklenmedik Bulgular

Bir sonraki adım daha ilginçti:

“Sourcetype’ları çıkart.”

Claude iki ayrı sorgu çalıştırdı hem genel indeksler hem de dahili (_*) indeksler için. Toplam 46 unique sourcetype döndü.

 

taopenctiaddon:log — 563K olay, ama yanlış indekste

OpenCTI add-on’u aktif ve veri üretiyor. Ancak veriler _internal indeksine düşüyor bu, konfigürasyon hatası. CTI telemetrisi main veya özel bir cti indeksine akmalı.

phantom_retry + phantom_configuration

Splunk SOAR (eski Phantom) entegrasyonu kurulu. phantom_retry’da 7.325 kayıt var — bu sayı başarısız playbook aksiyonlarını işaret edebilir. SOAR bağlantısının sağlığı sorgulanmalı.

linux_secure — 560K olay, ama indextest’te

560 bin Linux auth log’u bir test indeksinde yaşıyor. Bu kasıtlı mı, yoksa bir prod hatasının işareti mi?

skyhigh:dlp:audit

McAfee/Skyhigh DLP telemetrisi başlamış ama yalnızca 108 kayıt var. Yeni kurulum mu, yoksa veri akışı zayıf mı?

splunk:ta:o365:log

O365 TA kurulu ama log’ları _internal’e düşüyor. O365 verisi için indeks tanımı eksik.

 

Healthcheck: Ortamın Nabzı

En kapsamlı test buydu:

“Splunk’ta healthcheck yapar mısın?”

Claude sekiz farklı sorgu çalıştırarak ortamın tüm boyutlarını taradı.

Sunucu Durumu

Sunucu

Sürüm

Health

Roller

searchhead

9.4.4

🟢 green

search head, deploy server, kv_store

idx1

9.4.4

🟡 yellow

indexer, cluster peer

idx2

9.4.4

🟡 yellow

indexer, cluster peer

idx3

9.4.4

🟡 yellow

indexer, cluster peer

hf

görünür

heavy forwarder

 

Üç indexer’ın da yellow durumda olması kritik bir bulguydu.

Disk Kullanımı

Sunucu

Sıkıştırılmış

Ham Boyut

idx2

7.2 GB

20.5 GB

idx3

6.4 GB

19.3 GB

idx1

5.8 GB

19.3 GB

 

Sıkıştırma oranı ~2.7:1 normal aralıkta.

CPU Kullanımı (Son 1 Saat)

Tüm sunucularda CPU %3’ün altında. Yük açısından sorun yok.

 

Error Log Analizi (Son 24 Saat)

Kaynak

Sunucu

Sayı

Seviye

ExecProcessor

searchhead

72

ERROR

SSLCommon

searchhead

296

WARN

HttpListener

searchhead

317

WARN

DiskMon

idx3

49

WARN

CMSlave

idx2, idx3

4

ERROR

 

Kritik Bulgular

1. Indexer’lar yellow — cluster replikasyon sorunu muhtemel. CMSlave hataları idx2 ve idx3’te görünüyor. Bucket replikasyon faktörü veya peer durumu bozulmuş olabilir. Splunk Web’deki Settings → Indexer Clustering ekranından doğrulanması gerekiyor.

2. SSL uyarıları — 613 adet, tek günde. SSLCommon + HttpListener kombinasyonu yüksek sayıda uyarı üretmiş. Süresi yaklaşan/dolmuş sertifika, eski TLS versiyonu veya cipher mismatch olabilir.

3. idx3 DiskMon — diğerlerinden belirgin şekilde yüksek. idx3’te disk I/O veya doluluk uyarıları diğer indexer’lardan çok daha fazla. Disk kapasitesi kritik eşiğe yaklaşıyor olabilir.

 

Bu Entegrasyon Ne İşe Yarar?

Keşif hızı. Bir ortama yeni geldiğinizde indeks yapısını, sourcetype dağılımını ve genel sağlık durumunu dakikalar içinde öğrenebilirsiniz.

Hipotez üretme. Claude sadece sorgu sonucu döndürmüyor; bulguları yorumluyor ve sonraki adımı öneriyor. “4625 yok” derken aynı zamanda “audit policy’yi kontrol et” diyor.

SPL öğrenme eğrisi. Analistler için mükemmel bir öğretmen. “Bu sonucu nasıl aldın?” diye sorulabilir, Claude SPL’i açıklar.

Healthcheck otomasyonu. Sekiz farklı sorguyu art arda çalıştırıp sonuçları bütünleşik bir rapor olarak sunmak manuel yapılsaydı 30-45 dakika sürerdi.

Sınırlar

Gerçek zamanlı alarm değil. Claude’u bir detection engine olarak kullanmayın. Sorgular anında çalışır ama sürekli izleme için değil.

rest komutu kısıtlı. Bu entegrasyonda bazı Splunk REST API uç noktaları erişilebilir değildi. Cluster detayları için Splunk Web’e geçmek gerekti.

Hassas veri farkındalığı. Claude’a gönderdiğiniz her şey bir API çağrısına dönüşüyor. Kurumsal ortamlarda hangi verilerin paylaşıldığına dikkat edilmeli; özellikle kimlik bilgileri ve kişisel veri içeren log satırları.

 

Sonuç

Bu entegrasyon benim için bir araç değil, bir bakış açısı değişikliği oldu. SOC’de yıllardır “daha hızlı sorgu” peşinde koşuyorduk. Oysa asıl kazanım daha iyi soru sormak olabilir, hatta en iyi kazanım bu olur.

Claude, Splunk’u bir sorgu motoru olmaktan çıkarıp bir konuşma ortağına dönüştürüyor. “4625 var mı?” yerine “Bu ortamda kimlik doğrulama telemetrim neden eksik?” sorusunu soruyorsunuz ve cevap peşinden geliyor.

Kurulum Sorun Giderme Rehberi

Aşağıdaki tablo, kurulum sırasında karşılaşılan sorunları ve çözümlerini içerir:

Sorun

Neden

Çözüm

Claude Desktop’ta server görünmüyor

Config dosyası yanlış konumda (Store vs standart kurulum)

Edit Config butonu ile doğru dosyayı açın

"C:\Program is not recognized" hatası

Node.js yolu boşluk içeriyor

command: "cmd", args başına "/c", "npx" ekleyin

npx SecurityError / PSSecurityError

PowerShell Execution Policy kısıtlaması

Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

Server disconnected / TLS hatası

Self-signed sertifika reddediliyor

env bloğuna NODE_TLS_REJECT_UNAUTHORIZED=0 ekleyin

Bağlantı var ama tool görünmüyor

Server-side tool’lar kapalı

MCP Server App → Settings’ten tool’ları aktifleştirin

Token çalışmıyor

Token, Settings → Tokens sayfasından oluşturulmuş

MCP Server App içinden yeni encrypted token oluşturun

Connection refused

Port 8089 kapalı veya firewall engeli

Test-NetConnection ile 8089 erişimini doğrulayın

 

Kâmil Akdağ, MSc *Bu makalede yer alan tüm veriler gerçek bir test lab ortamından alınmıştır.

Yorumlar

Bu blogdaki popüler yayınlar

  Claude Desktop ile XSOAR Entegrasyonu: CortexSynapse MCP Sunucusunun Sıfırdan Devreye Alınması Bir Vaka Çalışması – Kâmil AKDAĞ, MSc Bu makale, Cortex XSOAR 6.13'ün, CortexSynapse açık kaynak MCP sunucusu üzerinden Claude Desktop'a bağlanması; süreç boyunca karşılaşılan üç ardışık entegrasyon hatasının teşhisi ve kalıcı çözümünü içerir. TL;DR (Çok Uzun; Okumadım) Cortex XSOAR'ı Claude Desktop'a MCP üzerinden bağlamak için CortexSynapse Docker imajını kullanırken üç farklı sorunla karşılaşıldı: SSL sertifika doğrulama hatası: Yanlış env değişkeni ismi ( XSOAR_VERIFY_SSL yerine kodda VERIFY_SSL bekleniyor). HTML 303 redirect cevapları: XSOAR_API_URL değerinin sonundaki / çift slash'a yol açıp XSOAR'ı API yerine UI'ya yönlendiriyor. HTTP 400 "string into Go value" hatası : MCP sunucusunun istek body'sini double-encode etmesi; codegen tarafından üretilen üç dosyada json=body yerine json=(json....
AI Entegrasyonlarında Güvenlik Riski   Bir geliştirici yeni bir Claude Desktop eklentisi keşfediyor. Kuruyor, config'e ekliyor, uygulamayı yeniden başlatıyor. Birkaç saniye içinde saldırgan sistemin tam kontrolünü ele geçiriyor, hiçbir tıklama, hiçbir onay gerekmeden. Bu makale, tam olarak bunun nasıl gerçekleştiğini anlatıyor. MCP protokolü yapay zekaya gerçek dünya ile etkileşim gücü verirken, her yeni bağlantı noktası potansiyel bir saldırı vektörü haline gelir ve sadece “veri sızıntısı” tehdidi ile karşı karşıya kalmazsınız. MCP’yi Anlamak Anthropic tarafından geliştirilen Model Bağlam Protokolünün sitesinde yer alan tanımı şöyledir: Bugün, yapay zekâ asistanlarını içerik depoları, iş araçları ve geliştirme ortamları da dahil olmak üzere verilerin bulunduğu sistemlere bağlamak için yeni bir standart olan  Model Bağlam Protokolü'nü  (MCP) açık kaynaklı hale getiriyoruz. Amacı, öncü modellerin daha iyi ve daha alakalı yanıtlar üretmesine yardımcı olmaktır [1] ...