Redis je prospěšný pro mnoho věcí, jednou z nich je ukládání do mezipaměti. Redis můžete také použít jako primární úložiště dat nebo dokonce jako náhradu za databázi. Jak ale provedete zabezpečenou instalaci Redis? Instalace Redis může být bolestná, a pokud nebudete opatrní, můžete skončit s mnoha chybami. Naštěstí pro vás tento tutoriál vám pomohl.
V tomto tutoriálu se dozvíte, jak bezpečně nainstalovat Redis na váš systém Linux, spolu s několika tipy, jak se vyhnout běžným chybám.
Čtěte dále a ušetříte si starosti s odstraňováním chyb instalace Redis!
Předpoklady
Tento tutoriál bude praktickou ukázkou. Pokud je chcete sledovat, ujistěte se, že máte následující:
- Počítač Ubuntu 20.04 LTS – Tento výukový program používá Ubuntu 20.04 LTS, ale pokyny jsou podobné pro většinu distribucí Linuxu.
- Oprávnění uživatele root nebo uživatel bez tohoto oprávnění s
sudo
privilegia
Redis Install s APT Package Manager
Existuje několik způsobů, jak nainstalovat Redis na Ubuntu, ale pro tento tutoriál si Redis nainstalujete pomocí správce balíčků APT.
Redis je napsán v C, takže budete muset zkompilovat Redis z jeho zdrojového kódu ručně. Bylo by potřeba nainstalovat několik závislostí a proces sestavování není úplně spolehlivý.
Kompilace Redis ze zdroje se nedoporučuje, ale výhodou je, že si svou instalaci můžete přizpůsobit, pokud chcete. Stáhnete si zdrojový kód a poté jej ručně nakonfigurujete.
Otevřete terminál a spusťte apt update
níže, abyste zajistili, že máte nejnovější seznamy balíčků.
sudo apt update -y
Nyní spusťte apt install
příkaz níže k instalaci Redis na váš počítač.
Níže uvedený příkaz používá apt
správce balíčků ke stažení a instalaci redis-server
balíček z repozitářů Ubuntu na váš počítač. -y
příznak říká apt
automaticky přijímat výzvy během procesu instalace.
sudo apt install redis-server -y
Konfigurace souboru Redis.conf pro spuštění Redis jako služby
Právě jste nainstalovali Redis, ale ještě není připraven k použití. Než budete moci začít používat Redis, musíte nejprve nakonfigurovat redis.conf soubor.
Soubor redis.conf konfigurační soubor je součástí balíčku Redis, který jste nainstalovali, a je uložen v /etc/redis/ adresář ve výchozím nastavení. Tento soubor obsahuje všechny možnosti konfigurace pro Redis.
Přípona souboru .conf je logická, protože se řídí konvenčním vzorem. Mnoho dalších programů používá stejný styl. Webový server Apache například používá pro svůj hlavní konfigurační soubor příponu .conf.
1. Spusťte následující systemctl
příkaz na stop
redis-server
servis. Zastavení provozu služby Redis je doporučeným postupem, když s Redis poprvé začínáte.
sudo systemctl stop redis.service
2. Dále otevřete /etc/redis/redis.conf soubor ve vašem preferovaném textovém editoru.
Najděte dozorovaný a poté jej nastavte na systemd , jak je znázorněno níže, a uložte změny. Tím sdělíte operačnímu systému, aby spustil Redis jako službu.
3. Nyní spusťte systemctl restart
příkazem níže restartujte službu Redis (redis.service
), protože služba Redis o změnách zatím neví.
sudo systemctl restart redis.service
4. Nakonec spusťte systemctl status
níže, abyste zjistili, zda Redis běží.
sudo systemctl status redis.service
Jak můžete vidět níže, výstup ukazuje, že služba Redis běží.
Testování, zda server Redis funguje správně
Nakonfigurovali jste a ověřili, že služba Redis aktivně běží, ale to neznamená, že server Redis funguje. Jak otestovat, zda server Redis funguje správně? Připojte se k serveru Redis a odešlete příkazy, abyste zjistili, zda server odpovídá.
1. Spusťte redis-cli
příkaz níže pro připojení k serveru Redis. redis-cli
je rozhraní příkazového řádku pro Redis, které vám umožňuje odesílat příkazy na server a kontrolovat jeho stav.
redis-cli
Níže můžete zjistit, že se nacházíte ve výzvě serveru Redis (127.0.0.1:6379> ). redis-cli
příkaz se pokusí připojit k serveru Redis na 127.0.0.1:6379
ve výchozím stavu.
2. Dále spusťte ping
níže, abyste zkontrolovali, zda je server Redis dosažitelný.
ping
Jak vidíte, server vrátil PONG , což znamená, že server Redis je dosažitelný a nyní může úspěšně komunikovat se službou.
Možná jste stále skeptičtí; spusťte set
příkaz níže. set
je příkaz Redis, který nastavuje pár klíč-hodnota v databázi.
set test "This is a test"
Jak vidíte, příkaz set vrací „OK “, což znamená, že služba Redis funguje správně.
3. Spusťte exit
příkaz níže pro ukončení redis-cli
. Tím se uzavře připojení k serveru Redis.
exit
Vazba serveru Redis na Localhost
Právě jste otestovali, že server Redis funguje správně, ale může být přístupný i z jiných zařízení ve vaší síti. Toto chování je nežádoucí a obvykle byste chtěli svůj server Redis chránit před cizími lidmi.
Svázáním serveru Redis s localhostem se nastaví chování, že k serveru Redis má přístup pouze počítač, na který jste nainstalovali Redis.
1. Otevřete /etc/redis/redis.conf soubor ve vašem textovém editoru.
2. Najděte řádek, který říká bind 127.0.0.1 ::1
a odkomentujte řádek odstraněním znaku čísla (#
) na začátku řádku.
3. Nyní spusťte níže uvedený příkaz a restartujte redis-server
servis.
sudo systemctl restart redis-server
4. Nakonec spusťte následující příkaz a zkontrolujte, zda je váš server Redis vázán na localhost. netstat -lnp
příkaz uvádí všechna aktivní síťová připojení a grep redis
part filtruje výstup na řádky, které obsahují „redis
.“
-lnp
je zkratka pro Local Name Protocol, síťový protokol používaný systémy typu UNIX k překladu názvů hostitelů na IP adresy.
sudo netstat -lnp | grep redis
Níže můžete vidět, že server Redis nyní naslouchá pouze na rozhraní localhost (127.0.0.1:6379
). Po změně v konfiguračním souboru můžete vidět, že pod vašimi aktivními internetovými připojeními je uvedeno pouze rozhraní localhost (tcp
).
Nyní se žádná jiná zařízení ve vaší síti nemohou připojit k vašemu serveru Redis.
Zabezpečení připojení k serveru Redis pomocí hesla
V tomto okamžiku není Redis nastaven tak, aby vyžadoval od uživatelů ověření pomocí hesla. Kdokoli, kdo zná IP adresu nebo název hostitele vašeho serveru Redis, se k němu může připojit a změnit jeho data.
Jak chráníte svůj server Redis? Nastavte heslo, které bude vyžadovat ověření uživatelů při připojování k vašemu serveru Redis.
1. Znovu otevřete redis.conf konfiguračního souboru ve vašem textovém/kódovém editoru.
2. Dále nastavte silné heslo pomocí následujícího:
- Hledejte
requirepass foobared
podSECURITY
sekce - Smažte znak čísla (
#
) na začátku řádku - Nahraďte
foobared
se silným heslem dle vlastního výběru a uložte změny
3. Spuštěním následujících příkazů restartujte a připojte se k serveru Redis.
sudo systemctl restart redis-server
redis-cli
4. Nyní spusťte ping
příkaz, abyste zjistili, zda dostanete odpověď ze serveru.
ping
Níže můžete vidět chybovou zprávu, která říká Je vyžadováno ověření NOAUTH . Tato zpráva označuje, že pro vzdálený přístup k serveru Redis potřebujete ověřovací heslo.
5. Spusťte níže uvedený auth
následovaný vaším heslem pro ověření vašeho připojení k vašemu serveru Redis.
auth Qae9p_fY:YjdtJ7k
Zobrazí se OK odpověď, když je ověření úspěšné, jako je ta níže.
6. Nakonec znovu spusťte ping
otestujte, zda jste ověřili své připojení k serveru Redis.
ping
Nyní získáte PONG odpověď, jak je uvedeno níže, po ověření vašeho připojení. V tomto okamžiku jste nyní úspěšně ochránili svůj server Redis heslem.
Zakázání nebezpečných příkazů pro ochranu vašeho serveru Redis
Nastavení hesla pro ověření připojení k vašemu serveru Redis neznamená, že získá 100% ochranu. Ve výchozím nastavení obsahuje Redis několik nebezpečných příkazů, které uživatelům umožňují měnit data ve vaší databázi.
Když jsou tyto příkazy spuštěny neoprávněnými uživateli, umožňují vetřelcům číst, upravovat, ničit a dokonce vymazat data vaší databáze Redis.
Níže není uveden úplný seznam, protože váš server Redis může mít další nebezpečné příkazy, ale ve většině případů se jedná o nebezpečné příkazy:
FLUSHDB, FLUSHALL, KEYS, PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF
BGSAVE, SAVE, SPOP, SREM, RENAME, DEBUG, EVAL
Chcete-li svůj server Redis dále zabezpečit, přejmenujte tyto nebezpečné příkazy v redis.conf soubor:
1. Otevřete soubor redis.conf v textovém editoru a vyhledejte Přejmenování příkazu sekce.
Přejmenujte příkazy na prázdný řetězec a deaktivujte je podle níže uvedené syntaxe. Nahraďte the-command
se skutečným příkazem k deaktivaci.
rename-command the-command ""
Například deaktivujte CONFIG
příkaz přejmenováním CONFIG
na prázdný řetězec, jak je znázorněno níže, a poté uložte změny. Dvojité uvozovky (“”) označují prázdný řetězec, který znamená deaktivaci příkazu.
2. Ukončete textový editor a spusťte níže uvedený příkaz pro restartování serveru Redis.
sudo systemctl restart redis-server
3. Nyní spusťte následující příkazy pro připojení k serveru Redis.
redis-cli
auth Qae9p_fY:YjdtJ7k
4. Nakonec spusťte config get
příkaz k otestování CONFIG
příkaz je zakázán.
config get requirepass
Zobrazí se ERR neznámý příkaz config
odpověď, jak je uvedeno níže, což znamená, že CONFIG
příkaz je zakázán.
Pokud config get requirepass
protlačí, požádá váš server Redis o heslo pro ověření připojení k vašemu serveru Redis.
Nyní jste úspěšně přejmenovali nebezpečný příkaz Redis k ochraně vašeho serveru Redis. Nyní pokračujte v deaktivaci dalších nebezpečných příkazů v redis.conf soubor.
Blokování požadavku na připojení k serveru Redis pomocí brány firewall
Dalším způsobem zabezpečení serveru Redis je nastavení brány firewall. Nastavení brány firewall vyžaduje, abyste povolili pouze požadovaný port pro každou ze služeb běžících na vašem serveru.
Pokud například používáte Redis na svém serveru na portu 6379
, pak stačí otevřít tento port. Pokud potřebujete povolit přístup z konkrétní IP adresy nebo rozsahu adres, můžete tyto adresy přidat do pravidel brány firewall.
Chcete-li nastavit bránu firewall, musíte nejprve nainstalovat konfigurační nástroj brány firewall. Tento příklad používá UFW, běžně používaný nástroj pro konfiguraci brány firewall v systému Linux. K nastavení brány firewall však můžete použít i jiný nástroj, například iptables.
1. Spusťte následující příkaz pro instalaci UFW na váš počítač.
sudo apt install ufw -y
2. Dále spusťte níže uvedený příkaz pro povolení UFW.
sudo ufw enable
Když se zobrazí výzva uvedená níže, zadejte „Y“, abyste mohli pokračovat ve spuštění příkazu.
3. Spusťte ufw
příkaz níže pro přidání pravidla, které umožňuje (allow
) provoz na portu 6379
pro váš server Redis. Nahraďte 11.22.33.44
IP adresa s IP adresami vašich zamýšlených uživatelů.
sudo ufw allow from 11.22.33.44 to any port 6379
4. Nakonec spusťte níže uvedený příkaz a ověřte, že jste pravidlo brány firewall přidali úspěšně. Příkaz zkontroluje status
vašeho firewallu.
sudo ufw status
Ve výstupu níže můžete vidět, že firewall je aktivní a má pravidlo povolit provoz na portu 6379
pro Redis z IP adresy 11.22.33.44
.
Nyní všichni uživatelé s IP adresou 11.22.33.44
lze připojit k Redis přes port 6379
a bude se muset ověřit pomocí hesla. Podobným způsobem můžete přidat další porty pro další služby.
Závěr
V tomto tutoriálu jste se naučili, jak nainstalovat a zabezpečit server Redis přejmenováním nebezpečných příkazů na prázdné řetězce a nastavením brány firewall.
S těmito nově získanými znalostmi si můžete užívat všech výhod Redis, aniž byste se museli obávat, že vystavíte svůj server zbytečným rizikům.
Chcete se dozvědět více? Proč nezačít se zabezpečením serveru Redis v Kubernetes?