Redis è utile per molte cose, una delle quali è la memorizzazione nella cache. Puoi anche utilizzare Redis come archivio dati principale o anche come sostituto di un database. Ma come si esegue un'installazione Redis sicura? Installare Redis può essere una seccatura e, se non stai attento, potresti ritrovarti con molti errori. Fortunatamente per te, questo tutorial ti ha coperto.
In questo tutorial imparerai come installare Redis in modo sicuro sul tuo sistema Linux, insieme ad alcuni suggerimenti per evitare errori comuni.
Continua a leggere e risparmia il mal di testa dalla risoluzione degli errori di installazione di Redis!
Prerequisiti
Questo tutorial sarà una dimostrazione pratica. Se desideri continuare, assicurati di avere quanto segue:
- Una macchina Ubuntu 20.04 LTS – Questo tutorial utilizza Ubuntu 20.04 LTS, ma le istruzioni sono simili per la maggior parte delle distribuzioni Linux.
- Privilegi di root o utente non root con
sudo
privilegi
Installa Redis con APT Package Manager
Esistono alcuni modi per installare Redis su Ubuntu, ma per questo tutorial, utilizzerai il gestore di pacchetti APT per installare Redis.
Redis è scritto in C, quindi dovresti compilare manualmente Redis dal suo codice sorgente. Dovrebbero essere installate diverse dipendenze e il processo di compilazione non è esattamente infallibile.
La compilazione di Redis dal sorgente non è consigliata, ma il vantaggio è che puoi personalizzare la tua installazione se lo desideri. Scarichi il codice sorgente, quindi lo configuri manualmente.
Apri il tuo terminale ed esegui il apt update
comando di seguito per assicurarti di avere gli elenchi di pacchetti più recenti.
sudo apt update -y
Ora esegui apt install
comando seguente per installare Redis sul tuo computer.
Il comando seguente usa il apt
gestore pacchetti per scaricare e installare redis-server
pacchetto dai repository di Ubuntu sulla tua macchina. Il -y
flag dice a apt
per accettare automaticamente le richieste durante il processo di installazione.
sudo apt install redis-server -y
Configurazione del file Redis.conf per eseguire Redis come servizio
Hai appena installato Redis, ma non è ancora pronto per l'uso. Prima di poter iniziare a utilizzare Redis, devi prima configurare redis.conf file.
Il redis.conf il file di configurazione è incluso nel pacchetto Redis che hai installato ed è archiviato in /etc/redis/ directory per impostazione predefinita. Questo file contiene tutte le opzioni di configurazione per Redis.
L'estensione del file .conf è logica, poiché segue uno schema convenzionale. Molti altri programmi usano questo stesso stile. Il server Web Apache, ad esempio, utilizza l'estensione del file .conf come file di configurazione principale.
1. Esegui il seguente systemctl
comando a stop
il redis-server
servizio. L'interruzione dell'esecuzione del servizio Redis è una pratica consigliata quando inizi a utilizzare Redis per la prima volta.
sudo systemctl stop redis.service
2. Quindi, apri /etc/redis/redis.conf file nel tuo editor di testo preferito.
Trova il supervisionato direttiva, quindi impostalo su systemd , come mostrato di seguito, e salvare le modifiche. In questo modo si dice al sistema operativo di eseguire Redis come servizio.
3. Ora esegui systemctl restart
comando seguente per riavviare il servizio Redis (redis.service
) poiché il servizio Redis non è ancora a conoscenza delle modifiche.
sudo systemctl restart redis.service
4. Infine, esegui systemctl status
comando di seguito per vedere se Redis è in esecuzione.
sudo systemctl status redis.service
Come puoi vedere di seguito, l'output mostra che il servizio Redis è in esecuzione.
Verifica del corretto funzionamento del server Redis
Hai configurato e verificato che il servizio Redis sia attivamente in esecuzione, ma ciò non significa che il server Redis funzioni. Come verificare se il server Redis funziona correttamente? Connettiti al server Redis e invia comandi per vedere se il server risponde.
1. Esegui redis-cli
comando seguente per connettersi al server Redis. redis-cli
è l'interfaccia della riga di comando per Redis, che consente di inviare comandi al server e di ispezionarne lo stato.
redis-cli
Di seguito, puoi dire che sei nel prompt del server Redis (127.0.0.1:6379> ). Il redis-cli
comando tenta di connettersi a un server Redis in 127.0.0.1:6379
per impostazione predefinita.
2. Quindi, esegui ping
comando seguente per verificare se il server Redis è raggiungibile.
ping
Come puoi vedere, il server ha restituito PONG , che indica che il server Redis è raggiungibile e che ora può comunicare correttamente con il servizio.
Forse sei ancora scettico; esegui il set
comando qui sotto. Il set
command è un comando Redis che imposta una coppia chiave-valore in un database.
set test "This is a test"
Come puoi vedere, il comando set restituisce "OK ”, che indica che il servizio Redis funziona correttamente.
3. Esegui exit
comando seguente per uscire da redis-cli
. In questo modo si chiude la connessione al server Redis.
exit
Collegamento del server Redis a Localhost
Hai appena verificato che il server Redis funzioni correttamente, ma potrebbe essere accessibile anche da altri dispositivi sulla tua rete. Questo comportamento è indesiderabile e in genere vorresti proteggere il tuo server Redis da estranei.
L'associazione del server Redis a localhost imposta un comportamento che solo la macchina su cui hai installato Redis può accedere al server Redis.
1. Apri /etc/redis/redis.conf file nel tuo editor di testo.
2. Individua la riga che dice bind 127.0.0.1 ::1
e decommenta la riga eliminando il segno del numero (#
) all'inizio della riga.
3. Ora, esegui il comando seguente per riavviare il redis-server
servizio.
sudo systemctl restart redis-server
4. Infine, esegui il comando seguente per verificare se il tuo server Redis è associato a localhost. Il netstat -lnp
il comando elenca tutte le connessioni di rete attive e il grep redis
parte filtra l'output in righe che contengono "redis
.”
-lnp
sta per Local Name Protocol, un protocollo di rete utilizzato da sistemi simili a UNIX per risolvere i nomi host in indirizzi IP.
sudo netstat -lnp | grep redis
Di seguito puoi vedere che il server Redis è ora in ascolto solo sull'interfaccia localhost (127.0.0.1:6379
). Riflettendo la modifica nel file di configurazione, puoi vedere che solo l'interfaccia localhost è elencata sotto le tue connessioni Internet attive (tcp
).
Ora nessun altro dispositivo sulla tua rete può connettersi al tuo server Redis.
Protezione della connessione al server Redis con una password
A questo punto, Redis non è impostato per richiedere agli utenti di autenticarsi con una password. Chiunque conosca l'indirizzo IP o il nome host del tuo server Redis potrebbe connettersi ad esso e modificarne i dati.
Come proteggi il tuo server Redis? Imposta una password per richiedere agli utenti l'autenticazione durante la connessione al server Redis.
1. Riapri il redis.conf file di configurazione nel tuo editor di testo/codice.
2. Quindi, imposta una password complessa con quanto segue:
- Cerca
requirepass foobared
sotto ilSECURITY
sezione - Elimina il segno del numero (
#
) all'inizio della riga - Sostituisci
foobared
con una password complessa a tua scelta e salva le modifiche
3. Eseguire i seguenti comandi per riavviare e connettersi al server Redis.
sudo systemctl restart redis-server
redis-cli
4. Ora esegui ping
comando per vedere se riceverai una risposta dal server.
ping
Di seguito, puoi visualizzare un messaggio di errore che dice Autenticazione NOAUTH richiesta . Questo messaggio indica che è necessaria una password di autenticazione per accedere in remoto al server Redis.
5. Esegui auth
di seguito comando seguito dalla tua password per autenticare la tua connessione al tuo server Redis.
auth Qae9p_fY:YjdtJ7k
Riceverai un OK risposta quando l'autenticazione ha esito positivo, come quella di seguito.
6. Infine, riesegui il ping
comando per verificare se hai autenticato la connessione al tuo server Redis.
ping
Ora otterrai il PONG risposta, come mostrato di seguito, dopo aver autenticato la connessione. A questo punto, ora hai protetto con successo il tuo server Redis con una password.
Disabilitazione dei comandi pericolosi per proteggere il tuo server Redis
L'impostazione di una password per autenticare la connessione al server Redis non significa che ottenga una protezione del 100%. Per impostazione predefinita, Redis include diversi comandi pericolosi che consentono agli utenti di modificare i dati nel database.
Se eseguiti da utenti non autorizzati, questi comandi consentono agli intrusi di leggere, modificare, distruggere e persino cancellare i dati del tuo database Redis.
Di seguito non è riportato un elenco completo poiché il tuo server Redis potrebbe avere comandi pericolosi aggiuntivi, ma nella maggior parte dei casi questi sono i comandi pericolosi:
FLUSHDB, FLUSHALL, KEYS, PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF
BGSAVE, SAVE, SPOP, SREM, RENAME, DEBUG, EVAL
Per proteggere ulteriormente il tuo server Redis, rinomina questi comandi pericolosi in redis.conf file:
1. Apri redis.conf nel tuo editor di testo e cerca il Rinomina comando sezione.
Rinomina i comandi in una stringa vuota per disabilitarli seguendo la sintassi seguente. Sostituisci the-command
con il comando effettivo per disabilitare.
rename-command the-command ""
Ad esempio, disabilita CONFIG
comando rinominando CONFIG
in una stringa vuota, come mostrato di seguito, quindi salvare le modifiche. Le virgolette doppie (“”) indicare una stringa vuota che indica la disabilitazione di un comando.
2. Uscire dall'editor di testo ed eseguire il comando seguente per riavviare il server Redis.
sudo systemctl restart redis-server
3. Ora esegui i seguenti comandi per connetterti al tuo server Redis.
redis-cli
auth Qae9p_fY:YjdtJ7k
4. Infine, esegui config get
comando per verificare che il CONFIG
il comando è disabilitato.
config get requirepass
Riceverai un comando sconosciuto ERR config
risposta, come mostrato di seguito, che indica che il CONFIG
il comando è disabilitato.
Se il config get requirepass
il comando esegue il push through, richiede al tuo server Redis la password per autenticare la connessione al tuo server Redis.
Ora hai rinominato con successo un pericoloso comando Redis per proteggere il tuo server Redis. Ora continua a disabilitare altri comandi pericolosi in redis.conf file.
Blocco della richiesta di connessione al server Redis con un firewall
Un altro modo per proteggere il tuo server Redis è configurare un firewall. La configurazione di un firewall richiede di consentire solo la porta richiesta per ciascuno dei servizi in esecuzione sul tuo server.
Ad esempio, se stai eseguendo Redis sul tuo server alla porta 6379
, quindi quella porta è ciò che devi solo aprire. Se devi consentire l'accesso da un indirizzo IP o da un intervallo di indirizzi specifico, puoi aggiungere tali indirizzi alle regole del firewall.
Per configurare un firewall, devi prima installare uno strumento di configurazione del firewall. Questo esempio usa UFW, uno strumento di configurazione del firewall comunemente usato su Linux. Ma puoi anche usare un altro strumento, come iptables, per configurare un firewall.
1. Esegui il comando seguente per installare UFW sul tuo computer.
sudo apt install ufw -y
2. Quindi, eseguire il comando seguente per abilitare UFW.
sudo ufw enable
Immettere "Y" quando viene visualizzato il prompt mostrato di seguito per continuare a eseguire il comando.
3. Esegui ufw
comando seguente per aggiungere una regola, che consente (allow
) traffico sulla porta 6379
per il tuo server Redis. Sostituisci il 11.22.33.44
Indirizzo IP con gli indirizzi IP degli utenti previsti.
sudo ufw allow from 11.22.33.44 to any port 6379
4. Infine, esegui il comando seguente per verificare di aver aggiunto correttamente la regola del firewall. Il comando controlla il status
del tuo firewall.
sudo ufw status
Puoi vedere nell'output di seguito che il firewall è attivo e ha la regola per consentire il traffico sulla porta 6379
per Redis dall'indirizzo IP 11.22.33.44
.
Ora, tutti gli utenti con l'indirizzo IP di 11.22.33.44
può connettersi a Redis tramite la porta 6379
e dovrà autenticarsi con una password. Puoi aggiungere porte aggiuntive per altri servizi in modo simile.
Conclusione
Durante questo tutorial, hai imparato come installare e proteggere il tuo server Redis rinominando i comandi pericolosi per svuotare le stringhe e configurando un firewall.
Con questa nuova conoscenza, puoi godere di tutti i vantaggi di Redis senza preoccuparti di esporre il tuo server a rischi inutili.
Vuoi saperne di più? Perché non iniziare con la protezione di un server Redis in Kubernetes?