Ubuntu 20.04 sunucuda Redis kurulumu yapıp, güvenlik ayarlarını yapacağız.
Ön Şartlar
Aşağıdaki makalede anlatıldığı gibi sudo ayrıcalıklarına sahip root olmayan yeni bir kullanıcı oluşturup, UFW güvenlik duvarı ayarlarını yapın.
https://flarumtr.com/d/2035-ubuntu-sifir-sunucu-ilk-kurulumu
Ubuntu Redis Kurulumu ve Yapılandırması
Redis’i yüklemek için Ubuntu deposunu kullanacağız. İlk önce depomuzu güncelleyelim.
sudo apt update
Ardından aşağıdaki komutu yazarak Redis kurulumunu yapın.
sudo apt install redis-server
Yukarıdaki komut Redis’i sunucunuza indirip kuracaktır. Ancak otomatik gelen ayarları değiştirmemiz gerekiyor.
sudo nano /etc/redis/redis.conf
Dosyasını açın. supervised satırını bulun ve karşısına systemd yazın.
supervised systemd
Şimdi dosyayı kaydedip kapatmak için CTRL+X ardından Y ve ENTER tuşlayın.
Ardından, yapılandırma dosyasında yaptığınız değişikliklerin aktif olması için Redis’i yeniden başlatın:
sudo systemctl restart redis.service
Artık Redis Ubuntu 20.04 makinenizde çalışmaya başladı. Kullanmaya başlamadan önce Redis’in doğru çalışıp çalışmadığını test edelim.
Redis’i Testi
Redis’in sunucuda çalışıp çalışmadığını test ederek işe başlayalım.
sudo systemctl status redis
Hatasız çalışıyorsa, bu komut aşağıdakine benzer bir çıktı verecektir:
● redis-server.service - Advanced key-value store
Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-04-30 23:26:54 UTC; 4s ago
Docs: http://redis.io/documentation,
man:redis-server(1)
Process: 36552 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS)
Main PID: 36561 (redis-server)
Tasks: 4 (limit: 2345)
Memory: 1.8M
CGroup: /system.slice/redis-server.service
└─36561 /usr/bin/redis-server 127.0.0.1:6379
Çıkmak için CTRL+Z sonra ENTER tuşlayın.
Redis’i test etmek için Redis’in komut satırı istemcisini kullanacağız.
redis-cli
ping komutla bağlantıyı test edelim :
127.0.0.1:6379 > ping
Çıktısı aşağıdaki gibi olmalı.
PONG
127.0.0.1:6379 > set test "It's working!"
OK
127.0.0.1:6379 > get test
Her şeyin yolunda gittiyse aşağıdaki çıktıyı almalısınız:
"It's working!"
Redis-cli’den çıkmak için:
127.0.0.1:6379 > exit
Son bir test daha yapacağız. Bakalım Redis yeniden başlatıldığında da başarılı bir şekilde çalışmaya devam edecek mi?
sudo systemctl restart redis
Ardından komut satırı Redis istemcisine tekrar bağlanın:
redis-cli
127.0.0.1:6379 > get test
"It's working!"
127.0.0.1:6379 > exit
Localhost’a Bağlama
Redis uzak bağlantılara izin verilecek şekilde yapılandırılabilir ama bu güvenli değildir. Ben bu makalede Redis’i sadece localhost bağlantılarına izin verecek şekilde yapılandıracağım.
Redis yapılandırma dosyasını düzenlemek açın:
sudo nano /etc/redis/redis.conf
bind 127.0.0.1 ::1 satırının başında # (hashtag) varsa kaldırın.
Dosyayı kaydedip kapatın.
Ardından, systemd’nin değişikliklerinizi okuduğundan emin olmak için hizmeti yeniden başlatın:
sudo systemctl restart redis
Değişikliklerin aktif olup olmaığını kontrol etmek için netstat kullanacağız. Eğer sunucunuzda kurulu değilse aşağıdaki komutla kurabilirsiniz.
sudo apt install net-tools
sudo netstat -lnp | grep redis
Outputtcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 14222/redis-server
tcp6 0 0 ::1:6379 :::* LISTEN 14222/redis-server
Artık Redis kurulumunuz yalnızca localhost’u dinlediğine göre, kötü niyetli kişilerin istekte bulunması veya sunucunuza erişim sağlamaları daha zor olacaktır.
Redis Şifresinin Yapılandırılması
Bu adımda Redis için bir şife belirleyeceğiz. Redis şifresi Redis yapılandırma dosyasında bulunur. Bu dosyaya Redis şifresini ekleyeceğiz. Redis şifresinin güçlü bir şifre olması gerekiyor. Şifre belirlemek için en mantıklı çözümlerden biri openssl kullanmaktır.
openssl rand 60 | openssl base64 -A
Çıktısı aşağıdakine benzer bir şifre örneği olacaktır:
RBOJ9cCNoGCKhlEBwQLHri1g+atWgn4Xn4HwNUbtzoVxAYxkiYBi7aufl4MILv1nxBqR4L6NNzI0X6cE
Şimdi bu şifresi Redis yapılandırma dosyasına ekleyeceğiz.
sudo nano /etc/redis/redis.conf
Aşağıdaki bölümü bulun.
requirepass foobared
requirepass foobared satırının başıdna bulunan # kaldırın ve foobared yazan kısmı kaldırın ve yerine belirlediğiniz şifreyi girin.
Yani son görünüm aşağıdakine benzer olmalı.
requirepass RBOJ9cCNoGCKhlEBwQLHri1g+atWgn4Xn4HwNUbtzoVxAYxkiYBi7aufl4MILv1nxBqR4L6NNzI0X6cE
Değişikliklerin aktif olması için Redis’i yeniden başlatın.
sudo systemctl restart redis.service
Şifrenin çalışıp çalışmadığını test etmek için Redis-cli istemcisini açın:
redis-cli
127.0.0.1:6379 > set key1 10
Yukarıdaki komutu girince Redis bir hata vermesi lazım.
(error) NOAUTH Authentication required.
Şimdi belirlediğimiz Redis şifresi doğrulamasını yapalım.
127.0.0.1:6379 > auth buraya_redis_sifresini_yazin
Output
OK
127.0.0.1:6379 > set key1 10
Output
OK
127.0.0.1:6379 > get key1
Output
"10"
127.0.0.1:6379 > quit
Redis Tehlikeli Komutlarını Yeniden Adlandırma
Redis’te varsayılan olarak gelen bi diğer güvenlik özelliği ise tehlikeli olarak kabul edilen komutlardır. Şimdi bu komutları kendi kafamıza göre yeniden adlandıracağız. Kötü niyetli kişilerin bir şekilde sunucunuzu ele geçirirse verilerinizi güvende tutmak için bunu yapmakta fayda var.
Şimdi Redis yapılandırma dosyasını tekrar açalım.
sudo nano /etc/redis/redis.conf
Tehlikeli olarak kabul edilen komutları devre dışı bırakmak için:
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command DEBUG ""
Bir komutu yeniden adlandırmak için ise aşağıdakine benzer giriş yapmanız gerekiyor.
rename-command CONFIG ASC12_CONFIG
Yapılan değişikliklerin aktif olması için Redis’i yeniden başlatın.
sudo systemctl restart redis.service
Sonuç
Ubuntu 20.04 yüklü sunucuda Redis kurulumunu gerçekleştirip, sadece localhost bağlantılarına cevap verecek şekilde yapılandırdık. Ayrıca Redis için bir şifre velirleyip tehlikeli olarak kabul edilen komutların bir kısmını devre dışı bıraktık, bir kısmını ise yeniden adlandırıp Redis sunucusunu güvenli hale getirmiş olduk.