Come eseguire un’installazione sicura di Redis su Linux

Redis è benefico per molte cose, una delle quali è la memorizzazione nella cache. Puoi anche utilizzare Redis come archivio dati principale o addirittura come sostituto per un database. Ma come esegui un’installazione sicura di Redis? Installare Redis può essere un fastidio e, se non sei attento, potresti finire con molti errori. Fortunatamente per te, questo tutorial ti copre.

In questo tutorial, imparerai come installare Redis in modo sicuro sul tuo sistema Linux, insieme a alcuni suggerimenti per evitare errori comuni.

Continua a leggere e risparmia i mal di testa dalla risoluzione degli errori durante l’installazione di Redis!

Prerequisiti

Questo tutorial sarà una dimostrazione pratica. Se desideri seguirla, 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.

Installazione di Redis con il gestore dei pacchetti APT

Ci sono diversi modi per installare Redis su Ubuntu, ma per questo tutorial, userai il gestore di pacchetti APT per installare Redis.

Redis è scritto in C, quindi dovrai compilare Redis manualmente dal suo codice sorgente. Sarà necessario installare diverse dipendenze e il processo di compilazione non è esattamente alla prova degli errori.

Compilare Redis da sorgenti non è consigliato, ma il vantaggio è che puoi personalizzare la tua installazione se lo desideri. Scarichi il codice sorgente, quindi lo configurate manualmente.

Apri il tuo terminale e esegui il comando apt update qui sotto per assicurarti di avere le ultime liste di pacchetti.

sudo apt update -y
Updating the Linux system

Ora, esegui il comando apt install qui sotto per installare Redis sulla tua macchina.

Il comando sottostante utilizza il gestore di pacchetti apt per scaricare e installare il pacchetto redis-server dai repository di Ubuntu sulla tua macchina. Il flag -y dice a apt di accettare automaticamente le richieste durante il processo di installazione.

sudo apt install redis-server -y
Installing Redis on your machine

Configurare il 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, dovrai prima configurare il file redis.conf.

Il file di configurazione redis.conf è incluso nel pacchetto Redis che hai installato e viene memorizzato nella directory /etc/redis/ per impostazione predefinita. Questo file contiene tutte le opzioni di configurazione per Redis.

L’estensione del file .conf è logica, poiché segue uno schema convenzionale. Moltri altri programmi utilizzano lo stesso stile. Ad esempio, il server web Apache utilizza l’estensione di file .conf per il suo file di configurazione principale.

1. Esegui il seguente comando systemctl per stop il servizio redis-server. Fermare il servizio Redis è una pratica consigliata quando si inizia ad utilizzarlo.

sudo systemctl stop redis.service

2. Successivamente, apri il file /etc/redis/redis.conf nel tuo editor di testo preferito.

Trova la direttiva supervised, quindi impostala su systemd, come mostrato di seguito, e salva le modifiche. In questo modo si indica al sistema operativo di eseguire Redis come un servizio.

Setting up the systemd directive

3. Ora, esegui il comando systemctl restart qui sotto per riavviare il servizio Redis (redis.service) poiché il servizio Redis non è a conoscenza delle modifiche effettuate.

sudo systemctl restart redis.service

4. Infine, esegui il comando systemctl status qui sotto per verificare se Redis è in esecuzione.

sudo systemctl status redis.service

Come puoi vedere qui sotto, l’output mostra che il servizio Redis è in esecuzione.

Checking if Redis Service is Running

Testare se il Server Redis Funziona Correttamente

Hai configurato e verificato che il servizio Redis sia attivamente in esecuzione, ma ciò non significa che il server Redis funzioni correttamente. Come testare se il server Redis funziona correttamente? Connettiti al server Redis e invia comandi per vedere se il server risponde.

1. Esegui il comando redis-cli qui sotto per connetterti al server Redis. redis-cli è l’interfaccia a riga di comando per Redis, che ti consente di inviare comandi al server e ispezionarne lo stato.

redis-cli

Di seguito, puoi vedere che ti trovi nel prompt del server Redis (127.0.0.1:6379>). Il comando redis-cli cerca di connettersi a un server Redis a 127.0.0.1:6379 per impostazione predefinita.

Connecting to the Redis Server

2. Successivamente, esegui il comando ping qui sotto per verificare se il server Redis è raggiungibile.

ping

Come puoi vedere, il server ha restituito PONG, il che indica che il server Redis è raggiungibile e può ora comunicare con successo con il servizio.

Pinging the Redis server

Forse sei ancora scettico; esegui il comando set di seguito. Il comando set è 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,” il che indica che il servizio Redis funziona correttamente.

Testing the Redis server

3. Esegui il comando exit di seguito per uscire da redis-cli. In questo modo si chiude la connessione al server Redis.

exit

Vinculare il server Redis a Localhost

Hai appena verificato che il server Redis funziona correttamente, ma potrebbe essere accessibile anche da altri dispositivi sulla tua rete. Questo comportamento non è desiderabile, e di solito vuoi proteggere il tuo server Redis dagli estranei.

Vinculare il server Redis a localhost imposta un comportamento che consente solo alla macchina su cui hai installato Redis di accedere al server Redis.

1. Apri il file /etc/redis/redis.conf nel tuo editor di testo.

2. Trova la riga che dice bind 127.0.0.1 ::1 e decommenta la riga eliminando il cancelletto (#) all’inizio della riga.

Uncommenting the bind 127.0.0.1 ::1 line

3. Ora, esegui il comando di seguito per riavviare il servizio redis-server.

sudo systemctl restart redis-server

4. Infine, esegui il seguente comando per verificare se il tuo server Redis è vincolato a localhost. Il comando netstat -lnp elenca tutte le connessioni di rete attive, e la parte grep redis filtra l’output alle linee che contengono “redis.”

-lnp sta per Local Name Protocol, un protocollo di rete utilizzato dai sistemi simili a UNIX per risolvere i nomi host negli indirizzi IP.

sudo netstat -lnp | grep redis

Puoi vedere qui sotto che il server Redis è ora in ascolto solo sull’interfaccia localhost (127.0.0.1:6379). Riflettendo il cambiamento nel file di configurazione, puoi vedere che solo l’interfaccia localhost è elencata sotto le tue connessioni internet attive (tcp).

Adesso, nessun altro dispositivo sulla tua rete può connettersi al server Redis.

Listing all active network connections

Proteggere la Connessione al Server Redis con una Password

A questo punto, Redis non è impostato per richiedere agli utenti l’autenticazione con una password. Chiunque conosca l’indirizzo IP o il nome host del tuo server Redis potrebbe connettersi ad esso e modificare i suoi dati.

Come proteggi il tuo server Redis? Imposta una password per richiedere agli utenti l’autenticazione quando si connettono al tuo server Redis.

1. Riapri il file di configurazione redis.conf nel tuo editor di testo/codice.

2. Successivamente, imposta una password sicura con quanto segue:

  • Cerca requirepass foobared sotto la sezione SECURITY.
  • Elimina il segno di cancelletto (#) all’inizio della riga.
  • Sostituisci foobared con una password sicura a tua scelta e salva le modifiche.
Providing a secure password

3. Esegui i seguenti comandi per riavviare e connetterti al tuo server Redis.

sudo systemctl restart redis-server
redis-cli

4. Ora, esegui il comando ping per vedere se otterrai una risposta dal server.

ping

Di seguito, puoi vedere un messaggio di errore che dice NOAUTH Autenticazione richiesta. Questo messaggio indica che hai bisogno di una password di autenticazione per accedere al tuo server Redis in remoto.

Testing connection with the server

5. Esegui il comando auth seguito dalla tua password per autenticare la tua connessione al server Redis.

auth Qae9p_fY:YjdtJ7k

Riceverai una risposta OK quando l’autenticazione avviene con successo, come quella qui sotto.

Authenticating Redis Server Connection

6. Infine, esegui nuovamente il comando ping per verificare se hai autenticato la tua connessione al server Redis.

ping

Ora riceverai la risposta PONG, come mostrato di seguito, dopo aver autenticato la tua connessione. A questo punto, hai protetto con successo il tuo server Redis con una password.

Pinging the Redis server

Disabilitare i Comandi Pericolosi per Proteggere il tuo Server Redis

Impostare una password per autenticare la connessione al tuo server Redis non significa ottenere una protezione al 100%. Per impostazione predefinita, Redis include diversi comandi pericolosi che consentono agli utenti di modificare i dati nel tuo database.

Quando eseguiti da utenti non autorizzati, questi comandi consentono agli intrusi di leggere, modificare, distruggere e persino eliminare i dati del tuo database Redis.

Di seguito non è riportato un elenco esaustivo in quanto 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 nel file redis.conf:

1. Apri il file redis.conf nel tuo editor di testo e cerca la sezione Rinominazione dei comandi.

Rinomina i comandi a una stringa vuota per disabilitarli seguendo la sintassi seguente. Sostituisci il-comando con il comando effettivo da disabilitare.

rename-command the-command ""

Ad esempio, disabilita il comando CONFIG rinominando CONFIG a una stringa vuota, come mostrato di seguito, quindi salva le modifiche. Le virgolette doppie (“”) indicano una stringa vuota che significa disabilitare un comando.

Renaming the CONFIG command

2. Esci dall’editor di testo ed esegui il comando sottostante 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 il comando config get per verificare che il comando CONFIG sia disabilitato.

config get requirepass

Otterrai una risposta ERR comando sconosciuto config, come mostrato di seguito, il che indica che il comando CONFIG è disabilitato.

Checking the CONFIG command

Se il comando config get requirepass riesce, richiede al tuo server Redis la password per autenticare la connessione al tuo server Redis.

Hai ora rinominato con successo un pericoloso comando Redis per proteggere il tuo server Redis. Ora continua a disabilitare altri comandi pericolosi nel file redis.conf.

Blocco delle richieste 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, allora quella porta è l’unica che devi aprire. Se hai bisogno di consentire l’accesso da un indirizzo IP specifico o da un intervallo di indirizzi, puoi aggiungere quegli indirizzi alle regole del firewall.

Per configurare un firewall, prima dovrai installare uno strumento di configurazione del firewall. In questo esempio viene utilizzato UFW, uno strumento di configurazione del firewall comunemente utilizzato su Linux. Ma puoi anche utilizzare un altro strumento, come iptables, per configurare un firewall.

1. Esegui il seguente comando per installare UFW sulla tua macchina.

sudo apt install ufw -y

2. Successivamente, esegui il comando sottostante per abilitare UFW.

sudo ufw enable

Inserisci ‘Y’ quando ricevi il prompt mostrato di seguito per continuare l’esecuzione del comando.

Enabling UFW

3. Esegui il comando ufw di seguito per aggiungere una regola, che consente (allow) il traffico sulla porta 6379 per il tuo server Redis. Sostituisci l’indirizzo IP 11.22.33.44 con gli indirizzi IP dei tuoi utenti previsti.

sudo ufw allow from 11.22.33.44 to any port 6379
Adding a firewall rule to allow traffic on port 6379

4. Infine, esegui il comando sottostante per verificare di aver aggiunto correttamente la regola del firewall. Il comando controlla lo status del tuo firewall.

sudo ufw status

Puoi vedere nell’output sottostante che il firewall è attivo e ha la regola per consentire il traffico sulla porta 6379 per Redis dall’indirizzo IP 11.22.33.44.

Checking the UFW rules

Ora, tutti gli utenti con l’indirizzo IP 11.22.33.44 possono connettersi a Redis tramite la porta 6379 e avranno bisogno di autenticarsi con una password. Puoi aggiungere porte aggiuntive per altri servizi in modo simile.

Conclusion

Attraverso questo tutorial, hai imparato come installare e proteggere il tuo server Redis rinominando i comandi pericolosi in stringhe vuote e configurando un firewall.

Con questa nuova conoscenza, puoi godere pienamente dei vantaggi di Redis senza preoccuparti di esporre il tuo server a rischi non necessari.

Vuoi saperne di più? Perché non inizi con proteggere un server Redis in Kubernetes?

Source:
https://adamtheautomator.com/redis-install/