Späť na blog

Ako nainštalovať a zabezpečiť Redis na Ubuntu 18.04

Ako nainštalovať a zabezpečiť Redis na Ubuntu 18.04

Redis je výkonné úložisko kľúčov a hodnôt v pamäti (in-memory), ktoré možno použiť ako databázový server, vyrovnávaciu pamäť (cache) a sprostredkovateľa správ (message broker). Je široko známe svojím rýchlym výkonom, flexibilitou a podporou širokej škály jazykov. Je to bezplatný softvér s otvoreným zdrojovým kódom napísaný v programovacom jazyku C. V tomto návode sa dozviete, ako nainštalovať a zabezpečiť Redis na Ubuntu 18.04.

Požiadavky

Na to, aby ste mohli postupovať podľa tohto návodu, si budete musieť vopred pripraviť niekoľko vecí. Musíte mať server Ubuntu 18.04, ktorý si môžete jednoducho nainštalovať podľa nášho návodu. Okrem toho musíte mať používateľa bez oprávnení root s privilégiami sudo a nakonfigurovaný základný firewall. Môžete to nastaviť podľa našich návodov na konfiguráciu súboru Linux sudoers a nastavenie UFW na cloudovom serveri Ubuntu a Debian.

Teraz poďme začať!

Inštalácia Redis

Redis je priamo dostupný z oficiálneho Ubuntu repozitára. Toto je najjednoduchší spôsob jeho inštalácie a konfigurácie. Odporúčame zvoliť túto cestu, pokiaľ na to neexistujú konkrétne dôvody. Keďže zdrojový kód Redis je k dispozícii zadarmo, je tiež možné zostaviť Redis zo zdrojového kódu. To však neodporúčame, pretože jeho správa a aktualizácia je zložitejšia.

Inštalácia Redis z repozitára Ubuntu

Najprv aktualizujte lokálnu vyrovnávaciu pamäť balíkov APT:

Ďalej nainštalujte Redis pomocou nasledujúceho príkazu:

Inštalácia Redis zo zdrojového kódu

Ubuntu predvolene neobsahuje nástroje na zostavenie a potrebné knižnice. Nasledujúci príkaz nainštaluje všetky potrebné nástroje na zostavenie Redis:

Na zostavenie Redis existujú dve ďalšie závislosti. Tieto závislosti sú potrebné na kompiláciu Redis s ďalšími funkciami, napríklad s podporou TLS, integráciou systemd atď. Ak chcete kompilovať Redis s podporou TLS, nainštalujte balík „libssl-dev“. Ak chcete kompilovať Redis s podporou systemd, nainštalujte balík „libsystemd-dev“:

Zdrojový kód Redis je k dispozícii na GitHub-e. Pozrite si stránku Redis na GitHub-e. Ďalej stiahnite zdrojový kód:

Redis GitHub page

Zmeňte aktuálny aktívny adresár na adresár so zdrojovým kódom Redis:

Potom spustite nástroj make na spustenie kompilácie. Skompiluje Redis bez akýchkoľvek ďalších prvkov:

Ak chcete povoliť podporu TLS (za predpokladu, že je nainštalovaný balík „libssl-dev“), použite namiesto toho nasledujúci príkaz:

Ak chcete povoliť podporu pre systemd (za predpokladu, že je nainštalovaný balík „libsystemd-dev“), použite nasledujúci príkaz:

Ďalej otestujte, či bola kompilácia úspešná. Upozorňujeme, že na spustenie testu môže byť potrebný ďalší balík „tcl-dev“ a súvisiace závislosti:

Nakoniec nainštalujte Redis spustením nasledujúceho príkazu:

Ak bol Redis zostavený pomocou TLS, spustenie servera sa bude musieť vykonať nasledujúcim spôsobom:

Konfigurácia Redis

Po dokončení inštalácie je čas nakonfigurovať Redis. Otvorte konfiguračný súbor Redis v textovom editore a prejdite nadol do sekcie „supervised“:

secure redis 1

Zmeňte hodnotu „supervised“ na „systemd“. Tým sa zabezpečí, že služba Redis bude spravovaná systémom systemd. Aby sa zmeny prejavili, reštartujte službu Redis:

Testovanie Redis

Pred ďalším používaním je vždy dobré otestovať, či Redis funguje správne. Tu je niekoľko spôsobov, ako otestovať správanie Redis. Prvým krokom je skontrolovať, či je služba Redis spustená a aktívna:

Tu už Redis beží. V predvolenom nastavení sa služba Redis spustí pri štarte systému. Ak sa má služba Redis spúšťať manuálne, zakážte ju:

Ďalším testom je kontrola pomocou konzoly Redis. Spustite klientske rozhranie príkazového riadka Redis:

Spustite príkaz „ping“:

Výstup potvrdzuje, že pripojenie k serveru je stále aktívne. Ďalším testom je overenie, či umožňuje nastavovanie kľúčov. Vytvorte kľúč „temp“ s hodnotou „hello world“:

Získajte hodnotu pomocou príkazu „get“:

Ak doteraz všetko funguje správne, Redis by mal bez problémov vrátiť hodnotu kľúča. Zatvorte klientske rozhranie príkazového riadka Redis:

Redis command-line

Posledným testom je kontrola, či Redis dokáže uchovať dáta, aj keď je zastavený alebo reštartovaný. Reštartujte službu Redis:

Ak pri spustení vyššie uvedeného príkazu dostanete chybu, použite príkaz “systemctl enable redis-server”:

Spustite klientske rozhranie príkazového riadka Redis a získajte hodnotu kľúča „temp“, ktorý sme vytvorili predtým:

Týmto je testovanie Redis ukončené. Váš server Redis je teraz pripravený na použitie na požadovaný účel.

Zabezpečenie Redis

V tomto bode je Redis plne funkčný. Niektoré z jeho predvolených konfigurácií však neposkytujú najlepšiu bezpečnosť. Ak sa neaktualizujú, akýkoľvek útočník môže využiť príležitosť na získanie prístupu k serveru a jeho dátam. Táto časť ukáže, ako tieto zraniteľnosti zmierniť. Hoci sú tieto kroky voliteľné, dôrazne sa odporúča ich vykonať na posilnenie bezpečnosti systému.

Viazanie na localhost

V predvolenom nastavení je Redis prístupný iba z localhost. Ak však bol Redis nakonfigurovaný na vzdialenom serveri, konfigurácia sa musí aktualizovať, aby umožňovala pripojenie odkiaľkoľvek. To však nemusí byť také bezpečné ako viazanie na localhost. Ak chcete znova naviazať Redis na localhost, otvorte konfiguračný súbor Redis v textovom editore:

Prejdite nadol a nájdite nasledujúci riadok. Uistite sa, že nie je zakomentovaný:

Binding to localhost

Uložte a zatvorte súbor. Potom reštartujte službu Redis, aby sa zmena prejavila okamžite:

Overte, či bola zmena úspešná:

Ak sa zobrazí chyba ‘netstat: command not found’, použite príkaz na inštaláciu net-tools “sudo apt-get install net-tools”. Výstup overuje, že „redis-server“ je úspešne naviazaný na localhost (127.0.0.1), čo odráža nedávno vykonanú zmenu. Ak je tam iná IP adresa (napríklad 0.0.0.0), znova skontrolujte konfiguračný súbor a reštartujte server Redis.

Konfigurácia hesla pre Redis

Konfigurácia hesla umožňuje použiť vstavanú bezpečnostnú funkciu Redis – príkaz „AUTH“. Vyžaduje, aby sa klienti pred prístupom k databáze autentifikovali. V predvolenom nastavení nemá Redis nakonfigurované žiadne heslo. Heslo musí byť deklarované v konfiguračnom súbore Redis. Otvorte konfiguračný súbor v textovom editore:

Potom prejdite nadol na nasledujúci riadok a odkomentujte ho:

Po odkomentovaní bude predvoleným heslom „foobared“. Zmeňte ho na heslo podľa vlastného výberu. Pokiaľ ide o Redis, sila hesla je dôležitým faktorom. Keďže Redis je vysoko výkonný server, je potenciálne jednoduchšie ho zneužiť pomocou útokov hrubou silou. Preto konfiguračný súbor priamo obsahuje nasledujúce varovanie. Tu je rýchly príklad vygenerovania veľmi silného náhodného hesla. Na vygenerovanie náhodného reťazca použijeme príkaz OpenSSL:

Po nakonfigurovaní nového hesla reštartujte službu Redis, aby sa zmeny prejavili:

Je čas otestovať, či sa heslo úspešne aplikovalo. Spustite konzolu príkazového riadka Redis:

Potom sa pokúste nastaviť nový kľúč:

Redis požiadavku odmietne, pretože pre túto akciu neexistuje overenie totožnosti. Ak chcete na serveri vykonať akúkoľvek akciu, používateľ musí byť najprv autorizovaný. Autorizujte používateľa pomocou nasledujúceho príkazu:

Ak bolo heslo správne, Redis akciu potvrdí. Teraz Redis umožní prístup k funkciám svojho servera:

Nateraz je naša práca s konzolou Redis ukončená. Konzolu môžete zatvoriť:

Premenovanie nebezpečných príkazov

Redis umožňuje premenovať alebo úplne zakázať určité príkazy, ktoré sa považujú za nebezpečné. Toto je ďalšia dôležitá vstavaná bezpečnostná funkcia systému Redis. Prečo sú príkazy považované za nebezpečné? Ak ich spustí neoprávnený používateľ, tieto príkazy môžu prekonfigurovať, zničiť alebo vymazať údaje na serveri. Bežnou praxou je zakázať/premenovať skupinu nebezpečných príkazov Redis. Upozorňujeme, že bezpečnostná hrozba príkazu závisí od situácie. Napríklad niektoré z nasledujúcich príkazov môžu byť potrebné pravidelne. V takýchto prípadoch sa ich zakázanie neodporúča. V takejto situácii sa môže ukázať ako výhodnejšie premenovanie príkazu. Tu je rýchly zoznam príkazov, ktoré sa považujú za nebezpečné. Toto je dobrý východiskový bod pre zvýšenie bezpečnosti servera Redis:

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

Ak chcete príkaz premenovať alebo zakázať, musíte ho deklarovať v konfiguračnom súbore Redis. Otvorte konfiguračný súbor Redis a pridajte nasledujúce riadky. Tu sa používa „rename-command“ na premenovanie príkazov na prázdny reťazec. Pridajte toľko záznamov, koľko je potrebné:

Podobne je možné príkazy premenovať aj na iný názov. V určitých situáciách to môže ponúknuť väčšiu flexibilitu:

rename-command

Uložte súbor a ukončite editor. Aby sa zmeny prejavili, reštartujte službu Redis:

Overte zmeny. Potom spustite konzolu Redis a overte prístup:

Predpokladajme, že príkaz „CONFIG“ bol zakázaný alebo premenovaný. Skúste použiť nasledujúci príkaz „CONFIG“. Zlyhá:

Ak bol príkaz zakázaný, nie je k nemu možný prístup, kým nebude znova povolený. Ak však bol premenovaný, použite nový alias:

command_4

Záver

Tento návod ukazuje, ako nainštalovať, zabezpečiť, nakonfigurovať a overiť inštaláciu Redis. Ukazuje tiež, ako používať vstavané bezpečnostné funkcie Redis, aby bol menej zraniteľný voči útokom. Ak je však už niekto na serveri prihlásený, je pomerne jednoduché obísť bezpečnostné funkcie špecifické pre Redis. Preto je ochrana prístupu k serveru Redis pomocou firewallu kľúčová.

Príjemnú prácu!

author

Hark Labs

Autor · CloudSigma

Preslav Dobrev je kreatívny dizajnér v spoločnosti CloudSigma, ktorý sa zameriava na konzistentnú firemnú identitu prostredníctvom tradičných a inovatívnych marketingových kanálov. Dokáže brilantne spájať umeleckú víziu so strategickým marketingom, čím vytvára pôsobivé príbehy značky.

Komentáre

Zatiaľ žiadne komentáre. Buďte prvý.