Redis egy nagy teljesítményű, memóriában működő kulcs-érték tároló, amely adatbázis-szerverként, gyorsítótárként és üzenetközvetítőként is használható. Széles körben ismert gyors teljesítményéről, rugalmasságáról és a nyelvek széles skálájának támogatásáról. Ez egy ingyenes és nyílt forráskódú szoftver, amelyet C programozási nyelven írtak. Ebben az útmutatóban bemutatjuk, hogyan telepítheti és teheti biztonságossá a Redis-t Ubuntu 18.04-en.
Előfeltételek
Az útmutató követéséhez előzetesen fel kell készülnie néhány dologra. Szüksége lesz egy Ubuntu 18.04 szerverre, amelyet könnyen telepíthet az útmutatónkat követve. Emellett szüksége lesz egy sudo jogosultságokkal rendelkező, nem root felhasználóra és egy beállított alapvető tűzfalra. Ezt beállíthatja a Linux sudoers fájl konfigurálásáról és a UFW beállításáról Ubuntu és Debian felhőszervereken szóló útmutatóinkat követve.
Most pedig kezdjük el!
A Redis telepítése
A Redis közvetlenül elérhető a hivatalos Ubuntu tárolóból. Ez a legegyszerűbb módja a telepítésének és konfigurálásának. Javasoljuk, hogy ezt az utat kövesse, hacsak nincsenek különösebb okai az ellenkezőjére. Mivel a Redis forráskódja ingyenesen elérhető, a Redis forrásból történő lefordítása is lehetséges. Ezt azonban nem javasoljuk, mert a kezelése és frissítése nehézkesebb.
A Redis telepítése az Ubuntu tárolóból
Először frissítse a helyi APT csomaggyorsítótárat:
|
1 |
sudo apt update |
Ezután telepítse a Redis-t a következő paranccsal:
|
1 |
sudo apt install redis-server |
A Redis telepítése forrásból
Az Ubuntu alapértelmezés szerint nem tartalmazza a fordítóeszközöket és a szükséges könyvtárakat. A következő parancs telepíti a Redis fordításához szükséges összes eszközt:
|
1 |
sudo apt install git build-essential |
A Redis fordításához két további függőségre van szükség. Ezek a függőségek szükségesek a Redis további funkciókkal (például TLS-támogatás, systemd-integráció stb.) történő fordításához. A Redis TLS-támogatással való fordításához telepítse a „libssl-dev” csomagot. A Redis systemd-támogatással való fordításához telepítse a „libsystemd-dev” csomagot:
|
1 |
sudo apt install libssl-dev libsystemd-dev |
A Redis forráskódja elérhető a GitHubon. Tekintse meg a Redis GitHub oldalát. Ezután töltse le a forráskódot:
|
1 |
git clone https://github.com/redis/redis.git |
Váltson át a Redis forráskód könyvtárára:
|
1 |
cd redis/ |
Ezt követően futtassa a make eszközt a fordítás elindításához. Ez további elemek nélkül fogja lefordítani a Redis-t:
|
1 |
make -j$(nproc) |
A TLS-támogatás engedélyezéséhez (feltételezve, hogy a „libssl-dev” telepítve van), használja inkább a következő parancsot:
|
1 |
make -j$(nproc) BUILD_TLS=yes |
A systemd támogatásának engedélyezéséhez (feltételezve, hogy a „libsystemd-dev” telepítve van), használja a következő parancsot:
|
1 |
make -j$(nproc) USE_SYSTEMD=yes |
Ezután tesztelje, hogy a fordítás sikeres volt-e. Vegye figyelembe, hogy a teszt futtatásához szükség lehet egy további „tcl-dev” csomagra és a kapcsolódó függőségekre:
|
1 |
make test |
Végül telepítse a Redis-t a következő parancs futtatásával:
|
1 |
sudo make install |
Ha a Redis TLS használatával lett lefordítva, akkor a szerver futtatását a következő módon kell elvégezni:
|
1 2 |
./utils/gen-test-certs.sh ./runtest --tls |
A Redis konfigurálása
A telepítés befejezése után ideje konfigurálni a Redis-t. Nyissa meg a Redis konfigurációs fájlját egy szövegszerkesztőben, és görgessen le a „supervised” szakaszhoz:
|
1 |
sudo vim /etc/redis/redis.conf |
Módosítsa a „supervised” értékét „systemd”-re. Ez biztosítja, hogy a Redis szolgáltatást a systemd kezelje. A változtatások érvénybe léptetéséhez indítsa újra a Redis szolgáltatást:
|
1 |
sudo systemctl restart redis.service |
A Redis tesztelése
Mindig jó ötlet tesztelni, hogy a Redis megfelelően működik-e, mielőtt további használatba venné. Íme néhány módszer a Redis működésének tesztelésére. Az első lépés annak ellenőrzése, hogy a Redis szolgáltatás fut-e:
|
1 |
sudo systemctl status redis |
Itt a Redis már fut. Alapértelmezés szerint a Redis szolgáltatás a rendszerindításkor elindul. Ha a Redis szolgáltatást manuálisan szeretné futtatni, tiltsa le:
|
1 |
sudo systemctl disable redis |
A következő teszt az ellenőrzés a Redis konzol segítségével. Indítsa el a Redis parancssori klienst:
|
1 |
redis-cli |
Futtassa a „ping” parancsot:
|
1 |
ping |
A kimenet megerősíti, hogy a kapcsolat a szerverrel továbbra is él. A következő teszt annak ellenőrzése, hogy engedélyezi-e a kulcsok beállítását. Hozzon létre egy „temp” kulcsot „hello world” értékkel:
|
1 |
set temp “hello world” |
Kérje le az értéket a „get” paranccsal:
|
1 |
get temp |
Ha eddig minden jól működik, a Redis-nek probléma nélkül vissza kell adnia a kulcs értékét. Zárja be a Redis parancssori klienst:
|
1 |
exit |
Az utolsó teszt annak ellenőrzése, hogy a Redis képes-e megőrizni az adatokat akkor is, ha leállítják vagy újraindítják. Indítsa újra a Redis szolgáltatást:
|
1 |
sudo systemctl restart redis |
Ha hibaüzenetet kap a fenti parancs futtatása közben, használja a “systemctl enable redis-server” parancsot:
|
1 |
sudo systemctl enable redis-server |
Indítsa el a Redis parancssori klienst, és kérje le a korábban létrehozott „temp” kulcs értékét:
|
1 2 |
redis-cli get temp |
Ezzel a Redis tesztelése befejeződött. A Redis szervere most már készen áll a kívánt célra történő felhasználásra.
A Redis biztonságossá tétele
Ezen a ponton a Redis teljesen működőképes. Azonban néhány alapértelmezett beállítása nem nyújtja a legjobb biztonságot. Ha nem frissítik, bármely rosszindulatú szereplő kihasználhatja a lehetőséget, hogy hozzáférjen a szerverhez és annak adataihoz. Ez a szakasz bemutatja, hogyan lehet csökkenteni ezeket a sebezhetőségeket. Bár ezek a lépések opcionálisak, erősen ajánlott követni őket a rendszer biztonságának megerősítése érdekében.
Hozzárendelés a localhoz (localhost)
Alapértelmezés szerint a Redis csak a localhostról érhető el. Ha azonban a Redis-t egy távoli szerveren konfigurálták, akkor a konfigurációt frissíteni kell, hogy bárhonnan engedélyezze a csatlakozást. Ez azonban nem biztos, hogy olyan biztonságos, mint a localhosthoz való hozzárendelés. A Redis localhosthoz való ismételt hozzárendeléséhez nyissa meg a Redis konfigurációs fájlját egy szövegszerkesztőben:
|
1 |
sudo vim /etc/redis/redis.conf |
Görgessen le, és keresse meg a következőt. Győződjön meg róla, hogy nincs kikommentezve:
|
1 |
bind 127.0.0.1 ::1 |
Mentse és zárja be a fájlt. Ezután indítsa újra a Redis szolgáltatást, hogy a változtatás azonnal életbe lépjen:
|
1 |
sudo systemctl restart redis |
Ellenőrizze, hogy a változtatás sikeres volt-e:
|
1 |
sudo netstat -lnp | grep redis |
Ha a ‘netstat: command not found’ hibaüzenetet kapja, használja a net-tools telepítéséhez a “sudo apt-get install net-tools” parancsot. A kimenet igazolja, hogy a „redis-server” sikeresen hozzá van rendelve a localhosthoz (127.0.0.1), tükrözve a nemrégiben végrehajtott változtatást. Ha bármilyen más IP-cím szerepel (például 0.0.0.0), ellenőrizze újra a konfigurációs fájlt, és indítsa újra a Redis szervert.
Redis jelszó konfigurálása
A jelszó beállítása lehetővé teszi a Redis beépített biztonsági funkciójának – az „AUTH” parancsnak – a használatát. Ez megköveteli az ügyfelektől az azonosítást az adatbázis eléréséhez. Alapértelmezés szerint a Redis-hez nincs jelszó beállítva. A jelszót a Redis konfigurációs fájljában kell megadni. Nyissa meg a konfigurációs fájlt egy szövegszerkesztőben:
|
1 |
sudo vim /etc/redis/redis.conf |
Ezután görgessen le a következő sorhoz, és vegye ki a kommentjelet:
|
1 |
requirepass foobared |
A kommentjel eltávolítása után a „foobared” lesz az alapértelmezett jelszó. Változtassa meg ezt az Ön által választott jelszóra. Amikor a Redis-ről van szó, a jelszó erőssége nagyon fontos tényező. Mivel a Redis egy nagy teljesítményű szerver, potenciálisan könnyebben feltörhető brute-force támadásokkal. Ezért tartalmazza a konfigurációs fájl közvetlenül a következő figyelmeztetést. Íme egy gyors példa egy nagyon erős véletlenszerű jelszó generálására. Az OpenSSL parancsot fogjuk használni egy véletlenszerű karakterlánc generálásához:
|
1 |
echo $(openssl rand 60 | openssl base64 -A) |
Az új jelszó beállítása után indítsa újra a Redis szolgáltatást a változtatások érvénybe léptetéséhez:
|
1 |
sudo systemctl restart redis.service |
Itt az ideje tesztelni, hogy a jelszó sikeresen alkalmazva lett-e. Indítsa el a Redis parancssori konzolt:
|
1 |
redis-cli |
Ezután próbáljon meg beállítani egy új kulcsot:
|
1 |
set user “cloudsigma” |
A Redis elutasítja a kérést, mivel a művelethez nincs hitelesítés. Bármilyen művelet végrehajtásához a szerveren a felhasználónak először engedélyezettnek kell lennie. Engedélyezze a felhasználót a következő paranccsal:
|
1 |
auth <jelszó> |
Ha a jelszó helyes volt, a Redis visszaigazolja a műveletet. Mostantól a Redis engedélyezi a hozzáférést a szerver funkcióihoz:
|
1 2 |
set user “cloudsigma” get user |
Egyelőre végeztünk a Redis konzollal. Bezárhatja a konzolt:
|
1 |
exit |
Veszélyes parancsok átnevezése
A Redis lehetővé teszi bizonyos veszélyesnek ítélt parancsok átnevezését vagy teljes letiltását. Ez a Redis egy másik fontos beépített biztonsági funkciója. Miért minősülnek veszélyesnek a parancsok? Ha egy illetéktelen felhasználó futtatja őket, ezek a parancsok újrakonfigurálhatják, megsemmisíthetik vagy törölhetik a szerveren lévő adatokat. Elterjedt gyakorlat egy sor veszélyes Redis parancs letiltása/átnevezése. Vegye figyelembe, hogy egy parancs biztonsági fenyegetése a helyzettől függ. Például a következő parancsok némelyikére rendszeresen szükség lehet. Ilyen esetekben a letiltásuk nem javasolt. Ilyen helyzetben a parancs átnevezése előnyösebbnek bizonyulhat. Íme egy gyors lista a veszélyesnek ítélt parancsokról. Ez egy jó kiindulópont a Redis szerver biztonságának növeléséhez:
- FLUSHDB
- FLUSHALL
- KEYS
- PEXPIRE
- DEL
- CONFIG
- SHUTDOWN
- BGREWRITEAOF
- BGSAVE
- SAVE
- SPOP
- SREM
- RENAME
- DEBUG
Egy parancs átnevezéséhez vagy letiltásához azt a Redis konfigurációs fájljában kell deklarálni. Nyissa meg a Redis konfigurációs fájlt, és adja hozzá a következő sorokat. Itt a „rename-command” a parancsok üres karakterláncra való átnevezésére szolgál. Adjon hozzá annyi bejegyzést, amennyi szükséges:
|
1 |
sudo vim /etc/redis/redis.conf |
|
1 2 3 4 |
$ rename-command FLUSHDB "" $ rename-command FLUSHALL "" $ rename-command SHUTDOWN "" $ rename-command CONFIG "" |
Hasonlóképpen, a parancsokat más névre is át lehet nevezni. Bizonyos helyzetekben ez nagyobb rugalmasságot biztosíthat:
|
1 2 3 4 |
$ rename-command FLUSHDB "command_1" $ rename-command FLUSHALL "command_2" $ rename-command SHUTDOWN "command_3" $ rename-command CONFIG "command_4" |
Mentse a fájlt, és lépjen ki a szerkesztőből. A változtatások érvénybe léptetéséhez indítsa újra a Redis szolgáltatást:
|
1 |
sudo systemctl restart redis.service |
Ellenőrizze a változtatásokat. Ezután indítsa el a Redis konzolt, és hitelesítse a hozzáférést:
|
1 2 |
redis-cli auth <jelszó> |
Tételezzük fel, hogy a „CONFIG” parancs le lett tiltva vagy át lett nevezve. Próbálja meg használni a következő „CONFIG” parancsot. Nem fog sikerülni:
|
1 |
config get requirepass |
Ha a parancs le lett tiltva, akkor nem érhető el, amíg újra nem engedélyezik. Ha viszont át lett nevezve, használja az új álnevet:
|
1 |
command_4 get requirepass |
Összegzés
Ez az útmutató bemutatja, hogyan kell telepíteni, biztosítani, konfigurálni és ellenőrizni a Redis-telepítést. Azt is bemutatja, hogyan használhatja a Redis beépített biztonsági funkcióit, hogy kevésbé legyen sebezhető a támadásokkal szemben. Ha azonban valaki már be van jelentkezve a szerverre, meglehetősen könnyű megkerülni a Redis-specifikus biztonsági funkciókat. Ezért kulcsfontosságú egy tűzfal használata a Redis-szerverhez való hozzáférés védelmére.
Kellemes számítógép-használatot!






Hozzászólások
Még nincsenek hozzászólások. Legyen Ön az első.