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:
|
1 |
sudo apt update |
Ďalej nainštalujte Redis pomocou nasledujúceho príkazu:
|
1 |
sudo apt install redis-server |
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:
|
1 |
sudo apt install git build-essential |
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“:
|
1 |
sudo apt install libssl-dev 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:
|
1 |
git clone https://github.com/redis/redis.git |
Zmeňte aktuálny aktívny adresár na adresár so zdrojovým kódom Redis:
|
1 |
cd redis/ |
Potom spustite nástroj make na spustenie kompilácie. Skompiluje Redis bez akýchkoľvek ďalších prvkov:
|
1 |
make -j$(nproc) |
Ak chcete povoliť podporu TLS (za predpokladu, že je nainštalovaný balík „libssl-dev“), použite namiesto toho nasledujúci príkaz:
|
1 |
make -j$(nproc) BUILD_TLS=yes |
Ak chcete povoliť podporu pre systemd (za predpokladu, že je nainštalovaný balík „libsystemd-dev“), použite nasledujúci príkaz:
|
1 |
make -j$(nproc) USE_SYSTEMD=yes |
Ď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:
|
1 |
make test |
Nakoniec nainštalujte Redis spustením nasledujúceho príkazu:
|
1 |
sudo make install |
Ak bol Redis zostavený pomocou TLS, spustenie servera sa bude musieť vykonať nasledujúcim spôsobom:
|
1 2 |
./utils/gen-test-certs.sh ./runtest --tls |
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“:
|
1 |
sudo vim /etc/redis/redis.conf |
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:
|
1 |
sudo systemctl restart redis.service |
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:
|
1 |
sudo systemctl status redis |
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:
|
1 |
sudo systemctl disable redis |
Ďalším testom je kontrola pomocou konzoly Redis. Spustite klientske rozhranie príkazového riadka Redis:
|
1 |
redis-cli |
Spustite príkaz „ping“:
|
1 |
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“:
|
1 |
set temp “hello world” |
Získajte hodnotu pomocou príkazu „get“:
|
1 |
get temp |
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:
|
1 |
exit |
Posledným testom je kontrola, či Redis dokáže uchovať dáta, aj keď je zastavený alebo reštartovaný. Reštartujte službu Redis:
|
1 |
sudo systemctl restart redis |
Ak pri spustení vyššie uvedeného príkazu dostanete chybu, použite príkaz “systemctl enable redis-server”:
|
1 |
sudo systemctl enable redis-server |
Spustite klientske rozhranie príkazového riadka Redis a získajte hodnotu kľúča „temp“, ktorý sme vytvorili predtým:
|
1 2 |
redis-cli get temp |
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:
|
1 |
sudo vim /etc/redis/redis.conf |
Prejdite nadol a nájdite nasledujúci riadok. Uistite sa, že nie je zakomentovaný:
|
1 |
bind 127.0.0.1 ::1 |
Uložte a zatvorte súbor. Potom reštartujte službu Redis, aby sa zmena prejavila okamžite:
|
1 |
sudo systemctl restart redis |
Overte, či bola zmena úspešná:
|
1 |
sudo netstat -lnp | grep redis |
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:
|
1 |
sudo vim /etc/redis/redis.conf |
Potom prejdite nadol na nasledujúci riadok a odkomentujte ho:
|
1 |
requirepass foobared |
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:
|
1 |
echo $(openssl rand 60 | openssl base64 -A) |
Po nakonfigurovaní nového hesla reštartujte službu Redis, aby sa zmeny prejavili:
|
1 |
sudo systemctl restart redis.service |
Je čas otestovať, či sa heslo úspešne aplikovalo. Spustite konzolu príkazového riadka Redis:
|
1 |
redis-cli |
Potom sa pokúste nastaviť nový kľúč:
|
1 |
set user “cloudsigma” |
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:
|
1 |
auth <heslo> |
Ak bolo heslo správne, Redis akciu potvrdí. Teraz Redis umožní prístup k funkciám svojho servera:
|
1 2 |
set user “cloudsigma” get user |
Nateraz je naša práca s konzolou Redis ukončená. Konzolu môžete zatvoriť:
|
1 |
exit |
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é:
|
1 |
sudo vim /etc/redis/redis.conf |
|
1 2 3 4 |
$ rename-command FLUSHDB "" $ rename-command FLUSHALL "" $ rename-command SHUTDOWN "" $ rename-command CONFIG "" |
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:
|
1 2 3 4 |
$ rename-command FLUSHDB "command_1" $ rename-command FLUSHALL "command_2" $ rename-command SHUTDOWN "command_3" $ rename-command CONFIG "command_4" |
Uložte súbor a ukončite editor. Aby sa zmeny prejavili, reštartujte službu Redis:
|
1 |
sudo systemctl restart redis.service |
Overte zmeny. Potom spustite konzolu Redis a overte prístup:
|
1 2 |
redis-cli auth <heslo> |
Predpokladajme, že príkaz „CONFIG“ bol zakázaný alebo premenovaný. Skúste použiť nasledujúci príkaz „CONFIG“. Zlyhá:
|
1 |
config get requirepass |
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:
|
1 |
command_4 get requirepass |
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!






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