Redis také známý jako "Remote Dictionary Server" je open-source a in-memory databáze, kterou lze použít jako databázi, mezipaměť a zprostředkovatele zpráv. Redis podporuje různé datové struktury, jako jsou řetězce, hash, seznamy, sady a mnoho dalších. Redis je napsán v programovacím jazyce C a funguje ve většině systémů POSIX, jako je Linux, Free BSD a OS X. Redis je schopen spouštět tisíce příkazů za sekundu. Redis přichází s bohatou sadou funkcí včetně replikace, automatického převzetí služeb při selhání, skriptování Lua, vyřazení klíčů LRU, transakcí a mnoha dalších.
V tomto tutoriálu se naučíme, jak nainstalovat a zabezpečit Redis na serveru Debian 10.
Požadavky
- Server se systémem Debian 10.
- Na vašem serveru je nastaveno heslo uživatele root.
Začínáme
Než začnete, budete muset aktualizovat svůj systém na nejnovější verzi. Můžete to provést spuštěním následujícího příkazu:
apt-get update -y
apt-get upgrade -y
Jakmile je váš server aktualizován, restartujte server, aby se změny projevily.
Nainstalovat Redis
Ve výchozím nastavení je Redis k dispozici v úložišti Debian 10. Můžete jej nainstalovat pouhým spuštěním následujícího příkazu:
apt-get install redis-server -y
Po instalaci Redis spusťte službu Redis a povolte její spuštění po restartu systému pomocí následujícího příkazu:
systemctl start redis-server
systemctl enable redis-server
Stav serveru Redis můžete také ověřit pomocí následujícího příkazu:
systemctl status redis-server
Měli byste získat následující výstup:
? redis-server.service - Advanced key-value store Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2019-09-06 05:57:45 EDT; 4s ago Docs: http://redis.io/documentation, man:redis-server(1) Process: 2284 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS) Main PID: 2285 (redis-server) Tasks: 4 (limit: 1138) Memory: 6.8M CGroup: /system.slice/redis-server.service ??2285 /usr/bin/redis-server 127.0.0.1:6379 Sep 06 05:57:45 debian systemd[1]: Starting Advanced key-value store... Sep 06 05:57:45 debian systemd[1]: redis-server.service: Can't open PID file /run/redis/redis-server.pid (yet?) after start: No such file or di Sep 06 05:57:45 debian systemd[1]: Started Advanced key-value store.
Ve výchozím nastavení Redis naslouchá na localhost na portu 6379. Můžete to zkontrolovat pomocí následujícího příkazu:
ps -ef | grep redis
Měli byste vidět následující výstup:
redis 2285 1 0 05:57 ? 00:00:00 /usr/bin/redis-server 127.0.0.1:6379 root 2294 706 0 05:59 pts/0 00:00:00 grep redis
Dále otestujte připojení Redis pomocí následujícího příkazu:
redis-cli
Měli byste vidět následující výstup:
127.0.0.1:6379>
Nyní zkontrolujte připojení Redis pomocí příkazu ping:
127.0.0.1:6379> ping
Pokud je vše v pořádku, měli byste vidět následující výstup:
PONG
Jakmile skončíte. Můžete přejít k dalšímu kroku.
Konfigurovat Redis jako mezipaměť
Redis můžete nakonfigurovat jako mezipaměť úpravou souboru /etc/redis/redis.conf:
nano /etc/redis/redis.conf
Na konec souboru přidejte následující řádky:
maxmemory 64mb maxmemory-policy allkeys-lru
Když je dosaženo maximální paměti 64 MB. Redis odstraní jakýkoli klíč podle algoritmu LRU. Po dokončení uložte a zavřete soubor. Poté restartujte službu Redis pomocí následujícího příkazu:
systemctl restart redis-server
Jakmile skončíte. Můžete přejít k dalšímu kroku.
Konfigurovat Redis Authentication
Ve výchozím nastavení můžete v prostředí Redis spustit jakýkoli příkaz. Proto se doporučuje nakonfigurovat Redis Authentication pro klienty tak, aby před spuštěním jakýchkoli příkazů vyžadovali heslo. Ověřování heslem můžete nakonfigurovat přímo v konfiguračním souboru Redis. Chcete-li tak učinit, otevřete soubor /etc/redis/redis.conf pomocí vašeho preferovaného editoru:
nano /etc/redis/redis.conf
V části SECURITY najděte následující řádek:
# requirepass foobared
Zrušte komentář a nahraďte jej požadovaným heslem, jak je znázorněno níže:
requirepass AlsW34%#df
Po dokončení uložte a zavřete soubor. Poté restartujte službu Redis, abyste použili změny konfigurace:
systemctl restart redis-server
Nyní otevřete prostředí Redis pomocí následujícího příkazu:
redis-cli
Nyní spusťte následující příkaz bez ověření:
127.0.0.1:6379> INFO server
To nebude fungovat, protože se neověříte. Měla by se zobrazit následující chyba:
NOAUTH Authentication required.
Dále spusťte následující příkaz pro ověření pomocí hesla zadaného v konfiguračním souboru Redis:
127.0.0.1:6379> AUTH AlsW34%#df
Měli byste získat následující výstup:
OK
Nyní znovu spusťte předchozí příkaz:
127.0.0.1:6379> INFO server
To proběhne úspěšně a měli byste vidět následující výstup:
# Server redis_version:5.0.3 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:afa0decbb6de285f redis_mode:standalone os:Linux 4.19.0-5-amd64 x86_64 arch_bits:64 multiplexing_api:epoll atomicvar_api:atomic-builtin gcc_version:8.3.0 process_id:2308 run_id:2cf0470a9492deddf98bcc72fa9ec94e941edf6c tcp_port:6379 uptime_in_seconds:50 uptime_in_days:0 hz:10 configured_hz:10 lru_clock:7483371 executable:/usr/bin/redis-server config_file:/etc/redis/redis.conf
Jakmile skončíte. Můžete přejít k dalšímu kroku.
Přejmenovat konkrétní příkazy
Z bezpečnostních důvodů se doporučuje přejmenovat některé příkazy, které jsou považovány za nebezpečné.
Zde přejmenujeme příkaz "config". Příkaz config se používá k načtení hesla Redis. Podívejme se na příklad:
Nejprve se připojte a ověřte Redis shell pomocí následujícího příkazu:
redis-cli
127.0.0.1:6379> AUTH AlsW34%#df
Dále získejte heslo Redis pomocí následujícího příkazu:
127.0.0.1:6379> config get requirepass
Měli byste získat následující výstup:
1) "requirepass" 2) "AlsW34%#df" 127.0.0.1:6379>
Příkaz config můžete přejmenovat úpravou souboru /etc/redis/redis.conf:
nano /etc/redis/redis.conf
Najděte následující řádek:
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
Odkomentujte a nahraďte požadovaným řetězcem:
rename-command CONFIG H2sW_Config
Uložte a zavřete soubor. Poté restartujte službu Redis pomocí následujícího příkazu:
systemctl restart redis-server
Dále se připojte a ověřte Redis shell pomocí následujícího příkazu:
redis-cli
127.0.0.1:6379> AUTH AlsW34%#df
Dále získejte heslo Redis pomocí příkazu config:
127.0.0.1:6379> config get requirepass
Tento příkaz jsme přejmenovali, takže byste měli dostat následující chybu:
(error) ERR unknown command `config`, with args beginning with: `get`, `requirepass`,
Nyní spusťte přejmenovaný příkaz, jak je znázorněno níže:
127.0.0.1:6379> H2sW_Config get requirepass
Měli byste získat následující výstup:
1) "requirepass" 2) "AlsW34%#df"
Nakonec ukončete prostředí Redis pomocí následujícího příkazu:
127.0.0.1:6379> exit
Závěr
Gratulujeme! úspěšně jste nainstalovali a zabezpečili server Redis v Debianu 10. Doufám, že nyní máte dostatek znalostí k zabezpečení serveru Redis pomocí ověřování heslem. Neváhejte se mě zeptat, pokud máte nějaké dotazy.