Merhaba arkadaşlar,
Kendi bilgisayarınızda veya sunucunuzda yerel bir dil modeli çalıştırmak (Ollama, LM Studio, vLLM vb.) mahremiyet ve maliyet açısından harika. Ama yanlış yapılandırılmış bir yerel LLM sunucusu, internete açık ve kimlik doğrulaması olmayan bir kapı haline gelebilir. Araştırmalar, internette binlerce korumasız Ollama örneği bulunduğunu gösteriyor. Bu rehberde Ollama örneği üzerinden yerel LLM sunucularının güvenli yapılandırmasını resmi belgelere dayanarak anlatıyorum. Amaç saldırmak değil, kendi sunucunuzu güvenli kurmak.
Konuda Anlatılacaklar
- Yerel LLM sunucusunun saldırı yüzeyi
- Ollama varsayılanları: bind adresi ve kimlik doğrulama
- Açıkta kalan sunucular: gerçek rakamlar
- CVE-2024-37032 (Probllama)
- Güvenli yapılandırma adımları
- Ters proxy ile kimlik doğrulama
- İzleme ve sertleştirme
Yerel LLM Sunucusunun Saldırı Yüzeyi
Yerel bir LLM sunucusu bir HTTP API sunar. Bu API açığa çıkarsa saldırgan; sizin donanımınızda ücretsiz çıkarım (inference) yapabilir, modelleri listeleyip indirebilir veya silebilir, sistem kaynaklarınızı tüketebilir (OWASP LLM10: Unbounded Consumption) ve bazı durumlarda sunucudaki açıklar üzerinden kod çalıştırabilir. Temel sorun çoğu zaman tek şeydir: API'nin internete, kimlik doğrulaması olmadan açılması. Bulut üzerinde bir GPU sunucusu kiralayıp Ollama kurduğunuzda bu risk daha da büyür, çünkü sunucu zaten herkese açık bir IP'ye sahiptir; tek eksik güvenlik duvarı kuralı bile API'yi dünyaya açabilir.
Ollama Varsayılanları: Bind Adresi ve Kimlik Doğrulama
Resmi Ollama belgelerine (FAQ) göre:
- Ollama varsayılan olarak 127.0.0.1 (localhost), port 11434 dinler. Yani varsayılan halde yalnızca aynı makineden erişilebilir.
- Bind adresini değiştirmek için OLLAMA_HOST ortam değişkeni kullanılır. Örneğin OLLAMA_HOST=0.0.0.0:11434 yaparsanız sunucu tüm ağ arayüzlerinde dinlemeye başlar; loopback-only koruması kalkar.
Açıkta Kalan Sunucular: Gerçek Rakamlar
Bu teorik bir risk değil. Açık kaynak araştırmalarına göre:
- Censys, Eylül 2025'te internette yaklaşık 10.600 açık Ollama örneği tespit etti.
- Cisco'nun Shodan tabanlı araştırması 1.139 açık Ollama sunucusu buldu; bunlardan 214'ü aktif olarak model sunuyordu.
CVE-2024-37032 (Probllama)
Wiz ekibinin bulduğu CVE-2024-37032 ("Probllama"), Ollama'nın 0.1.34 öncesi sürümlerini etkiler. Zafiyet, model yolu çözümlemesinde digest alanının yetersiz doğrulanmasından kaynaklanır ve yol geçişi (path traversal) ile özellikle açığa çıkmış API'li Docker kurulumlarında uzaktan kod çalıştırmaya (RCE) yol açabilir. Çözüm nettir: 0.1.34 veya üzeri sürüme güncelleyin. Bu örnek, yerel LLM araçlarını da diğer yazılımlar gibi güncel tutmanın neden şart olduğunu gösterir.
Sürümünüzü kontrol edin ve güncelleyin (Linux için resmi yöntem):
ollama --version
curl -fsSL https://ollama.com/install.sh | shGüvenli Yapılandırma Adımları
- Varsayılan bind'i koruyun: Gerçekten gerekmedikçe OLLAMA_HOST'u 0.0.0.0 yapmayın; localhost'ta bırakın.
- Güncel tutun: En az 0.1.34, tercihen en güncel sürüm.
- Güvenlik duvarı: 11434 portunu dışarıya kapatın.
systemd ile çalışan bir Ollama'da ortam değişkenini güvenli ayarlamak (resmi belgeye göre):
sudo systemctl edit ollama.service
# [Service] altina:
# Environment="OLLAMA_HOST=127.0.0.1:11434"
sudo systemctl daemon-reload
sudo systemctl restart ollamaPortun dışarıya kapalı olduğunu kendi sunucunuzda doğrulayın (ufw örneği):
sudo ss -tlnp | grep 11434
sudo ufw deny 11434/tcpTers Proxy ile Kimlik Doğrulama
Ollama'yı bir ağ üzerinden paylaşmanız gerekiyorsa, onu doğrudan açmak yerine kimlik doğrulamalı bir ters proxy arkasına koyun. Ollama FAQ'in Nginx örneğini temel alıp üstüne temel kimlik doğrulama (basic auth) ekleyebilirsiniz:
server {
listen 443 ssl;
server_name llm.benimsunucum.local;
location / {
auth_basic "LLM";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://127.0.0.1:11434;
proxy_set_header Host localhost:11434;
}
}Böylece Ollama yalnızca localhost'ta dinlerken, dışarıdan erişim TLS ve parola ile korunur. Kullanıcı dosyasını htpasswd ile oluşturun ve güçlü bir parola seçin.
İleri Seviye: İzleme ve Sertleştirme
- Erişim loglama: Ters proxy loglarını izleyin; beklenmeyen IP'lerden gelen istekleri yakalayın. Elastic gibi SIEM'lerde "Ollama API harici erişim" için hazır kurallar bulunur.
- CORS kısıtı: OLLAMA_ORIGINS'i yalnızca gereken kaynaklarla sınırlayın; gereksiz yere tüm uzantılara izin vermeyin.
- Kaynak sınırı: Eşzamanlı istek ve kuyruk sınırlarını (OLLAMA_NUM_PARALLEL, OLLAMA_MAX_QUEUE) yapılandırarak kaynak tükenmesine karşı koruyun.
- Konteyner izolasyonu: Docker ile çalıştırıyorsanız portu yalnızca gereken arayüze bağlayın (-p 127.0.0.1:11434:11434).
Sonuç
Yerel LLM sunucuları güçlü ama varsayılan güvenli kurulum sizin sorumluluğunuzda. Ollama localhost'ta dinler ve kimlik doğrulaması yoktur; onu 0.0.0.0'a açıp internete bırakmak binlerce örnekte görülen hatadır. Güncel tutun (en az 0.1.34, Probllama yaması), portu kapatın ve paylaşım gerekiyorsa kimlik doğrulamalı ters proxy kullanın. Siz yerel LLM'leri nasıl çalıştırıyorsunuz? Yorumlarda paylaşın.
Kaynakça
- Ollama FAQ (bind, OLLAMA_HOST, Nginx): https://docs.ollama.com/faq
- Ollama, Authentication: https://docs.ollama.com/api/authentication
- Wiz, CVE-2024-37032 (Probllama): https://www.wiz.io/vulnerability-databas...2024-37032
- GitHub Advisory, CVE-2024-37032: https://github.com/advisories/GHSA-8hqg-whrw-pv92
- Censys, Ollama Drama (açık örnekler): https://censys.com/blog/ollama-drama-inv...th-censys/
- Cisco, Detecting Exposed LLM Servers (Shodan/Ollama): https://blogs.cisco.com/security/detecti...-on-ollama
- OWASP LLM10 Unbounded Consumption: https://genai.owasp.org/llm-top-10/
Yasal Uyarı
Bu rehberdeki tüm yapılandırma ve komutlar yalnızca kendi sunucunuzda veya yazılı olarak yetkilendirildiğiniz sistemlerde uygulanmalıdır. İnternette açık bulunan üçüncü taraf LLM sunucularına izinsiz erişim, 5237 sayılı Türk Ceza Kanunu'nun 243, 244 ve 245. maddeleri kapsamında suçtur; "açıkta kalmış" olması erişim için izin anlamına gelmez. TurkTeam yalnızca savunma ve eğitim amaçlı paylaşımları destekler.
Görsel: TurkTeam özgün kapak ve diyagramları
Yasal uyarı: Bu içerik eğitim amaçlıdır. Yalnızca kendi sistemlerinizde veya yazılı izin aldığınız hedeflerde uygulayın (TCK 243-245).
