Skip to main content

Ubuntu’da Redis Kurulumu ve Üretim Ortamı Güvenliği

Bu rehberde ne öğreneceksiniz?

Bu rehberde, Ubuntu üzerinde Redis’i nasıl kuracağınızı ve onu üretim ortamına uygun şekilde güvenli hale getireceğinizi öğreneceksiniz.
ACL (Access Control Lists), TLS şifreleme, güvenlik duvarı yapılandırması, bellek sınırı ve veri kalıcılığı gibi konular adım adım ele alınmaktadır.

Hedefimiz: Redis’i performanslı, güvenli ve sürdürülebilir hale getirmek 🚀


1. Redis Nedir ve Neden Güvenlik Gerekir?

Redis, bellek tabanlı bir anahtar-değer veri deposudur.
Önbellekleme, mesaj kuyrukları, seans yönetimi gibi yüksek performans gerektiren senaryolarda kullanılır.

Ancak varsayılan Redis kurulumu:

  • Yetkisiz erişime açıktır,
  • Verileri şifrelemeden iletir,
  • Tehlikeli komutlara karşı savunmasızdır.

Bu rehber, Redis’i üretim ortamı güvenlik standartlarına taşımak için gereken tüm adımları içerir.


2. Gereksinimler

  • Ubuntu 20.04 veya üzeri bir sistem
  • Sudo yetkisine sahip root olmayan kullanıcı
  • UFW (Uncomplicated Firewall) aktif olmalı

3. Redis Kurulumu ve İlk Yapılandırma

3.1. Paketleri Güncelleyin

sudo apt update

Sisteminizdeki mevcut paketlerin listesini günceller.

3.2. Redis Sunucusunu Kurun

sudo apt install redis-server -y

Redis ve bağımlılıklarını indirip yükler.

3.3. Redis’i Systemd ile Yönetmek

Yapılandırma dosyasını açın:

sudo nano /etc/redis/redis.conf

supervised yönergesini bulun ve şu şekilde değiştirin:

supervised systemd

Bu, Redis’in systemd tarafından izlenmesini sağlar.

3.4. Servisi Yeniden Başlatın

sudo systemctl restart redis.service

4. Redis’in Çalıştığını Test Etme

4.1. Servis Durumunu Kontrol Edin

sudo systemctl status redis

Aktif görünüyorsa kurulum başarılıdır.

4.2. Komut Satırından Bağlantı Testi

redis-cli
ping

Çıktı:

PONG

4.3. Veri Yazma ve Okuma Testi

set test "Rabisu Bulut'ta Çalışıyor!"
get test

Çıktı:

"Rabisu Bulut'ta Çalışıyor!"

Redis’in verileri başarıyla saklayıp okuduğunu doğrular.


5. Erişimi Yerel Ağ ile Kısıtlama

Redis’in sadece localhost üzerinden erişilebilir olması gerekir.

5.1. redis.conf Dosyasını Kontrol Edin

sudo nano /etc/redis/redis.conf

Şu satırın aktif olduğundan emin olun:

bind 127.0.0.1 ::1

5.2. Servisi Yeniden Başlatın

sudo systemctl restart redis

5.3. Doğrulama

sudo netstat -lnp | grep redis

Çıktıda sadece 127.0.0.1:6379 görünmelidir.


6. ACL ile Kullanıcı Yetkilendirmesi

6.1. Güçlü Parola Oluşturun

openssl rand 60 | openssl base64 -A

6.2. Yeni Kullanıcı Tanımlayın

sudo nano /etc/redis/redis.conf

Aşağıdaki satırları ekleyin:

user default off
user rabisu_user on >güçlü_parolanız ~* &* +@all

Bu, varsayılan kullanıcıyı kapatır ve yalnızca “rabisu_user” hesabını aktif hale getirir.

Servisi yeniden başlatın:

sudo systemctl restart redis

6.3. Test Edin

redis-cli ping
# (error) NOAUTH Authentication required
redis-cli --user rabisu_user --askpass
ping
# PONG

7. TLS ile Şifreli Trafik

Redis’in ağ trafiğini korumak için TLS kullanın.

7.1. Sertifika Dosyaları Oluşturun

sudo mkdir /etc/redis/tls
cd /etc/redis/tls
sudo openssl genrsa -out ca.key 4096
sudo openssl req -x509 -new -nodes -key ca.key -sha256 -days 365 -out ca.crt
sudo openssl genrsa -out redis.key 2048
sudo openssl req -new -key redis.key -out redis.csr
sudo openssl x509 -req -in redis.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out redis.crt -days 365 -sha256
sudo chmod 640 /etc/redis/tls/*
sudo chown redis:redis /etc/redis/tls/*

7.2. TLS Ayarlarını Yapılandırın

sudo nano /etc/redis/redis.conf

Aşağıdaki satırları ekleyin:

port 0
tls-port 6379
tls-cert-file /etc/redis/tls/redis.crt
tls-key-file /etc/redis/tls/redis.key
tls-ca-cert-file /etc/redis/tls/ca.crt

Servisi yeniden başlatın:

sudo systemctl restart redis

7.3. TLS Bağlantısı Testi

redis-cli --user rabisu_user --askpass --tls --cacert /etc/redis/tls/ca.crt

8. Güvenlik Duvarı ve Uzaktan Erişim

8.1. Temel Kurallar

sudo ufw allow OpenSSH
sudo ufw enable

8.2. Belirli IP Adresine Erişim İzni

sudo ufw allow from 203.0.113.55 to any port 6379 proto tcp

8.3. Güvenli Uzaktan Bağlantı Alternatifleri

VPN: WireGuard veya OpenVPN ile özel ağ oluşturun. SSH Tüneli:

ssh -L 8000:127.0.0.1:6379 user@redis-sunucu

Bu yöntemle Redis’e lokal 8000 portundan güvenli şekilde bağlanabilirsiniz.


9. Ek Güvenlik Önlemleri

9.1. Tehlikeli Komutları Engelleme

user rabisu_user on >güçlü_parolanız ~* &* +@read +@write +@connection -@dangerous -FLUSHALL

9.2. Bellek Sınırı ve Politika

maxmemory 2gb
maxmemory-policy allkeys-lru

Bu, DoS saldırılarına karşı koruma sağlar ve en az kullanılan anahtarları siler.

9.3. Unix Soketi Kullanımı

unixsocket /var/run/redis/redis.sock
unixsocketperm 770

9.4. Zaman Aşımı

timeout 300

9.5. AppArmor Koruması

sudo aa-status | grep redis

Redis süreçlerinin sistem kaynaklarına erişimini sınırlar.


10. İzleme ve Log Yönetimi

10.1. Sistem Loglarını İzleyin

sudo journalctl -u redis-server.service -f

Başarısız girişimler veya hataları izleyin.

10.2. Slow Log Etkinleştirme

slowlog-log-slower-than 10000
slowlog-max-len 128

Uzun süren sorguları tespit etmek için kullanılır.


11. Kalıcılık (Persistence) ve Yedekleme

11.1. RDB ve AOF Arasındaki Fark

RDB: Anlık görüntüler (snapshot) alır. Hızlıdır.

AOF: Her yazma işlemini kaydeder, daha güvenlidir.

En iyi sonuç için her iki yöntemi birlikte kullanın.

11.2. Yedekleme Stratejisi

Veri dosyaları genelde /var/lib/redis dizinindedir.

Dosya sahipliği redis:redis olmalıdır.

Yedekleri şifreleyip harici bir ortama aktarın.

Düzenli kurtarma testleri yapın.


Sıkça Sorulan Sorular (SSS)

  1. requirepass yerine neden ACL kullanılmalı?

ACL, birden fazla kullanıcı ve özel izin yönetimi sunar. “En az ayrıcalık” prensibini destekler.

  1. Self-signed sertifikalar üretimde kullanılabilir mi?

Sadece özel ağlarda. İnternet erişimi olan ortamlarda Let's Encrypt gibi CA sertifikaları önerilir.

  1. Redis belleğini nasıl sınırlayabilirim?

maxmemory ve maxmemory-policy direktifleriyle limit ve temizlik politikasını belirleyin.

  1. Veri kaybını nasıl önlerim?

RDB + AOF birlikte kullanın. Böylece hız ve dayanıklılığı dengelemiş olursunuz.

  1. Redis’i neden doğrudan internete açmamalıyım?

Açık port, brute-force ve exploit saldırılarına davetiye çıkarır. SSH tüneli veya VPN kullanın.


🎯 Sonuç

Artık Redis’i yalnızca kurmakla kalmadınız, onu üretim ortamı için güçlendirdiniz. ACL, TLS, firewall, bellek yönetimi ve log izleme adımlarını tamamladınız.

Verilerinizi koruyun, performansınızı artırın. Rabisu Bulut Platformu üzerinde güvenli Redis örneklerinizi şimdi oluşturun!