Jak zkontrolovat, zda ředkvičky fungují?

Dnes budeme hovořit o Redis DBMS, zvážíme proces instalace a konfigurace. Na rozdíl od systémů pro správu relačních databází je Redis open-source NoSQL DBMS, který pracuje s datovými strukturami klíč-hodnota.
Nejprve si ujasněme, co je NoSQL. Představme si, že máme aplikaci, která potřebuje rychle a bez zpoždění zpracovat data různých struktur, které nemají specifickou strukturu. V tomto případě nebude použití „klasických“ relačních databází tím nejlepším řešením, protože tato data budeme muset nejprve nějak strukturovat a teprve potom s nimi pracovat. Při použití NoSQL můžeme použít strukturu klíč-hodnota a být schopni rychle zpracovat nestrukturovaná data. NoSQL se používá jak pro databáze, tak pro implementaci cache a zprostředkovatelů zpráv. NoSQL se zároveň stalo oblíbeným řešením díky snadnému vývoji, funkčnosti, vysokému výkonu a možnosti horizontálního škálování.
Ale vraťme se k Redis DBMS. Redis je úložiště klíčových hodnot v paměti známé pro svou flexibilitu, výkon a širokou jazykovou podporu. Tento systém je zaměřen na dosažení maximálního výkonu při atomických operacích (na základním linuxovém serveru je udáváno cca 100 tisíc požadavků SET a GET za sekundu). Napsáno v C, přístupová rozhraní byla vytvořena pro většinu hlavních programovacích jazyků. Dále si povíme, jak nainstalovat a bezpečně nakonfigurovat Redis na serveru Ubuntu 22.04.
Instalace
Základní instalační proces pro Redis je poměrně jednoduchý. Stačí spustit dva příkazy:
sudo apt update
sudo apt install redis-server
Tím se stáhne a nainstaluje Redis a jeho závislosti. Poté, co jsme úspěšně nainstalovali systém, musíme provést jednu důležitou konfigurační změnu v konfiguračním souboru, který byl vygenerován automaticky během instalace. Otevřete tento soubor v preferovaném textovém editoru:
sudo nano /etc/redis/redis.conf
Uvnitř souboru najděte direktivu pod dohledem. Ve výchozím nastavení je supervidovaná směrnice nastavena na ne. Protože používáme Ubuntu, které používá systém systemd init, změňte to na systemd:

Toto je zatím jediná změna, kterou musíte v konfiguračním souboru Redis provést, takže změny do souboru uložte. Poté restartujte službu Redis, aby se projevily změny, které jste provedli v konfiguračním souboru:
sudo systemctl restart redis.service

Takže jsme nainstalovali a nakonfigurovali Redis a běží na vašem počítači. Než jej však začneme používat, je rozumné nejprve zkontrolovat, zda Redis funguje správně.
K tomu použijeme příkaz

Jako odpověď bychom měli obdržet zprávu PONG. Tímto způsobem je naše instalace Redis plně funkční a připravená k použití. A ve skutečnosti by tento článek mohl být dokončen zde, ale některá výchozí nastavení konfigurace jsou nezabezpečená a poskytují útočníkům příležitost zaútočit a získat přístup k vašemu serveru a jeho datům. Proto budeme dále mluvit o bezpečném nastavení Redis.
Přejděme k obraně
Při použití výchozího nastavení je náš DBMS přístupný pouze z lokálního uzlu. Abyste se o tom ujistili, znovu otevřete konfigurační soubor /etc/redis/redis.conf. Dále najděte vazbu linky. Ujistěte se, že tento řádek je bez komentáře a obsahuje hodnotu 127.0.0.1
. . . bind 127.0.0.1 ::1 . . . Pokud jste museli v souboru provést nějaké změny, musíte službu restartovat:
sudo systemctl restart redis
A podívejme se, kterým portům náš systém naslouchá:
sudo netstat -lnp | grep redis

Tento výstup ukazuje, že program redis-server je vázán na localhost (127.0.0.1). Pokud je v tomto sloupci jiná IP adresa (např. 0.0.0.0), měli byste znovu zkontrolovat, zda jste odkomentovali správný řádek a restartovat službu Redis znovu.
Nyní, když vaše instalace Redis naslouchá pouze na localhost, bude pro útočníky obtížnější odesílat požadavky nebo získat přístup k vašemu serveru. Dále nakonfigurujeme ověřování uživatelů při práci s redis-cli.
Nastavení hesla
Heslo pro přístup k Redis se konfiguruje přímo v konfiguračním souboru Redis /etc/redis/redis.conf, takže tento soubor znovu otevřete a najděte sekci ZABEZPEČENÍ.
A v této části musíte odkomentovat požadovaný přístupový klíč. Pokud však tuto hodnotu ponecháte tak, jak je, použijete heslo, které není příliš složité, foobared, takže po rquiredpass zadejte poměrně složité heslo. Toto bude použito pro přihlášení do redis-cli.

Uložte změny a restartujte Redis:
sudo systemctl restart redis.service
Chcete-li ověřit, zda je heslo správně nakonfigurováno, spusťte redis-cli a přihlaste se.
Nebezpečné příkazy
Další bezpečnostní funkce zabudovaná do Redis zahrnuje přejmenování nebo úplné zakázání určitých příkazů, které jsou považovány za nebezpečné. Jsou-li tyto příkazy prováděny neoprávněnými uživateli, lze je použít k překonfigurování, zničení nebo úpravě vašich dat. Stejně jako dříve při nastavování hesla se přejmenování nebo zakázání příkazů konfiguruje ve stejné části SECURITY souboru /etc/redis/redis.conf.
Některé z příkazů, které jsou považovány za nebezpečné, jsou: FLUSHDB, FLUSHALL, KEYS, PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME a DEBUG.
Například zneužití rodiny příkazů FLUSH* může vést ke smazání dat. Toto není úplný seznam, ale přejmenování nebo zakázání všech příkazů v tomto seznamu je dobrým výchozím bodem pro zlepšení zabezpečení vašeho serveru Redis. Například:
rename-command FLUSHDB "" rename-command FLUSHALL "" rename-command DEBUG "" A pokud nechceme potenciálně nebezpečný příkaz úplně deaktivovat, protože si myslíme, že bychom ho mohli potřebovat ve své práci, můžeme mu dát dlouhý a složitý název. Jako příklad přejmenujme FLUSHDB:
přejmenovat-příkaz FLUSHDB “pleaseflushmydb”
Rozhodnutí o potřebě přejmenovat příkazy zůstává na správci databáze a je určeno potřebami, které má. Pokud víte, že nikdy nepoužijete příkaz, který by mohl zneužít útočník, můžete jej zakázat. V opačném případě může být ve vašem nejlepším zájmu přejmenovat jej na složitější název.
Závěr
V tomto článku jsme hovořili o tom, co je Redis DBMS, jak jej lze nainstalovat a jak lze jeho používání zajistit bezpečnější provedením některých nepříliš složitých, ale užitečných nastavení.
Článek byl připraven v rámci spuštění kurzu „Databáze“. Na stránce kurzu se můžete podrobně seznámit s programem a také se zaregistrovat na bezplatné webináře o migraci mezi clustery PostgreSQL a také o generování analytických reportů clickhouse + superset. Registrujte se, bude to zajímavé.