--- title: Siber Güvenlik Haber Asistanı emoji: 🛡️ colorFrom: blue colorTo: indigo sdk: docker app_port: 7860 fullWidth: true short_description: Ollama ile güncel CVE ve siber güvenlik asistanı tags: - ollama - cybersecurity - tool-calling - cve - turkish --- # Siber Güvenlik Haber Asistanı Yerel bir Ollama modelinin güncel siber güvenlik kaynaklarını araç çağrılarıyla sorguladığı Türkçe Gradio uygulaması. Arayüz; modelin çağırdığı aracı, parametrelerini, dönen sonucu, tur numarasını ve nihai yanıtı ayrı ayrı gösterir. Modelin gizli düşünce metni gösterilmez. ## Model ve üretim kontrolleri Arayüz yalnızca izin verilen dört Ollama modeli arasında seçim yaptırır: | Arayüz seçeneği | Ollama modeli | Önerilen kullanım | |---|---|---| | 1B | `qwen3.5:0.8b` | En hızlı deneme ve düşük kaynak kullanımı | | 4B | `qwen3.5:4b` | Ekonomik varsayılan Space modeli | | 9B | `qwen3.5:9b` | Hız ve yanıt kalitesi dengesi | | 35B | `qwen3.6:latest` | En yüksek kalite ve güçlü GPU | Container başlangıcında yalnızca `OLLAMA_MODEL` ile belirlenen varsayılan model indirilir. Diğer modeller ilk seçildiklerinde otomatik indirilir; model hazırlama durumu araç izleriyle birlikte arayüzde gösterilir. Gelişmiş ayarlar bölümünde Temperature, Top-K ve Top-P değiştirilebilir. Her nihai yanıtın üzerinde model adı, ajan turu, süre, girdi tokenı, çıktı tokenı ve tüm turların toplam token sayısı görüntülenir. ## Veri kaynakları Anahtarsız kullanılabilen kaynaklar: - GDELT — güncel haber araması - CISA KEV — aktif istismar edildiği bilinen zafiyetler - NIST NVD — CVE arama ve ayrıntıları - CISA RSS ve CERT/CC Atom — resmi güvenlik duyuruları - MITRE ATT&CK TAXII 2.1 — Enterprise teknikleri İsteğe bağlı kaynaklar: - NewsAPI (`NEWSAPI_KEY`) - AlienVault OTX (`OTX_API_KEY`) - NVD yüksek istek limiti (`NVD_API_KEY`) - Kurumsal MISP (`MISP_BASE_URL`, `MISP_API_KEY`) API anahtarları hiçbir zaman kaynak koda veya model mesajına eklenmez; yalnızca sunucu tarafındaki ortam değişkenlerinden okunur. ## Yerel çalıştırma Gereksinimler: - Python 3.11+ - Çalışan bir [Ollama](https://docs.ollama.com/) sunucusu - Araç çağrısını destekleyen bir Ollama modeli ```bash ollama serve ollama pull qwen3.6:latest cp .env.example .env uv sync uv run python app.py ``` `uv` kullanmıyorsanız: ```bash python -m venv .venv source .venv/bin/activate pip install -r requirements.txt python app.py ``` Uygulama varsayılan olarak `http://127.0.0.1:11434` ve `qwen3.6:latest` kullanır. Ayarlar kabuktan verilebilir: ```bash export OLLAMA_MODEL=qwen3.6:latest export NEWSAPI_KEY=... export NVD_API_KEY=... python app.py ``` `.env` dosyası örnek amaçlıdır; Python uygulaması bu dosyayı kendiliğinden yüklemez. Değerleri kabuğa aktarın veya dağıtım platformunun secret yönetimini kullanın. ## Çalışma biçimi Örnek soru: > Son 7 günde yayımlanan kritik CVE'leri bul ve aktif istismar durumlarını kontrol et. Beklenen akış: 1. Model `son_cve_kayitlarini_getir` aracını çağırır. 2. Dönen CVE'lerden gerekli gördükleri için `cve_detayi_getir` veya `aktif_istismar_edilenleri_ara` çağrısını yapar. 3. Arayüz her çağrıyı ve sonucu tur bazında gösterir. 4. Model, tarih ve kaynak bağlantıları içeren Türkçe nihai yanıtı üretir. Model en fazla altı araç turu çalıştırabilir. Bu sınır hatalı veya sonsuz araç döngülerini engeller. ## Yapılandırma | Değişken | Varsayılan | Açıklama | |---|---:|---| | `OLLAMA_BASE_URL` | `http://127.0.0.1:11434` | Ollama veya uyumlu güvenli geçit | | `OLLAMA_MODEL` | `qwen3.5:4b` | Container açılışında indirilecek varsayılan model | | `OLLAMA_API_KEY` | boş | Uzak geçit için Bearer anahtarı | | `OLLAMA_TIMEOUT_SECONDS` | `300` | Model yanıt zaman aşımı | | `OLLAMA_NUM_CTX` | `16384` | Bağlam penceresi | | `OLLAMA_TEMPERATURE` | `0.2` | Üretim sıcaklığı | | `OLLAMA_TOP_K` | `20` | Varsayılan Top-K değeri | | `OLLAMA_TOP_P` | `0.95` | Varsayılan Top-P değeri | | `OLLAMA_PULL_TIMEOUT_SECONDS` | `3600` | İlk model indirme zaman aşımı | | `CYBER_API_CONNECT_TIMEOUT` | `20` | Genel API bağlantı zaman aşımı | | `CYBER_API_READ_TIMEOUT` | `60` | Genel API okuma zaman aşımı | | `GDELT_CONNECT_TIMEOUT` | `30` | GDELT için bağlantı zaman aşımı | | `GDELT_READ_TIMEOUT` | `75` | GDELT için okuma zaman aşımı | | `CYBER_NEWS_CACHE_SECONDS` | `300` | Aynı haber sorgusunun önbellek süresi | | `NEWSAPI_KEY` | boş | NewsAPI erişimi | | `NVD_API_KEY` | boş | Daha yüksek NVD istek limiti | | `OTX_API_KEY` | boş | AlienVault OTX erişimi | | `MISP_BASE_URL` | boş | Kurumsal MISP kök adresi | | `MISP_API_KEY` | boş | MISP erişim anahtarı | | `MISP_VERIFY_TLS` | `true` | MISP TLS sertifika doğrulaması | ## Hugging Face Docker Space Depo, Ollama ile Gradio'yu aynı container içinde çalıştıran Docker Space düzenine hazırdır. `start.sh` önce Ollama'yı başlatır, `OLLAMA_MODEL` ile seçilen modeli indirir ve ardından Gradio'yu `0.0.0.0:7860` üzerinde açar. Yalnızca Gradio portu dışarı açılır; Ollama container içinde `127.0.0.1:11434` adresinde kalır. Space oluşturma ve yükleme örneği: ```bash hf auth login --add-to-git-credential hf repos create KULLANICI_ADI/siber-guvenlik-asistani --repo-type space --sdk docker git remote add space https://huggingface.co/spaces/KULLANICI_ADI/siber-guvenlik-asistani git push space main ``` Space secret değerlerini Hugging Face web arayüzündeki **Settings → Variables and secrets** bölümünden ekleyin. Her push sonrasında Space otomatik olarak yeniden oluşturulur. Önerilen Space değişkenleri: ```text OLLAMA_MODEL=qwen3.5:4b OLLAMA_NUM_CTX=16384 ``` `NEWSAPI_KEY`, `NVD_API_KEY`, `OTX_API_KEY` ve MISP erişim bilgilerini yalnızca Space secret olarak ekleyin. Bunları Dockerfile'a veya Git deposuna yazmayın. `qwen3.6:latest` yaklaşık 24 GB'tır. Model ağırlıkları ile çalışma belleğine yer kalması için 48 GB VRAM'li bir GPU güvenli tercihtir. Varsayılan 4B model daha hızlı başlar; 35B seçeneği yalnızca yeterli GPU ve disk olduğunda kullanılmalıdır. Space diski geçiciyse model her yeniden oluşturmada tekrar indirilir. Bir Storage Bucket `/data` yoluna bağlanırsa Space değişkenini aşağıdaki gibi ayarlayarak model önbelleği kalıcı tutulabilir: ```text OLLAMA_MODELS=/data/ollama-models ``` ### Docker'ı yerelde sınama CPU ile yalnızca container başlangıcını sınamak için: ```bash docker build -t siber-guvenlik-asistani . docker run --rm -p 7860:7860 \ -e OLLAMA_MODEL=qwen3.5:4b \ siber-guvenlik-asistani ``` NVIDIA Container Toolkit kurulu bir makinede GPU ile: ```bash docker run --rm --gpus all -p 7860:7860 \ -e OLLAMA_MODEL=qwen3.6:latest \ siber-guvenlik-asistani ``` ## Testler ```bash python -m unittest discover -s tests -v ``` Testler gerçek API veya Ollama bağlantısı kurmadan araç şemalarını, CVE normalizasyonunu ve çok turlu araç döngüsünü doğrular. ## Güvenlik ve doğruluk - Uygulama savunma ve haber analizi amaçlıdır. - Güncel veri kaynakları gecikebilir veya geçici olarak hata verebilir. - CVSS puanı tek başına aktif istismar kanıtı değildir; KEV durumu ayrıca gösterilir. - Kritik operasyonel kararlar özgün CISA, NVD, CERT/CC veya üretici duyurusundan doğrulanmalıdır.