Zpět na blog

Jak nainstalovat a zabezpečit Redis na Ubuntu 18.04

Jak nainstalovat a zabezpečit Redis na Ubuntu 18.04

Redis je výkonné úložiště klíč-hodnota v operační paměti, které lze použít jako databázový server, mezipaměť a zprostředkovatele zpráv. Je široce známé pro svůj rychlý výkon, flexibilitu a podporu široké škály jazyků. Jedná se o bezplatný a open-source software napsaný v programovacím jazyce C. V tomto návodu se dozvíte, jak nainstalovat a zabezpečit Redis na Ubuntu 18.04.

Požadavky

Abyste mohli postupovat podle tohoto návodu, budete si muset předem připravit několik věcí. Musíte mít server Ubuntu 18.04, který můžete snadno nainstalovat podle našeho návodu. Kromě toho musíte mít uživatele bez oprávnění root s právy sudo a nakonfigurovaný základní firewall. To můžete nastavit podle našich návodů na konfiguraci souboru Linux sudoers a nastavení UFW na cloudovém serveru Ubuntu a Debian.

Nyní začněme!

Instalace Redis

Redis je přímo dostupný z oficiálního Ubuntu repozitáře. Toto je nejjednodušší způsob jeho instalace a konfigurace. Doporučujeme jít touto cestou, pokud k tomu nejsou specifické důvody. Vzhledem k tomu, že zdrojový kód Redis je k dispozici zdarma, je také možné sestavit Redis ze zdroje. To však nedoporučujeme, protože jeho správa a aktualizace jsou složitější.

Instalace Redis z repozitáře Ubuntu

Nejprve aktualizujte místní mezipaměť balíčků APT:

Dále nainstalujte Redis pomocí následujícího příkazu:

Instalace Redis ze zdrojového kódu

Ubuntu ve výchozím nastavení neobsahuje nástroje pro sestavení a potřebné knihovny. Následující příkaz nainstaluje všechny potřebné nástroje pro sestavení Redis:

Pro sestavení Redis existují dvě další závislosti. Tyto závislosti jsou nutné pro kompilaci Redis s dalšími funkcemi, například s podporou TLS, integrací systemd atd. Chcete-li kompilovat Redis s podporou TLS, nainstalujte balíček „libssl-dev“. Chcete-li kompilovat Redis s podporou systemd, nainstalujte balíček „libsystemd-dev“:

Zdrojový kód Redis je k dispozici na GitHubu. Podívejte se na stránku Redis na GitHubu. Poté stáhněte zdrojový kód:

Redis GitHub page

Změňte aktuální aktivní adresář na adresář se zdrojovým kódem Redis:

Poté spusťte nástroj make pro zahájení kompilace. Zkompiluje Redis bez jakýchkoli dalších prvků:

Chcete-li povolit podporu TLS (za předpokladu, že je nainstalován balíček „libssl-dev“), použijte místo toho následující příkaz:

Chcete-li povolit podporu pro systemd (za předpokladu, že je nainstalován balíček „libsystemd-dev“), použijte následující příkaz:

Dále otestujte, zda byla kompilace úspěšná. Upozorňujeme, že ke spuštění testu může být vyžadován další balíček „tcl-dev“ a související závislosti:

Nakonec nainstalujte Redis spuštěním následujícího příkazu:

Pokud byl Redis sestaven s použitím TLS, bude nutné spuštění serveru provést následujícím způsobem:

Konfigurace Redis

Po dokončení instalace je čas nakonfigurovat Redis. Otevřete konfigurační soubor Redis v textovém editoru a přejděte dolů do sekce „supervised“:

secure redis 1

Změňte hodnotu „supervised“ na „systemd“. Tím zajistíte, že služba Redis bude spravována systémem. Aby se změny projevily, restartujte službu Redis:

Testování Redis

Před dalším použitím je vždy dobré otestovat, zda Redis funguje správně. Zde je několik způsobů, jak otestovat chování Redis. Prvním krokem je zkontrolovat, zda je služba Redis spuštěna a běží:

Zde již Redis běží. Ve výchozím nastavení se služba Redis spustí při startu systému. Pokud má být služba Redis spouštěna ručně, zakažte ji:

Dalším testem je kontrola pomocí konzole Redis. Spusťte klienta příkazového řádku Redis:

Spusťte příkaz „ping“:

Výstup potvrzuje, že připojení k serveru je stále aktivní. Dalším testem je ověření, zda umožňuje nastavování klíčů. Vytvořte klíč „temp“ s hodnotou „hello world“:

Získejte hodnotu pomocí příkazu „get“:

Pokud vše dosud funguje v pořádku, Redis by měl bez problémů vrátit hodnotu klíče. Zavřete klienta příkazového řádku Redis:

Redis command-line

Závěrečným testem je ověření, zda Redis dokáže uchovat data, i když je zastaven nebo restartován. Restartujte službu Redis:

Pokud při spuštění výše uvedeného příkazu dojde k chybě, použijte příkaz “systemctl enable redis-server”:

Spusťte klienta příkazového řádku Redis a získejte hodnotu klíče „temp“, který jsme vytvořili dříve:

Tím je testování Redis dokončeno. Váš server Redis je nyní připraven k použití pro požadovaný účel.

Zabezpečení Redis

V tomto okamžiku je Redis plně funkční. Některé z jeho výchozích konfigurací však nenabízejí nejlepší zabezpečení. Pokud nebudou aktualizovány, může jakýkoli útočník využít příležitosti k získání přístupu k serveru a jeho datům. Tato část ukáže, jak tato rizika zmírnit. Přestože jsou tyto kroky volitelné, důrazně doporučujeme je dodržet pro zvýšení zabezpečení systému.

Vázání na localhost

Ve výchozím nastavení je Redis přístupný pouze z localhostu. Pokud však byl Redis nakonfigurován na vzdáleném serveru, je nutné konfiguraci aktualizovat, aby bylo povoleno připojení odkudkoli. To však nemusí být tak bezpečné jako vázání na localhost. Chcete-li Redis znovu navázat na localhost, otevřete konfigurační soubor Redis v textovém editoru:

Přejděte dolů a najděte následující řádek. Ujistěte se, že není zakomentovaný:

Binding to localhost

Uložte a zavřete soubor. Poté restartujte službu Redis, aby se změna projevila okamžitě:

Ověřte, zda byla změna úspěšná:

Pokud se zobrazí chyba ‘netstat: command not found’, použijte k instalaci net-tools příkaz “sudo apt-get install net-tools”. Výstup ověřuje, že „redis-server“ je úspěšně navázán na localhost (127.0.0.1), což odráží nedávno provedenou změnu. Pokud je tam jakákoli jiná IP adresa (například 0.0.0.0), znovu zkontrolujte konfigurační soubor a restartujte server Redis.

Konfigurace hesla pro Redis

Konfigurace hesla umožňuje použití vestavěné bezpečnostní funkce Redis – příkazu „AUTH“. Vyžaduje, aby se klienti pro přístup k databázi autentizovali. Ve výchozím nastavení nemá Redis nakonfigurované žádné heslo. Heslo musí být deklarováno v konfiguračním souboru Redis. Otevřete konfigurační soubor v textovém editoru:

Poté přejděte dolů na následující řádek a odkomentujte jej:

Po odkomentování bude výchozím heslem „foobared“. Změňte jej na heslo podle svého výběru. Pokud jde o Redis, síla hesla je velmi důležitým faktorem. Vzhledem k tomu, že Redis je vysoce výkonný server, je potenciálně snazší jej zneužít pomocí útoků hrubou silou. Proto konfigurační soubor přímo obsahuje následující varování. Zde je rychlý příklad vygenerování velmi silného náhodného hesla. K vygenerování náhodného řetězce použijeme příkaz OpenSSL:

Po nakonfigurování nového hesla restartujte službu Redis, aby se změny projevily:

Nyní je čas otestovat, zda bylo heslo úspěšně použito. Spusťte konzoli příkazového řádku Redis:

Poté se pokuste nastavit nový klíč:

Redis požadavek odmítne, protože pro tuto akci neproběhlo ověření. Chcete-li na serveru provést jakoukoli akci, musí být uživatel nejprve autorizován. Autorizujte uživatele pomocí následujícího příkazu:

Pokud bylo heslo správné, Redis akci potvrdí. Nyní Redis povolí přístup ke svým serverovým funkcím:

Prozatím je naše práce s konzolí Redis hotová. Konzoli můžete zavřít:

Přejmenování nebezpečných příkazů

Redis umožňuje přejmenovat nebo zcela zakázat určité příkazy, které jsou považovány za nebezpečné. Jedná se o další důležitou vestavěnou bezpečnostní funkci systému Redis. Proč jsou příkazy považovány za nebezpečné? Pokud je spustí neoprávněný uživatel, mohou tyto příkazy změnit konfiguraci, zničit nebo vymazat data na serveru. Zakázání nebo přejmenování řady nebezpečných příkazů Redis je běžnou praxí. Upozorňujeme, že bezpečnostní hrozba příkazu závisí na situaci. Některé z následujících příkazů mohou být například vyžadovány pravidelně. V takových případech se jejich zakázání nedoporučuje. V takové situaci může být výhodnější příkaz přejmenovat. Zde je rychlý seznam příkazů, které jsou považovány za nebezpečné. To je dobrý výchozí bod pro zvýšení zabezpečení serveru Redis:

  • FLUSHDB
  • FLUSHALL
  • KEYS
  • PEXPIRE
  • DEL
  • CONFIG
  • SHUTDOWN
  • BGREWRITEAOF
  • BGSAVE
  • SAVE
  • SPOP
  • SREM
  • RENAME
  • DEBUG

Chcete-li příkaz přejmenovat nebo zakázat, musí být deklarován v konfiguračním souboru Redis. Otevřete konfigurační soubor Redis a přidejte následující řádky. Zde se k přejmenování příkazů na prázdný řetězec používá „rename-command“. Přidejte tolik položek, kolik je potřeba:

Podobně je také možné přejmenovat příkazy na jiný název. V určitých situacích to může nabídnout větší flexibilitu:

rename-command

Uložte soubor a ukončete editor. Aby se změny projevily, restartujte službu Redis:

Ověřte změny. Dále spusťte konzoli Redis a ověřte přístup:

Předpokládejme, že příkaz „CONFIG“ byl zakázán nebo přejmenován. Zkuste použít následující příkaz „CONFIG“. Selže:

Pokud byl příkaz zakázán, nelze k němu přistupovat, dokud nebude znovu povolen. Pokud však byl přejmenován, použijte nový alias:

command_4

Závěr

Tento návod ukazuje, jak nainstalovat, zabezpečit, nakonfigurovat a ověřit instalaci Redis. Ukazuje také, jak používat vestavěné bezpečnostní funkce systému Redis, aby byl méně zranitelný vůči útokům. Pokud je však již někdo k serveru přihlášen, je poměrně snadné bezpečnostní funkce specifické pro Redis obejít. Proto je klíčové mít firewall pro ochranu přístupu k serveru Redis.

Příjemnou práci!

author

Hark Labs

Autor · CloudSigma

Preslav Dobrev je kreativní designér ve společnosti CloudSigma, který se zaměřuje na konzistentní firemní identitu prostřednictvím tradičních i inovativních marketingových kanálů. Je zdatný v propojování umělecké vize se strategickým marketingem za účelem vytváření působivých příběhů značky.

Komentáře

Zatím žádné komentáře. Buďte první.