Redis kurulumu ve güvenliği (Ubuntu): bind, parola ve internete açmama

Linux Sunucu (SSH) 50 görüntülenme Markdown

Redis, çok hızlı çalışan bir bellek içi veri deposudur: önbellek, oturum saklama, kuyruk ve sayaç gibi işler için kullanılır. WordPress ve Laravel gibi uygulamalar yük altında hızlanmak için Redis'i kullanabilir. Kurulumu kolaydır, ama yanlış yapılandırıldığında internetteki botların en sevdiği hedeflerden biri olur: parolasız ve internete açık Redis sunucuları dakikalar içinde ele geçirilir. Güvenli kurulum birkaç ayardan ibarettir.

Kurulum

sudo apt update
sudo apt install -y redis-server
sudo systemctl enable --now redis-server
redis-cli ping

Son komut PONG dönmelidir. Ayar dosyası /etc/redis/redis.conf'tur. Ubuntu paketinin varsayılan ayarları yalnızca yerel dinleme yapar; yine de aşağıdaki ayarları kontrol edin, çünkü sonradan değiştirildiyse ya da başka bir kaynaktan kurulduysa durum farklı olabilir.

1. Yalnızca yerelde dinletin

Redis ile aynı sunucudaki uygulamanız konuşacaksa başka kimsenin ulaşmasına gerek yoktur. redis.conf içinde:

bind 127.0.0.1 -::1
protected-mode yes
port 6379

Doğrulamak için dışarıya açık olmadığını görün: sudo ss -tlnp | grep 6379 çıktısında 127.0.0.1:6379 yazmalı, 0.0.0.0:6379 yazmamalı. Uygulamanız başka bir sunucuda ise Redis'i internete açmak yerine yalnızca o sunucunun adresine izin veren güvenlik duvarı kuralı, özel ağ ya da SSH tüneli kullanın. 6379 portunu hiçbir zaman herkese açmayın: UFW.

2. Parola belirleyin

Yerelde de parola kullanmak, sunucudaki başka bir kullanıcının ya da bir güvenlik açığının Redis'e erişmesini zorlaştırır. Güçlü, rastgele bir parola üretin (openssl rand -base64 32) ve ayara yazın:

requirepass UretilenGucluParola

Uygulamanız bağlanırken bu parolayı kullanmalıdır. Elle denemek için: redis-cli -a 'parola' ping (komut satırında parola görünür; deneme dışında kullanmayın).

3. Bellek sınırı ve politika

Redis verileri bellekte tutar; sınırlanmazsa sunucunun belleğini doldurup öldürülebilir. Önbellek olarak kullanıyorsanız:

maxmemory 256mb
maxmemory-policy allkeys-lru

Bellek dolunca en az kullanılan anahtarlar silinir. Kuyruk ya da kalıcı veri için noeviction gibi farklı bir politika gerekir; yanlış politika veri kaybettirir. Seçimi uygulamanızın belgesine göre yapın.

Değişiklikleri uygulayın

sudo systemctl restart redis-server
redis-cli -a 'parola' info memory | head

Sık sorunlar

  • "Connection refused": Redis çalışmıyor ya da farklı bir adreste/portta dinliyor. systemctl status redis-server ve ss -tlnp ile bakın.
  • "NOAUTH Authentication required": Parola tanımlı ama uygulamanız göndermiyor.
  • "MISCONF Redis is configured to save RDB snapshots": Disk dolu ya da yazma izni yok; Redis yazma işlemlerini durdurdu. Disk alanını kontrol edin: disk doldu.
  • Bellek hızla doluyor: maxmemory tanımlayın ve anahtarlara süre (TTL) verin.

Redis'in ele geçirilmiş olabileceğinden şüphe ediyorsanız (bilinmeyen anahtarlar, beklenmedik CONFIG değişiklikleri): yetkisiz erişim kontrol listesi. WordPress'te nesne önbelleği için Redis kullanımı: WordPress hızlandırma.

Sık sorulanlar

Redis'i uzaktaki uygulamam için açmalı mıyım?

Tercihen hayır. Mümkünse uygulamayı ve Redis'i aynı sunucuda çalıştırın. Zorunluysa güvenlik duvarında yalnızca uygulama sunucusunun IP adresine izin verin ve parola ile TLS kullanın.

Redis verilerimi kalıcı yapar mı?

Varsayılan olarak belirli aralıklarla diske anlık görüntü (RDB) yazar. Önbellek için yeterlidir; kritik veri için AOF'yi etkinleştirin ve yedek alın.

Redis yerine Memcached kullanabilir miyim?

İşlevsel olarak önbellek için ikisi de çalışır. Redis veri yapıları, kuyruk ve kalıcılık gibi ek özellikler sunar, Memcached daha basittir.

İlgili makaleler

Sorununuz çözülmediyse destek talebi açın. Hangi adımı denediğinizi ve ekranda ne gördüğünüzü yazarsanız çözüm çok daha hızlı olur.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.