Redis kurulumu ve güvenliği (Ubuntu): bind, parola ve internete açmama
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-servervess -tlnpile 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:
maxmemorytanı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
- UFW ile port açma ve kapatma (Ubuntu güvenlik duvarı)
- MySQL / MariaDB veritabanı nasıl kurulur ve güvenli kullanılır?
- Yeni Linux sunucuda ilk yapılması gerekenler
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.
Geri bildiriminiz için teşekkürler!