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)
- requirepass yerine neden ACL kullanılmalı?
ACL, birden fazla kullanıcı ve özel izin yönetimi sunar. “En az ayrıcalık” prensibini destekler.
- Self-signed sertifikalar üretimde kullanılabilir mi?
Sadece özel ağlarda. İnternet erişimi olan ortamlarda Let's Encrypt gibi CA sertifikaları önerilir.
- Redis belleğini nasıl sınırlayabilirim?
maxmemory ve maxmemory-policy direktifleriyle limit ve temizlik politikasını belirleyin.
- Veri kaybını nasıl önlerim?
RDB + AOF birlikte kullanın. Böylece hız ve dayanıklılığı dengelemiş olursunuz.
- 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!