Redis’i Ubuntu 22.04 Üzerine Kurma ve Güvenliğini Sağlama
Redis, açık kaynaklı, bellek içi bir veri yapısı deposudur. Anahtar-değer depolama sistemi olarak bilinse de, aslında dizeler, hash’ler, listeler, kümeler, sıralı kümeler, bit eşlemler, HyperLogLog’lar ve coğrafi dizinler gibi çeşitli veri yapılarını destekler. Olağanüstü hızı, esnekliği ve geniş kullanım alanları sayesinde önbellekleme, oturum yönetimi, gerçek zamanlı analiz, mesajlaşma kuyrukları ve oyun liderlik tabloları gibi birçok modern uygulama için vazgeçilmez bir araç haline gelmiştir. Verileri doğrudan RAM’de tutması, disk tabanlı veritabanlarına kıyasla milisaniyelerden daha kısa yanıt süreleri sunar.
Bu makalede, Redis’i Ubuntu 22.04 sunucunuza nasıl kuracağınızı, temel yapılandırmaları nasıl yapacağınızı ve en önemlisi, üretim ortamlarında Redis kurulumunuzun güvenliğini nasıl sağlayacağınızı ayrıntılı olarak ele alacağız. Redis’in sunduğu performans avantajlarından tam olarak yararlanırken, potansiyel güvenlik risklerini en aza indirmek için gerekli adımları adım adım uygulayacağız.
Giriş: Redis Neden Önemli?
Redis’in popülaritesi, sadece hızıyla sınırlı değildir. Atomik işlemler, yayınlama/abone olma (pub/sub) yetenekleri, Lua betikleri ve işlem desteği gibi özellikler, onu basit bir anahtar-değer deposundan çok daha fazlası yapar. Modern mikro hizmet mimarilerinde, dağıtık sistemlerde ve yüksek performans gerektiren uygulamalarda merkezi bir rol oynar. Ubuntu 22.04 ise, kararlılığı, geniş topluluk desteği ve güncel paketleriyle sunucu ortamları için popüler ve güvenilir bir seçimdir. Bu kombinasyon, güçlü ve güvenli bir Redis dağıtımı için ideal bir temel oluşturur.
Ön Gereksinimler
Bu rehbere başlamadan önce aşağıdaki maddelerin karşılandığından emin olun:
* Ubuntu 22.04 işletim sistemine sahip bir sunucu.
* sudo ayrıcalıklarına sahip bir kullanıcı hesabı.
* Temel Linux komut satırı bilgisi.
* Sunucunun internet erişimi olmalı.
Redis Kurulumu
Redis’i Ubuntu 22.04 üzerine kurmak oldukça basittir. Ubuntu’nun resmi APT depolarında Redis paketleri bulunur, bu da kurulumu kolay ve güvenilir hale getirir.
Sistem Güncellemesi
Kuruluma başlamadan önce sistem paket listelerinizi güncellemek ve mevcut paketleri yükseltmek her zaman iyi bir uygulamadır. Bu, en son güvenlik yamalarına sahip olmanızı ve olası uyumluluk sorunlarını önlemenizi sağlar.
sudo apt update
sudo apt upgrade -y
Bu komutlar, paket listelerini senkronize edecek ve ardından tüm yükseltilebilir paketleri onay istemeden güncelleyecektir.
Redis’i APT Paket Yöneticisi ile Kurma
Sisteminiz güncelledikten sonra Redis sunucusunu aşağıdaki komutla kurabilirsiniz:
sudo apt install redis-server -y
Bu komut, Redis sunucusunu ve gerekli bağımlılıkları yükleyecektir. Kurulum tamamlandıktan sonra Redis servisi otomatik olarak başlatılacak ve sistem açılışında otomatik olarak çalışacak şekilde yapılandırılacaktır.
Kurulumun başarılı olduğunu ve Redis servisinin çalıştığını doğrulamak için aşağıdaki komutları kullanabilirsiniz:
systemctl status redis
Bu komut, Redis servisinin durumunu gösterecektir. Çıktıda active (running) ibaresini görmelisiniz.
Redis’e bağlanıp basit bir komut göndererek de çalışıp çalışmadığını test edebilirsiniz:
redis-cli ping
Eğer Redis düzgün çalışıyorsa, çıktı olarak PONG görmelisiniz. Bu, Redis sunucunuzun istemci bağlantılarını kabul ettiğini gösterir.
Redis Hizmetini Yönetme
Redis bir sistem hizmeti olarak çalıştığı için, onu systemctl komutuyla kolayca yönetebilirsiniz.
* Redis hizmetini başlatma:
sudo systemctl start redis
* Redis hizmetini durdurma:
sudo systemctl stop redis
* Redis hizmetini yeniden başlatma:
sudo systemctl restart redis
* Sistem açılışında Redis’i otomatik başlatmayı etkinleştirme (varsayılan olarak etkindir):
sudo systemctl enable redis
* Sistem açılışında Redis’i otomatik başlatmayı devre dışı bırakma:
sudo systemctl disable redis
* Redis hizmetinin durumunu kontrol etme:
systemctl status redis
Bu komutlar, Redis sunucunuzun yaşam döngüsünü yönetmek için temel araçlardır.
Redis Temel Yapılandırması
Redis’in davranışını özelleştirmek ve performansını optimize etmek için yapılandırma dosyasını düzenlemeniz gerekir. Redis’in ana yapılandırma dosyası Ubuntu’da /etc/redis/redis.conf konumundadır.
Yapılandırma Dosyasına Genel Bakış
Yapılandırma dosyasını bir metin düzenleyici ile açın:
sudo nano /etc/redis/redis.conf
Bu dosya, Redis’in nasıl çalışacağına dair birçok yönerge içerir. Çoğu satır, varsayılan ayarları açıklayan yorumlarla (# ile başlayan satırlar) birlikte gelir. Güvenlik ve performans için en önemli ayarları gözden geçireceğiz.
Bind Adresi Yapılandırması
bind yönergesi, Redis sunucusunun hangi ağ arayüzlerinden gelen bağlantıları dinleyeceğini belirtir. Varsayılan olarak, Redis yalnızca yerel makineden gelen bağlantıları kabul eder.
# If you want to listen for connections from other computers, you should edit
the "bind" configuration directive in redis.conf. For example, if you want
Redis to listen on all interfaces, you can use:
# bind 0.0.0.0
# Or you can bind to multiple interfaces:
# bind 192.168.1.1 10.0.0.1
# By default Redis listens for connections from all the network interfaces
available on the server. It is possible to specify multiple interfaces.
# The default is:
bind 127.0.0.1 -::1
* bind 127.0.0.1 -::1: Bu varsayılan ayar, Redis’in yalnızca yerel IPv4 (127.0.0.1) ve IPv6 (-::1) arayüzlerinden gelen bağlantıları dinlemesini sağlar. Bu, güvenlik için çok önemlidir ve genellikle değiştirilmemelidir. Redis sunucunuzun yalnızca yerel uygulamalar tarafından kullanılması gerekiyorsa, bu ayarı olduğu gibi bırakın.
* UYARI: bind 0.0.0.0 olarak değiştirmek, Redis’in tüm mevcut ağ arayüzlerinden gelen bağlantıları dinlemesine neden olur. Bu, Redis sunucunuzu internete veya yerel ağınızdaki herkese açık hale getirir ve ciddi bir güvenlik riski oluşturur. Uzaktan erişim gerekiyorsa, bunu güvenlik duvarı kuralları, SSH tünelleme veya VPN gibi daha güvenli yöntemlerle yapmalısınız. Bu konuya güvenlik bölümünde daha detaylı değineceğiz.
Port Yapılandırması
port yönergesi, Redis sunucusunun hangi TCP portunu dinleyeceğini belirler. Varsayılan port 6379‘dur.
port 6379
Bu portu değiştirmek, “security by obscurity” (gizleyerek güvenlik sağlama) olarak bilinen çok zayıf bir güvenlik önlemi olsa da, otomatik tarayıcıları ve botları caydırmaya yardımcı olabilir. Ancak bu, gerçek bir güvenlik katmanı değildir ve güçlü kimlik doğrulama ile güvenlik duvarı kurallarının yerini almaz.
Veritabanı Sayısı
databases yönergesi, Redis’in kaç adet veritabanı (0’dan başlayarak indekslenir) sağlayacağını belirler. Varsayılan değer 16‘dır.
databases 16
Çoğu uygulama için tek bir veritabanı yeterlidir, ancak farklı veri kümelerini izole etmek isterseniz bu sayıyı artırabilirsiniz.
Snapshotting (Veri Kalıcılığı) Yapılandırması (RDB)
Redis, verileri bellek içi tuttuğu için, sunucu yeniden başlatıldığında verilerin kaybolmaması için kalıcılık mekanizmalarına ihtiyaç duyar. Redis, iki ana kalıcılık mekanizması sunar: RDB (Redis Database) ve AOF (Append Only File).
RDB, belirli aralıklarla veritabanının anlık görüntülerini (snapshot) disk üzerine kaydeder.
save 900 1 # 900 saniye (15 dakika) içinde en az 1 anahtar değişirse kaydet
save 300 10 # 300 saniye (5 dakika) içinde en az 10 anahtar değişirse kaydet
save 60 10000 # 60 saniye içinde en az 10000 anahtar değişirse kaydet
Bu ayarlar, belirtilen koşullar karşılandığında Redis’in dump.rdb adlı bir dosya oluşturarak veritabanının anlık görüntüsünü kaydetmesini sağlar.
* dbfilename dump.rdb: RDB dosyasının adını belirler.
* dir ./: RDB dosyalarının kaydedileceği dizini belirler. Ubuntu’da varsayılan olarak /var/lib/redis dizini kullanılır. Bu, systemd servisi tarafından yapılandırılır ve genellikle yapılandırma dosyasında dir direktifini değiştirmeniz gerekmez.
* stop-writes-on-bgsave-error yes: Arka planda kaydetme işlemi başarısız olursa Redis’in yazma işlemlerini durdurup durdurmayacağını belirler. yes olarak bırakılması önerilir.
* rdbcompression yes: RDB dosyalarını sıkıştırıp sıkıştırmayacağını belirler. yes olarak bırakılması disk alanından tasarruf sağlar.
* rdbchecksum yes: RDB dosyalarına sağlama toplamı ekleyip eklemeyeceğini belirler. Veri bütünlüğü için yes olarak bırakılması önemlidir.
AOF Kalıcılığı Yapılandırması
AOF (Append Only File), Redis’in aldığı her yazma komutunu bir log dosyasına kaydeder. Bu, RDB’ye göre daha yüksek bir veri kalıcılığı seviyesi sağlar, çünkü veri kaybı yalnızca son fsync işlemine kadar olan verilerle sınırlıdır.
appendonly no
AOF’yi etkinleştirmek için bu satırı yes olarak değiştirin:
appendonly yes
Diğer önemli AOF ayarları:
* appendfilename "appendonly.aof": AOF dosyasının adını belirler.
* appendfsync everysec: AOF dosyasının diske ne sıklıkla senkronize edileceğini belirler.
* always: Her yazma işleminde senkronize eder (en güvenli, en yavaş).
* everysec: Her saniye senkronize eder (iyi bir denge).
* no: İşletim sisteminin takdirine bırakır (en hızlı, en az güvenli).
everysec çoğu durum için iyi bir seçimdir.
* no-appendfsync-on-rewrite no: AOF yeniden yazma işlemi sırasında fsync çağrılarının engellenip engellenmeyeceğini belirler. no olarak bırakılması önerilir.
* auto-aof-rewrite-percentage 100: AOF dosyasının boyutunun ne kadar arttığında otomatik yeniden yazma işleminin tetikleneceğini belirler.
* auto-aof-rewrite-min-size 64mb: AOF dosyasının otomatik yeniden yazma işleminin tetiklenmesi için ulaşması gereken minimum boyutu belirler.
Hem RDB hem de AOF’yi aynı anda kullanabilirsiniz. Bu, en yüksek veri kalıcılığı seviyesini sağlar.
Max Memory Limit
Redis bellek içi bir veritabanı olduğu için, sisteminizdeki belleği tüketebilir. maxmemory yönergesi, Redis’in kullanabileceği maksimum bellek miktarını sınırlar.
# maxmemory
Örneğin, Redis’in 256MB’dan fazla bellek kullanmasını istemiyorsanız:
maxmemory 256mb
maxmemory-policy yönergesi, maxmemory sınırına ulaşıldığında Redis’in hangi anahtarları sileceğini belirler:
maxmemory-policy noeviction
Yaygın politikalar şunlardır:
* noeviction: Bellek sınırına ulaşıldığında yazma işlemlerini reddeder.
* allkeys-lru: Son kullanılan anahtarlar arasında en az kullanılanları siler.
* volatile-lru: Yalnızca TTL (time-to-live) ayarlanmış anahtarlar arasında en az kullanılanları siler.
* allkeys-random: Rastgele anahtarları siler.
* volatile-random: Yalnızca TTL ayarlanmış anahtarlar arasında rastgele siler.
* allkeys-ttl: TTL’si en yakın olan anahtarları siler.
* volatile-ttl: Yalnızca TTL ayarlanmış anahtarlar arasında TTL’si en yakın olanları siler.
Uygulamanızın ihtiyaçlarına göre uygun bir politika seçmelisiniz. Genellikle, önbellekleme senaryoları için allkeys-lru veya volatile-lru tercih edilirken, kritik veriler için noeviction daha güvenli olabilir.
Diğer Önemli Yapılandırma Ayarları
* logfile /var/log/redis/redis-server.log: Redis’in loglarını yazacağı dosyanın yolunu belirler. Bu dosyayı düzenli olarak kontrol etmek, Redis sunucunuzdaki sorunları tespit etmek için önemlidir.
* daemonize yes: Redis’in bir arka plan süreci olarak çalışıp çalışmayacağını belirler. systemd ile yönetildiğinde bu ayarın genellikle no olması beklenir, çünkü systemd kendi başına arka plan süreci yönetimini sağlar. Ancak Ubuntu’daki varsayılan kurulumda redis-server.service dosyası genellikle Redis’in daemonize yes olarak çalışmasını bekler. systemctl status redis çıktısına göre bu ayarı kontrol etmek faydalıdır.
* supervised systemd: Redis’in bir systemd hizmeti olarak denetlendiğini belirtir. Bu, systemd‘nin Redis sürecini doğru bir şekilde yönetmesini sağlar.
Yapılandırma Değişikliklerini Uygulama
/etc/redis/redis.conf dosyasında yaptığınız değişikliklerin geçerli olması için Redis hizmetini yeniden başlatmanız gerekir:
sudo systemctl restart redis
Herhangi bir sorun yaşarsanız, systemctl status redis komutunu ve Redis log dosyasını (/var/log/redis/redis-server.log) kontrol edin.
Redis Güvenliğini Sağlama
Redis, varsayılan olarak hızlı ve kullanımı kolay olacak şekilde tasarlanmıştır, ancak bu, güvenlik konusunda bazı varsayılan zayıflıklar anlamına gelebilir. Üretim ortamlarında Redis’i kullanırken güvenlik önlemlerini almak kritik öneme sahiptir. Açıkta bırakılmış bir Redis sunucusu, veri kaybına, veri sızıntısına veya sunucunuzun ele geçirilmesine yol açabilir.
Temel Güvenlik İlkeleri
* Asla Genel Ağa Açık Bırakmayın: Redis’i internete doğrudan maruz bırakmaktan kaçının. Bu en önemli güvenlik kuralıdır.
* Güçlü Kimlik Doğrulama Kullanın: Her zaman bir şifre (requirepass) belirleyin.
* En Az Ayrıcalık İlkesi: Redis’e yalnızca ihtiyacı olanlara ve ihtiyacı olduğu kadar erişim izni verin.
* Güvenlik Duvarı Kullanın: Redis portuna yalnızca güvenilir IP adreslerinden erişime izin verin.
* Tehlikeli Komutları Devre Dışı Bırakın veya Yeniden Adlandırın: FLUSHALL, KEYS, CONFIG gibi komutlar kötüye kullanılabilir.
* Güncellemeleri Takip Edin: Redis ve işletim sisteminizi düzenli olarak güncelleyin.
* İzleme ve Loglama: Redis loglarını ve sistem metriklerini düzenli olarak izleyin.
Kimlik Doğrulama (AUTH) Yapılandırması
Redis’e erişimi şifre ile korumak, alınması gereken en temel güvenlik önlemidir. requirepass yönergesi ile bir şifre belirleyebilirsiniz.
/etc/redis/redis.conf dosyasını açın:
sudo nano /etc/redis/redis.conf
# requirepass foobared satırını bulun ve yorumunu kaldırarak güçlü bir şifre ile değiştirin:
requirepass sizin_çok_güçlü_şifreniz_buraya
Şifreniz çok güçlü olmalı ve tahmin edilemez olmalıdır. Şifre oluşturmak için openssl gibi araçları kullanabilirsiniz:
openssl rand 60 | openssl base64 -A
Örnek çıktı: sY0L+5sN/yL2p4Q7fG7x5J9zP8mD6r1kH3o0qW8cT7vU6xI5jC4bA3dS2fE1gZ0yXwV
Yapılandırma dosyasını kaydedin ve Redis’i yeniden başlatın:
sudo systemctl restart redis
Artık Redis’e bağlanırken şifre sağlamanız gerekecek:
redis-cli -a sizin_çok_güçlü_şifreniz_buraya
Veya redis-cli içine girdikten sonra:
redis-cli
AUTH sizin_çok_güçlü_şifreniz_buraya
Şifresiz bağlantı denerseniz, Redis (error) NOAUTH Authentication required. hatası verecektir.
Bind Adresi Kısıtlaması (Tekrar Vurgu)
Daha önce de belirtildiği gibi, bind yönergesi Redis’in dinleyeceği IP adreslerini belirler. Güvenlik için, Redis’in yalnızca yerel arayüzden (127.0.0.1) veya güvenilir bir yerel ağ IP’sinden gelen bağlantıları dinlemesini sağlamalısınız.
bind 127.0.0.1 -::1
Asla bind 0.0.0.0 kullanmayın çünkü bu, Redis’i internetteki herkesin erişimine açar. Eğer uygulamanız Redis’e farklı bir sunucudan erişmek zorundaysa, bu durumda:
1. Güvenlik Duvarı Kullanın: Yalnızca belirli, güvenilir IP adreslerinden gelen bağlantılara izin verin.
2. SSH Tünelleme veya VPN Kullanın: Bu, güvenli bir şekilde uzaktan erişim sağlamanın en iyi yoludur. Redis sunucusunun kendisi hala 127.0.0.1 adresini dinlerken, güvenli bir tünel üzerinden erişim sağlanır.
Güvenlik Duvarı Yapılandırması (UFW)
Ubuntu’da UFW (Uncomplicated Firewall), güvenlik duvarınızı yönetmek için basit bir arayüz sağlar. Redis portu olan 6379’a yalnızca güvenilir kaynaklardan erişime izin vermek için UFW’yi yapılandırmalısınız.
Öncelikle UFW’nin etkin olduğundan emin olun ve SSH erişimine izin verin:
sudo ufw enable
sudo ufw allow OpenSSH
Şimdi Redis portuna erişimi kısıtlayalım:
* Yalnızca yerel ana bilgisayardan (localhost) erişime izin ver:
sudo ufw allow from 127.0.0.1 to any port 6379
Bu, Redis’in varsayılan bind 127.0.0.1 ayarıyla mükemmel bir şekilde eşleşir.
* Belirli bir güvenilir IP adresinden (örneğin, uygulamanızın çalıştığı sunucu) erişime izin ver:
sudo ufw allow from to any port 6379
yerine uygulamanızın veya başka bir sunucunun IP adresini yazın. Bu seçeneği yalnızca Redis’i bind 0.0.0.0 olarak ayarlamışsanız veya belirli bir ağ arayüzünü dinliyorsanız ve o arayüz üzerinden uzaktan erişim gerekiyorsa kullanın. Ancak yine de bu senaryoda bile SSH tünelleme tercih edilmelidir.
* Redis portuna genel erişimi engelle (varsayılan olarak zaten engellenir, ancak açıkça belirtmek isteyebilirsiniz):
sudo ufw deny 6379
Güvenlik duvarı kurallarınızı kontrol edin:
sudo ufw status
Yeniden Adlandırma veya Devre Dışı Bırakma Tehlikeli Komutlar
Redis, bazı güçlü ancak potansiyel olarak tehlikeli komutlara sahiptir. Kötü niyetli bir kullanıcı veya hatalı bir uygulama bu komutları kullanarak veri kaybına, bilgi sızıntısına veya hizmet reddine neden olabilir. Bu komutları yeniden adlandırarak veya tamamen devre dışı bırakarak güvenliği artırabilirsiniz.
/etc/redis/redis.conf dosyasında rename-command yönergesini kullanın:
sudo nano /etc/redis/redis.conf
Aşağıdaki komutları yeniden adlandırın veya boş bir dizeyle devre dışı bırakın:
# Tehlikeli komutları devre dışı bırakma (boş bir dizeyle yeniden adlandırma)
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
rename-command KEYS ""
rename-command DEBUG ""
rename-command SHUTDOWN ""
Alternatif olarak, daha az tahmin edilebilir bir isme yeniden adlandırabilirsiniz
rename-command FLUSHALL "temizle_tum_veriler"
rename-command CONFIG "yapilandirma_ayarlari"
* FLUSHALL ve FLUSHDB: Tüm veritabanlarındaki veya belirli bir veritabanındaki tüm verileri siler.
CONFIG: Redis yapılandırma dosyasına erişim sağlar (okuma/yazma). CONFIG GET ile şifreler dahil hassas bilgiler sızdırılabilir.
* KEYS: Performans açısından pahalı olabilir ve çok büyük veritabanlarında hizmet reddine neden olabilir. Ayrıca anahtar isimlerini açığa çıkarabilir.
* DEBUG: Hata ayıklama ve potansiyel olarak sunucu üzerinde yan etkiler oluşturma yeteneği sağlar.
* SHUTDOWN: Redis sunucusunu kapatır.
Değişiklikleri kaydettikten sonra Redis’i yeniden başlatın:
sudo systemctl restart redis
Redis Kullanıcısı ve İzinleri
Redis, varsayılan olarak redis adlı ayrıcalıksız bir sistem kullanıcısı altında çalışır. Bu iyi bir güvenlik uygulamasıdır, çünkü Redis sürecinin kök (root) ayrıcalıklarıyla çalışmasını önler ve olası güvenlik açıklarının sistemin geri kalanına yayılmasını sınırlar.
Redis veri dizininin (genellikle /var/lib/redis) ve yapılandırma dosyasının (/etc/redis/redis.conf) doğru izinlere sahip olduğundan emin olun. Bu dizinler ve dosyalar yalnızca redis kullanıcısı tarafından yazılabilir olmalı ve diğer kullanıcılar tarafından okunabilir olmalıdır (hassas bilgiler içermeyen log dosyaları hariç).
# Veri dizininin sahibini ve grubunu kontrol edin
sudo chown -R redis:redis /var/lib/redis
Veri dizininin izinlerini kontrol edin (yalnızca sahip yazabilir, diğerleri okuyabilir)
sudo chmod 755 /var/lib/redis
redis.conf dosyası için genellikle root sahibi ve 644 (okuma) veya 640 (sahip okuma/yazma, grup okuma) izinleri uygundur. Hassas bilgiler (şifreler) içerdiğinden, diğer kullanıcıların yazma erişimi olmamalıdır.
Loglama ve İzleme
Redis loglarını düzenli olarak kontrol etmek, anormal davranışları veya güvenlik olaylarını tespit etmek için hayati öneme sahiptir. Log dosyası /var/log/redis/redis-server.log konumundadır.
Logları gerçek zamanlı olarak izlemek için:
tail -f /var/log/redis/redis-server.log
Ayrıca, Redis sunucunuzun performansını ve durumunu izlemek için Prometheus ve Grafana gibi sistem izleme araçlarını kullanmayı düşünün.
SSH Tünelleme ile Uzak Erişim (Güvenli Yöntem)
Eğer uygulamanız Redis’e farklı bir sunucudan erişmek zorundaysa ve Redis’i 127.0.0.1 adresine bağlı tutmak istiyorsanız, SSH tünelleme güvenli bir çözümdür. Bu yöntem, yerel makinenizdeki bir portu, uzak sunucudaki Redis portuna güvenli bir SSH bağlantısı üzerinden yönlendirir.
Uzak sunucunuzda Redis’in bind 127.0.0.1 olarak yapılandırıldığından emin olun.
Yerel makinenizden aşağıdaki komutu çalıştırın:
ssh -N -L 6379:127.0.0.1:6379 user@your_redis_server_ip
* -N: Uzak komut çalıştırmaz.
* -L 6379:127.0.0.1:6379: Yerel makinenizdeki 6379 portunu, uzak sunucudaki 127.0.0.1 adresinin 6379 portuna yönlendirir.
* user: Uzak sunucudaki SSH kullanıcı adınız.
* your_redis_server_ip: Redis sunucunuzun IP adresi.
Bu komutu çalıştırdıktan sonra, yerel makinenizde redis-cli veya uygulamanız, localhost:6379 adresine bağlanarak aslında SSH tüneli üzerinden uzak Redis sunucusuna güvenli bir şekilde erişecektir.
redis-cli -a sizin_çok_güçlü_şifreniz_buraya
Bu bağlantı, SSH tüneli açık olduğu sürece geçerli olacaktır.
Redis Kullanımı ve Test
Redis’i kurup güvenliğini sağladıktan sonra, temel kullanımını ve performansını test etmek isteyebilirsiniz.
Redis CLI ile Bağlantı
Redis istemcisi redis-cli, Redis sunucunuzla etkileşim kurmak için güçlü bir araçtır.
* Yerel Redis’e şifresiz bağlanma (eğer şifre ayarlamadıysanız):
redis-cli
* Yerel Redis’e şifre ile bağlanma:
redis-cli -a sizin_çok_güçlü_şifreniz_buraya
* Uzak bir Redis sunucusuna (SSH tüneli üzerinden veya güvenli bir ağda) bağlanma:
redis-cli -h 127.0.0.1 -p 6379 -a sizin_çok_güçlü_şifreniz_buraya
Bu komutta -h ile ana bilgisayarı (localhost veya uzak IP), -p ile portu ve -a ile şifreyi belirtirsiniz.
Temel Redis Komutları
Bağlandıktan sonra bazı temel Redis komutlarını deneyebilirsiniz:
* Dize (String) komutları:
-cli
SET mykey "Hello Redis"
GET mykey
* Liste (List) komutları:
-cli
LPUSH mylist "item1"
RPUSH mylist "item2"
LRANGE mylist 0 -1
* Hash (Hash) komutları:
-cli
HSET myhash field1 "value1" field2 "value2"
HGET myhash field1
HGETALL myhash
* Küme (Set) komutları:
-cli
SADD myset "member1" "member2"
SMEMBERS myset
* Zaman aşımı (Expiration) komutları:
-cli
SET myexpiringkey "temporary data" EX 60 # 60 saniye sonra silinecek
TTL myexpiringkey
* Sunucu bilgileri:
-cli
INFO # Sunucu hakkında kapsamlı bilgi verir
MONITOR # Gerçek zamanlı olarak Redis'e gelen tüm komutları gösterir (performans etkisi vardır, dikkatli kullanın)
Performans Testi
Redis, performansı test etmek için redis-benchmark adlı yerleşik bir araca sahiptir. Bu araç, Redis sunucunuzun farklı komutlar için ne kadar hızlı yanıt verdiğini ölçmenize olanak tanır.
redis-benchmark -c 100 -n 100000 -a sizin_çok_güçlü_şifreniz_buraya
* -c 100: 100 eşzamanlı bağlantı kullanır.
* -n 100000: Toplam 100.000 istek gönderir.
* -a sizin_çok_güçlü_şifreniz_buraya: Eğer şifre belirlediyseniz, bu parametre ile şifreyi sağlarsınız.
Bu komut, çeşitli Redis komutları (SET, GET, LPUSH vb.) için istek/saniye (requests per second) cinsinden sonuçlar gösterecektir. Bu, Redis sunucunuzun yük altında nasıl performans gösterdiğine dair iyi bir fikir verir.
Sonuç
Bu kapsamlı rehberde, Redis’i Ubuntu 22.04 sunucunuza adım adım nasıl kuracağınızı, temel yapılandırma ayarlarını nasıl yapacağınızı ve en önemlisi, üretim ortamlarında Redis kurulumunuzun güvenliğini nasıl sağlayacağınızı öğrendiniz. Redis’in bellek içi veri yapısı deposu olarak sunduğu eşsiz hız ve esneklik, onu modern uygulamaların vazgeçilmez bir bileşeni haline getirir. Ancak bu gücün, doğru güvenlik önlemleri alınmadan kullanılması ciddi riskler taşıyabilir.
Kurulumun ardından, requirepass ile güçlü bir şifre belirlemek, bind yönergesini yalnızca yerel erişime kısıtlamak ve UFW güvenlik duvarı kuralları ile 6379 numaralı portu korumak, Redis sunucunuzu dış tehditlere karşı korumanın temel adımlarıdır. Ayrıca, FLUSHALL ve CONFIG gibi tehlikeli komutları yeniden adlandırmak veya devre dışı bırakmak, olası kötüye kullanımları engellemek için ek bir güvenlik katmanı sağlar. Uzaktan erişim gereksinimleri için SSH tünelleme gibi güvenli yöntemlerin kullanılması, veri bütünlüğünü ve gizliliğini korumak açısından kritik öneme sahiptir.
Redis’in performansından tam olarak yararlanırken, veri kalıcılığı için RDB ve AOF mekanizmalarını doğru şekilde yapılandırmak ve maxmemory ayarı ile bellek kullanımını kontrol altında tutmak da sunucunuzun kararlılığı için önemlidir. Son olarak, Redis loglarını düzenli olarak izlemek ve sistem güncellemelerini takip etmek, uzun vadeli güvenlik ve performans sürekliliği için vazgeçilmezdir.
Bu adımları uygulayarak, Ubuntu 22.04 üzerinde güvenli, kararlı ve yüksek performanslı bir Redis ortamı oluşturmuş olursunuz. Redis’in sunduğu tüm avantajlardan faydalanırken, verilerinizin ve sisteminizin güvende olduğundan emin olabilirsiniz. Gelecekte, Redis’in ileri düzey özellikleri olan replikasyon (çoğaltma) ve kümeleme (clustering) gibi konuları araştırarak sisteminizin ölçeklenebilirliğini ve dayanıklılığını daha da artırabilirsiniz.
