Redis noto anche come "Server dizionario remoto" è un database open source e in memoria che può essere utilizzato come database, cache e broker di messaggi. Redis supporta varie strutture di dati, come stringhe, hash, elenchi, set e molti altri. Redis è scritto nel linguaggio di programmazione C e funziona nella maggior parte dei sistemi POSIX come Linux, Free BSD e OS X. Redis è ed è in grado di eseguire migliaia di comandi al secondo. Redis viene fornito con un ricco set di funzionalità tra cui replica, failover automatico, scripting Lua, rimozione di chiavi LRU, transazioni e molto altro.
In questo tutorial impareremo come installare e proteggere Redis sul server Debian 10.
Requisiti
- Un server che esegue Debian 10.
- È stata impostata una password di root sul tuo server.
Per iniziare
Prima di iniziare, dovrai aggiornare il tuo sistema con l'ultima versione. Puoi farlo eseguendo il seguente comando:
apt-get update -y
apt-get upgrade -y
Una volta aggiornato il server, riavvia il server per applicare le modifiche.
Installa Redis
Per impostazione predefinita, Redis è disponibile nel repository Debian 10. Puoi installarlo semplicemente eseguendo il seguente comando:
apt-get install redis-server -y
Dopo aver installato Redis, avvia il servizio Redis e abilitalo all'avvio dopo il riavvio del sistema con il seguente comando:
systemctl start redis-server
systemctl enable redis-server
Puoi anche verificare lo stato del server Redis con il seguente comando:
systemctl status redis-server
Dovresti ottenere il seguente output:
? 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.
Per impostazione predefinita, Redis è in ascolto su localhost sulla porta 6379. Puoi verificarlo con il seguente comando:
ps -ef | grep redis
Dovresti vedere il seguente output:
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
Quindi, verifica la connettività Redis con il seguente comando:
redis-cli
Dovresti vedere il seguente output:
127.0.0.1:6379>
Ora controlla la connettività Redis con il comando ping:
127.0.0.1:6379> ping
Se tutto va bene, dovresti vedere il seguente output:
PONG
Una volta che hai finito. Puoi procedere al passaggio successivo.
Configura Redis come cache
Puoi configurare Redis come cache modificando il file /etc/redis/redis.conf:
nano /etc/redis/redis.conf
Aggiungi le seguenti righe alla fine del file:
maxmemory 64mb maxmemory-policy allkeys-lru
Quando viene raggiunta la memoria massima di 64 MB. Redis rimuoverà qualsiasi chiave secondo l'algoritmo LRU. Salva e chiudi il file quando hai finito. Quindi, riavvia il servizio Redis con il seguente comando:
systemctl restart redis-server
Una volta che hai finito. Puoi procedere al passaggio successivo.
Configura l'autenticazione Redis
Per impostazione predefinita, puoi eseguire qualsiasi comando nella shell Redis. Pertanto, si consiglia di configurare l'autenticazione Redis affinché i client richiedano una password prima di eseguire qualsiasi comando. Puoi configurare l'autenticazione della password direttamente nel file di configurazione di Redis. Per farlo, apri il file /etc/redis/redis.conf con il tuo editor preferito:
nano /etc/redis/redis.conf
Nella sezione SICUREZZA trova la seguente riga:
# requirepass foobared
Decommenta e sostituiscila con la password desiderata come mostrato di seguito:
requirepass AlsW34%#df
Salva e chiudi il file quando hai finito. Quindi, riavvia il servizio Redis per applicare le modifiche alla configurazione:
systemctl restart redis-server
Ora accedi alla shell Redis con il seguente comando:
redis-cli
Ora, esegui il seguente comando senza autenticarti:
127.0.0.1:6379> INFO server
Questo non funzionerà perché non ti autentichi. Dovresti ricevere il seguente errore:
NOAUTH Authentication required.
Quindi, esegui il comando seguente per autenticarti con la password specificata nel file di configurazione Redis:
127.0.0.1:6379> AUTH AlsW34%#df
Dovresti ottenere il seguente output:
OK
Ora, esegui di nuovo il comando precedente:
127.0.0.1:6379> INFO server
Questo verrà eseguito correttamente e dovresti vedere il seguente output:
# 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
Una volta che hai finito. Puoi procedere al passaggio successivo.
Rinomina comandi specifici
Per motivi di sicurezza, si consiglia di rinominare alcuni comandi considerati pericolosi.
Qui rinomineremo il comando "config". Il comando config viene utilizzato per recuperare la password Redis. Vediamo con un esempio:
Innanzitutto, connetti e autentica la shell Redis con il seguente comando:
redis-cli
127.0.0.1:6379> AUTH AlsW34%#df
Successivamente, recupera la password Redis con il seguente comando:
127.0.0.1:6379> config get requirepass
Dovresti ottenere il seguente output:
1) "requirepass" 2) "AlsW34%#df" 127.0.0.1:6379>
Puoi rinominare il comando config modificando il file /etc/redis/redis.conf:
nano /etc/redis/redis.conf
Trova la riga seguente:
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
Decommenta e sostituisci con la stringa desiderata:
rename-command CONFIG H2sW_Config
Salva e chiudi il file. Quindi, riavvia il servizio Redis con il seguente comando:
systemctl restart redis-server
Quindi, connetti e autentica la shell Redis con il seguente comando:
redis-cli
127.0.0.1:6379> AUTH AlsW34%#df
Quindi, recupera la password Redis con il comando config:
127.0.0.1:6379> config get requirepass
Abbiamo rinominato questo comando, quindi dovresti ricevere il seguente errore:
(error) ERR unknown command `config`, with args beginning with: `get`, `requirepass`,
Ora, esegui il comando rinominato come mostrato di seguito:
127.0.0.1:6379> H2sW_Config get requirepass
Dovresti ottenere il seguente output:
1) "requirepass" 2) "AlsW34%#df"
Infine, esci dalla shell Redis con il seguente comando:
127.0.0.1:6379> exit
Conclusione
Congratulazioni! hai installato e protetto correttamente il server Redis su Debian 10. Spero che ora tu abbia abbastanza conoscenze per proteggere il tuo server Redis con l'autenticazione della password. Sentiti libero di chiedermi se hai qualche domanda.