Ana içeriğe geç

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!