LinuxOpen Source

Ubuntu 22.04’te Redis Nasıl Kurulur

Adım 1 — Redis’i Yükleme ve Yapılandırma

Resmi Ubuntu depolarından redis yüklemek için APT paket yöneticisini kullanacağız. Bu yazı itibariyle, varsayılan depolarda bulunan sürüm şu şekildedir: 6.0.16.

apt Yerel paket önbelleğinizi güncelleyerek başlayın :

sudo apt update

Ardından şunu yazarak Redis’i yükleyin:

sudo apt install redis-server

Bu, Redis’i ve bağımlılıklarını indirip yükleyecektir. Bunu takiben, kurulum sırasında otomatik olarak oluşturulan Redis yapılandırma dosyasında yapılacak önemli bir yapılandırma değişikliği vardır.

Bu dosyayı tercih ettiğiniz metin düzenleyiciyle açın:

sudo nano /etc/redis/redis.conf

Dosyanın içinde supervised yönergeyi bulun. Bu yönerge, Redis’i bir hizmet olarak yönetmek için bir init sistemi bildirmenize izin vererek, işleyişi üzerinde size daha fazla kontrol sağlar. Yönerge varsayılan supervised olarak ayarlanmıştır . systemd no init sistemini kullanan Ubuntu’yu çalıştırdığınız için bunu şu şekilde değiştirin: systemd/etc/redis/redis.conf

. . .

# If you run Redis from upstart or systemd, Redis can interact with your
# supervision tree. Options:
#   supervised no      - no supervision interaction
#   supervised upstart - signal upstart by putting Redis into SIGSTOP mode
#   supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
#   supervised auto    - detect upstart or systemd method based on
#                        UPSTART_JOB or NOTIFY_SOCKET environment variables
# Note: these supervision methods only signal "process is ready."
#       They do not enable continuous liveness pings back to your supervisor.
supervised systemd

. . .

Bu noktada Redis yapılandırma dosyasında yapmanız gereken tek değişiklik budur, bu nedenle işiniz bittiğinde kaydedin ve kapatın. Dosyayı düzenlemek için kullandıysanız nano, bunu CTRL + XY, ardından tuşlarına basarak yapın ENTER.

Ardından, yapılandırma dosyasında yaptığınız değişiklikleri yansıtmak için Redis hizmetini yeniden başlatın:

sudo systemctl restart redis.service

Bununla, Redis’i kurdunuz ve yapılandırdınız ve makinenizde çalışıyor. Yine de kullanmaya başlamadan önce, Redis’in doğru çalışıp çalışmadığını kontrol etmek akıllıca olacaktır.

Adım 2 — Redis’i Test Etme

Yeni yüklenen tüm yazılımlarda olduğu gibi, yapılandırmasında herhangi bir değişiklik yapmadan önce Redis’in beklendiği gibi çalıştığından emin olmak iyi bir fikirdir. Bu adımda Redis’in doğru çalışıp çalışmadığını kontrol etmenin birkaç yolunu gözden geçireceğiz.

Redis hizmetinin çalışıp çalışmadığını kontrol ederek başlayın:

sudo systemctl status redis

Herhangi bir hata olmadan çalışıyorsa, bu komut aşağıdakine benzer bir çıktı üretecektir:

Output● redis-server.service - Advanced key-value store
     Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2022-06-28 20:40:52 UTC; 4s ago
       Docs: http://redis.io/documentation,
             man:redis-server(1)
   Main PID: 2899 (redis-server)
     Status: "Ready to accept connections"
      Tasks: 5 (limit: 2327)
     Memory: 2.5M
        CPU: 65ms
     CGroup: /system.slice/redis-server.service
             └─2899 "/usr/bin/redis-server 127.0.0.1:6379
. . .

Bu çıktı, Redis’in çalıştığını ve zaten etkin olduğunu, yani sunucu her önyüklendiğinde başlayacak şekilde ayarlandığını gösterir.

Not: Bu ayar, Redis’in birçok yaygın kullanım durumu için arzu edilir. Ancak, sunucunuz her önyüklendiğinde Redis’i manuel olarak başlatmayı tercih ederseniz, bunu aşağıdaki komutla yapılandırabilirsiniz:

sudo systemctl disable redis

Redis’in düzgün çalıştığını test etmek için redis-cli, Redis’in komut satırı istemcisini kullanarak sunucuya bağlanın:

redis-cli

Aşağıdaki komut isteminde, şu ping komutla bağlantıyı test edin:

ping
Output
PONG

Bu çıktı, sunucu bağlantısının hala canlı olduğunu doğrular. Ardından, aşağıdakileri çalıştırarak anahtarları ayarlayabildiğinizi kontrol edin:

set test "It's working!"
Output
OK

Yazarak değeri alın:

get test

Her şeyin çalıştığını varsayarsak, sakladığınız değeri geri alabilirsiniz:

Output"It's working!"

Değeri alabileceğinizi onayladıktan sonra, kabuğa geri dönmek için Redis isteminden çıkın:

exit

Son bir test olarak, Redis’in durdurulduktan veya yeniden başlatıldıktan sonra bile verileri sürdürüp sürdüremeyeceğini kontrol edeceğiz. Bunu yapmak için önce Redis örneğini yeniden başlatın:

sudo systemctl restart redis

Ardından komut satırı istemcisine tekrar bağlanın:

redis-cli

Ve test değerinizin hala mevcut olduğunu onaylayın

get test

Anahtarınızın değerine hala erişilebilir olmalıdır:

Output"It's working!"

İşiniz bittiğinde tekrar kabuğa çıkın:

exit

Bununla, Redis kurulumunuz tamamen çalışır durumda ve kullanıma hazırdır. Ancak, varsayılan yapılandırma ayarlarından bazıları güvenli değildir ve kötü niyetli aktörlere sunucunuza ve verilerine saldırma ve bunlara erişim sağlama fırsatları sunar. Bu eğitimdeki geri kalan adımlar, resmi Redis web sitesinde belirtildiği şekilde bu güvenlik açıklarını azaltmaya yönelik yöntemleri kapsar . Bu adımlar isteğe bağlı olsa ve Redis bunları izlememeyi seçerseniz çalışmaya devam edecek olsa da , sisteminizin güvenliğini güçlendirmek için bunları tamamlamanız şiddetle önerilir.

Adım 3 — localhost’a bağlanma

Varsayılan olarak, Redis’e yalnızca localhost’tan erişilebilir . Ancak, Redis’i bundan farklı bir öğretici izleyerek kurup yapılandırdıysanız, yapılandırma dosyasını herhangi bir yerden bağlantılara izin verecek şekilde güncellemiş olabilirsiniz. Bu, localhost’a bağlanmak kadar güvenli değildir .

Bunu düzeltmek için, düzenlemek üzere Redis yapılandırma dosyasını açın:

sudo nano /etc/redis/redis.conf

Bu satırı bulun ve yorumsuz olduğundan emin olun ( #varsa kaldırın):/etc/redis/redis.conf

. . .
bind 127.0.0.1 ::1
. . .

Bitirdiğinizde dosyayı kaydedin ve kapatın ( CTRL + XY, ardından ‘a basın ENTER).

Ardından, systemd’nin değişikliklerinizi okuduğundan emin olmak için hizmeti yeniden başlatın:

sudo systemctl restart redis

Bu değişikliğin yürürlüğe girdiğini kontrol etmek için aşağıdaki netstat komutu çalıştırın:

sudo netstat -lnp | grep redis
Output
tcp    0  0 127.0.0.1:6379  0.0.0.0:*        LISTEN      14222/redis-server  
tcp6   0  0 ::1:6379   :::*                  LISTEN      14222/redis-server  

Not : netstat Komut, varsayılan olarak sisteminizde bulunmayabilir. Bu durumda, aşağıdaki komutla (bir dizi başka kullanışlı ağ aracıyla birlikte) yükleyebilirsiniz:

sudo apt install net-tools

Bu çıktı, yapılandırma dosyasında az önce yaptığınız değişikliği yansıtan programın localhost’a ( ) redis-serverbağlı olduğunu gösterir. Bu sütunda başka bir IP adresi varsa ( , örneğin), o zaman doğru satırın yorumunu kaldırdığınızı iki kez kontrol etmeli ve Redis hizmetini yeniden başlatmalısınız. 127.0.0.10.0.0.0

Artık Redis kurulumunuz yalnızca localhost’ta dinlendiğinden , kötü niyetli kişilerin sunucunuza istekte bulunması veya erişim sağlaması daha zor olacaktır. Ancak, Redis şu anda kullanıcıların yapılandırmasında veya içerdiği verilerde değişiklik yapmadan önce kimliklerini doğrulamalarını gerektirecek şekilde ayarlanmamıştır. Bunu düzeltmek için Redis, Redis istemcisi ( redis-cli) aracılığıyla değişiklik yapmadan önce kullanıcıların bir parola ile kimlik doğrulamasını zorunlu kılmanıza olanak tanır.

Adım 4 — Redis Parolasını Yapılandırma

Bir Redis parolasının yapılandırılması, iki yerleşik güvenlik özelliğinden birini etkinleştirir – authistemcilerin veritabanına erişmek için kimlik doğrulaması yapmasını gerektiren komut. Parola doğrudan Redis’in yapılandırma dosyasında yapılandırılır /etc/redis/redis.conf, bu nedenle o dosyayı tercih ettiğiniz düzenleyiciyle yeniden açın:

sudo nano /etc/redis/redis.conf

Bölüme gidin ve aşağıdakileri SECURITY okuyan yorumlanmış bir yönerge bulun: /etc/redis/redis.conf

. . .
# requirepass foobared
. . .

Kaldırarak yorumunu kaldırın ve güvenli bir parola #ile değiştirin .foobared

Not: requirepass Dosyadaki yönergenin üstünde redis.conf yorumlu bir uyarı vardır: /etc/redis/redis.conf

. . .
# Warning: since Redis is pretty fast an outside user can try up to
# 150k passwords per second against a good box. This means that you should
# use a very strong password otherwise it will be very easy to break.
#
. . .

Bu nedenle, parolanız olarak çok güçlü ve çok uzun bir değer belirlemeniz önemlidir. Kendiniz bir şifre oluşturmak yerine openssl, aşağıdaki örnekte olduğu gibi rastgele bir şifre oluşturmak için komutu kullanabilirsiniz. Burada gösterildiği gibi , ilk komutun çıktısını ikinci openssl komuta aktararak, bu ilk komut tarafından üretilen tüm satır sonlarını kaldıracaktır:

openssl rand 60 | openssl base64 -A

Bu komut şöyle bir çıktı döndürür:

OutputRBOJ9cCNoGCKhlEBwQLHri1g+atWgn4Xn4HwNUbtzoVxAYxkiYBi7aufl4MILv1nxBqR4L6NNzI0X6cE

Bu komutun çıktısını yeni değer olarak kopyalayıp yapıştırdıktan sonra requirepassşöyle olmalıdır:

/etc/redis/redis.confrequirepass RBOJ9cCNoGCKhlEBwQLHri1g+atWgn4Xn4HwNUbtzoVxAYxkiYBi7aufl4MILv1nxBqR4L6NNzI0X6cE

Şifreyi ayarladıktan sonra dosyayı kaydedip kapatın. Ardından Redis’i yeniden başlatın:

sudo systemctl restart redis.service

Parolanın çalışıp çalışmadığını test etmek için Redis istemcisini açın:

redis-cli

Aşağıda, Redis parolasının çalışıp çalışmadığını test etmek için kullanılan bir dizi komut gösterilmektedir. İlk komut, kimlik doğrulamadan önce bir değere bir anahtar ayarlamaya çalışır:

set key1 10

Kimlik doğrulaması yapmadığınız için bu işe yaramaz, bu nedenle Redis bir hata döndürür:

Output(error) NOAUTH Authentication required.

Sonraki komut, Redis yapılandırma dosyasında belirtilen parolayla kimlik doğrulaması yapar:

auth your_redis_password

Redis şunları kabul eder:

Output
OK

Bundan sonra, önceki komutu tekrar çalıştırmak başarılı olacaktır:

set key1 10
Output
OK

get key1 yeni anahtarın değeri için Redis’i sorgular.

get key1
Output"10"

Kimlik doğrulamasından sonra Redis istemcisinde komutları çalıştırabileceğinizi onayladıktan sonra aşağıdakilerden çıkabilirsiniz redis-cli:

quit

Ardından, yanlışlıkla veya kötü niyetli bir kişi tarafından girilirse verileriniz üzerinde ciddi etkileri olabilecek Redis komutlarını yeniden adlandırmayı gözden geçireceğiz.

Adım 5 — Tehlikeli Komutları Yeniden Adlandırma

Redis’te yerleşik olarak bulunan diğer güvenlik özelliği, tehlikeli olarak kabul edilen belirli komutların yeniden adlandırılmasını veya tamamen devre dışı bırakılmasını içerir.

Yetkisiz kullanıcılar tarafından çalıştırıldığında, bu tür komutlar verilerinizi yeniden yapılandırmak, yok etmek veya başka bir şekilde silmek için kullanılabilir. Kimlik doğrulama parolası gibi, komutları yeniden adlandırma veya devre dışı bırakma, dosyanın aynı SECURITY bölümünde yapılandırılır. /etc/redis/redis.conf

Tehlikeli olarak kabul edilen komutlardan bazıları şunlardır: FLUSHDBFLUSHALLKEYSPEXPIREDELCONFIGSHUTDOWNBGREWRITEAOFBGSAVESAVESPOPSREMRENAMEve DEBUG. Bu kapsamlı bir liste değildir, ancak bu listedeki tüm komutları yeniden adlandırmak veya devre dışı bırakmak, Redis sunucunuzun güvenliğini artırmak için iyi bir başlangıç ​​noktasıdır.

Bir komutu devre dışı bırakmanız veya yeniden adlandırmanız gerekip gerekmediği, özel gereksinimlerinize veya sitenizin gereksinimlerine bağlıdır. Suistimal edilebilecek bir komutu asla kullanmayacağınızı biliyorsanız, devre dışı bırakabilirsiniz. Aksi takdirde, yeniden adlandırmak sizin yararınıza olabilir.

Redis komutlarını yeniden adlandırmak veya devre dışı bırakmak için yapılandırma dosyasını bir kez daha açın:

sudo nano  /etc/redis/redis.conf

Uyarı: Komutların nasıl devre dışı bırakılacağını ve yeniden adlandırılacağını gösteren aşağıdaki adımlar örnektir. Yalnızca sizin için anlamlı olan komutları devre dışı bırakmayı veya yeniden adlandırmayı seçmelisiniz. Redis.io/commands adresinde komutların tam listesini kendiniz gözden geçirebilir ve bunların nasıl kötüye kullanılabileceğini belirleyebilirsiniz .

Bir komutu devre dışı bırakmak için, onu aşağıda gösterildiği gibi boş bir dizeyle (aralarında karakter olmayan bir çift tırnak işaretiyle gösterilir) yeniden adlandırın: /etc/redis/redis.conf

. . .
# It is also possible to completely kill a command by renaming it into
# an empty string:
#
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command DEBUG ""
. . .

Bir komutu yeniden adlandırmak için aşağıdaki örneklerde gösterildiği gibi başka bir ad verin. Yeniden adlandırılan komutların başkaları tarafından tahmin edilmesi zor, ancak sizin için hatırlaması kolay olmalıdır: /etc/redis/redis.conf

. . .
# rename-command CONFIG ""
rename-command SHUTDOWN SHUTDOWN_MENOT
rename-command CONFIG ASC12_CONFIG
. . .

Değişikliklerinizi kaydedin ve dosyayı kapatın.

Bir komutu yeniden adlandırdıktan sonra, Redis’i yeniden başlatarak değişikliği uygulayın:

sudo systemctl restart redis.service

Yeni komutu test etmek için Redis komut satırına girin:

redis-cli

Ardından, kimlik doğrulaması yapın:

auth your_redis_password
Output
OK

Önceki örnekte olduğu gibi CONFIGkomutu yeniden adlandırdığınızı varsayalım . ASC12_CONFIG İlk önce, orijinal CONFIG komutu kullanmayı deneyin. Başarısız olmalı, çünkü yeniden adlandırdınız:

config get requirepass
Output(error) ERR unknown command `config`, with args beginning with:

Ancak yeniden adlandırılan komutu çağırmak başarılı olacaktır. Büyük/küçük harfe duyarlı değildir:

asc12_config get requirepass
Output1) "requirepass"
2) "your_redis_password"

Son olarak, şuradan çıkabilirsiniz redis-cli:

exit

Redis komut satırını zaten kullanıyorsanız ve ardından Redis’i yeniden başlattıysanız, yeniden kimlik doğrulaması yapmanız gerekeceğini unutmayın. Aksi takdirde, bir komut yazarsanız bu hatayı alırsınız:

OutputNOAUTH Authentication required.

UyarıSECURITY : Komutları yeniden adlandırma uygulamasıyla ilgili olarak, bölümün sonunda şu uyarıyı içeren bir uyarı ifadesi vardır /etc/redis/redis.conf: /etc/redis/redis.conf

. . .
# Please note that changing the name of commands that are logged into the
# AOF file or transmitted to replicas may cause problems.
. . .

Muhammed Kerim Koç

1996 yılında Giresun Şebinkarahisarda dünyaya geldim. İlk ve orta öğretimi Şebinkarahisarda tamamladım. Liseyi Şebinkarahisar Anadolu Teknik ve Endüstri Meslek Lisesinde bitirdim. Üniversite için de Şebinkarahisar Teknik Bilimler Meslek Yüksek Okulunda Bilgisayar programcılığını okudum. Üniversite stajı için gelmiş olduğum özel bir firmada işe başladım. 5,5 yıl bu firmadan çalıştıktan sonra farklı bir sektör olan inşaat sektöründe Bilgi teknolojileri Uzmanı olarak 8 ay çalıştım. Daha sonra özel bir şirkette Sistem Network Sorumlusu olarak 4 ay çalıştıktan sonra proje sonlandırılmasından dolayı işten ayrıldım. Tekrar dan 5.5 yıl çalışmış olduğum firmaya Sistem ve Network Yöneticisi olarak geri döndüm ve çalışmaya başladım. Kendimi geliştirmek için Bilge Adam Akademi den Sistem Uzmanlığı eğitimi aldım. Sanallaştırma ve Ağ tarafında kendimi sürekli olarak geliştiriyorum.

İlgili Makaleler

Başa dön tuşu