Torna al blog

Come installare e proteggere Redis su Ubuntu 18.04

Come installare e proteggere Redis su Ubuntu 18.04

Redis è un potente archivio chiave-valore in-memory che può essere utilizzato come server di database, cache e message broker. È ampiamente noto per le sue prestazioni veloci, la flessibilità e il supporto per un'ampia varietà di lingue. È un software libero e open-source scritto nel linguaggio di programmazione C. In questa guida, vedremo come installare e proteggere Redis su Ubuntu 18.04.

Prerequisiti

Per seguire questa guida, dovrai preparare un paio di cose in anticipo. È necessario disporre di un server Ubuntu 18.04, che puoi installare facilmente seguendo il nostro tutorial. Inoltre, è necessario disporre di un utente non root con privilegi sudo e di un firewall di base configurato. Puoi configurarli seguendo le nostre guide su configurazione del file sudoers di Linux e configurazione di un UFW su server cloud Ubuntu e Debian.

Ora iniziamo!

Installazione di Redis

Redis è direttamente disponibile dal repository ufficiale Ubuntu. Questo è il modo più semplice per installarlo e configurarlo. Consigliamo di seguire questa strada a meno che non ci siano motivi specifici per non farlo. Poiché il codice sorgente di Redis è disponibile gratuitamente, è anche possibile compilare Redis dal sorgente. Tuttavia, non lo consigliamo perché è più complicato da gestire e aggiornare.

Installare Redis dal repository di Ubuntu

Per prima cosa, aggiorna la cache locale dei pacchetti APT:

Successivamente, installa Redis con il seguente comando:

Installare Redis da sorgente

Ubuntu non include di default gli strumenti di compilazione e le librerie necessarie. Il seguente comando installerà tutti gli strumenti necessari per compilare Redis:

Ci sono due dipendenze aggiuntive per compilare Redis. Queste dipendenze sono necessarie per compilare Redis con funzionalità aggiuntive, ad esempio il supporto TLS, l'integrazione con systemd, ecc. Per compilare Redis con il supporto TLS, installa il pacchetto “libssl-dev”. Per compilare Redis con il supporto per systemd, installa il pacchetto “libsystemd-dev”:

Il codice sorgente di Redis è disponibile su GitHub. Dai un'occhiata alla pagina GitHub di Redis. Successivamente, scarica il codice sorgente:

Redis GitHub page

Cambia la directory attiva corrente con la directory del codice sorgente di Redis:

Dopodiché, esegui lo strumento make per avviare la compilazione. Compilerà Redis senza elementi aggiuntivi:

Per abilitare il supporto TLS (assumendo che “libssl-dev” sia installato), usa invece il seguente comando:

Per abilitare il supporto per systemd (assumendo che “libsystemd-dev” sia installato), usa il seguente comando:

Successivamente, verifica se la compilazione è andata a buon fine. Nota che potrebbe essere necessario un pacchetto aggiuntivo “tcl-dev” e le relative dipendenze per eseguire il test:

Infine, installa Redis eseguendo il seguente comando:

Se Redis è stato compilato utilizzando TLS, l'avvio del server dovrà essere eseguito nel seguente modo:

Configurazione di Redis

Una volta completata l'installazione, è il momento di configurare Redis. Apri il file di configurazione di Redis in un editor di testo e scorri verso il basso fino alla sezione “supervised”:

secure redis 1

Modifica il valore di “supervised” in “systemd”. Questo assicurerà che il servizio Redis sia gestito da systemd. Per rendere effettive le modifiche, riavvia il servizio Redis:

Testare Redis

È sempre una buona idea verificare se Redis funziona correttamente prima di utilizzarlo ulteriormente. Ecco alcuni modi per testare il comportamento di Redis. Il primo passo consiste nel verificare se il servizio Redis è attivo e funzionante:

Qui, Redis è già in esecuzione. Per impostazione predefinita, il servizio Redis si avvierà all'avvio. Se il servizio Redis deve essere eseguito manualmente, disabilitalo:

Il test successivo consiste nel verificare utilizzando la console di Redis. Avvia il client a riga di comando di Redis:

Esegui il comando “ping”:

L'output conferma che la connessione al server è ancora attiva. Il test successivo consiste nel verificare se consente di impostare le chiavi. Crea una chiave “temp” con il valore “hello world”:

Recupera il valore utilizzando il comando “get”:

Se finora tutto funziona correttamente, Redis dovrebbe restituire il valore della chiave senza alcun problema. Chiudi il client a riga di comando di Redis:

Redis command-line

Il test finale consiste nel verificare se Redis è in grado di persistere i dati anche se viene arrestato o riavviato. Riavvia il servizio Redis:

Se ricevi un errore durante l'esecuzione del comando precedente, usa il comando “systemctl enable redis-server”:

Avvia il client a riga di comando di Redis e recupera il valore della chiave “temp” creata in precedenza:

Questo conclude i test di Redis. Il tuo server Redis è ora pronto per essere utilizzato per lo scopo desiderato.

Mettere in sicurezza Redis

A questo punto, Redis è completamente operativo. Tuttavia, alcune delle sue configurazioni predefinite non offrono la massima sicurezza. Se non aggiornate, qualsiasi malintenzionato può sfruttare l'opportunità per accedere al server e ai suoi dati. Questa sezione mostrerà come mitigare queste vulnerabilità. Sebbene questi passaggi siano facoltativi, si consiglia vivamente di seguirli per rafforzare la sicurezza del sistema.

Associazione a localhost

Per impostazione predefinita, Redis è accessibile solo da localhost. Tuttavia, se Redis è stato configurato su un server remoto, la configurazione deve essere aggiornata per consentire la connessione da qualsiasi luogo. Tuttavia, potrebbe non essere sicuro come l'associazione a localhost. Per associare nuovamente Redis a localhost, apri il file di configurazione di Redis in un editor di testo:

Scorri verso il basso e trova la riga seguente. Assicurati che non sia commentata:

Binding to localhost

Salva e chiudi il file. Quindi, riavvia il servizio Redis per assicurarti che la modifica sia immediatamente efficace:

Verifica che la modifica sia andata a buon fine:

Se ricevi un errore come ‘netstat: command not found’, usa il comando per installare net-tools “sudo apt-get install net-tools”. L'output verifica che “redis-server” è associato correttamente a localhost (127.0.0.1), riflettendo la modifica apportata di recente. Se è presente un altro indirizzo IP (ad esempio, 0.0.0.0), ricontrolla il file di configurazione e riavvia nuovamente il server Redis.

Configurazione della password di Redis

La configurazione di una password consente l'uso di una funzionalità di sicurezza integrata di Redis – il comando “AUTH”. Richiede ai client di autenticarsi per accedere al database. Per impostazione predefinita, Redis non ha alcuna password configurata. La password deve essere dichiarata nel file di configurazione di Redis. Apri il file di configurazione in un editor di testo:

Quindi, scorri verso il basso fino alla riga seguente e decommentala:

Dopo aver decommentato, “foobared” sarà la password predefinita. Modificala con una password a tua scelta. Quando si tratta di Redis, la robustezza della password è un fattore di grande importanza. Poiché Redis è un server ad alte prestazioni, è potenzialmente più facile da sfruttare tramite attacchi di forza bruta. Questo è il motivo per cui il file di configurazione contiene direttamente il seguente avviso. Ecco un rapido esempio di generazione di una password casuale molto robusta. Useremo il comando OpenSSL per generare una stringa casuale:

Dopo aver configurato una nuova password, riavvia il servizio Redis per rendere effettive le modifiche:

È il momento di verificare se la password è stata applicata correttamente. Avvia la console a riga di comando di Redis:

Quindi, prova a impostare una nuova chiave:

Redis rifiuterà la richiesta poiché non vi è alcuna autenticazione per l'azione. Per eseguire qualsiasi azione sul server, l'utente deve prima essere autorizzato. Autorizza l'utente utilizzando il seguente comando:

Se la password è corretta, Redis confermerà l'azione. Ora, Redis consentirà l'accesso alle funzionalità del suo server:

Per ora, il nostro lavoro con la console Redis è terminato. Puoi chiudere la console:

Rinominare i comandi pericolosi

Redis consente di rinominare o disabilitare completamente alcuni comandi considerati pericolosi. Questa è un'altra importante funzionalità di sicurezza integrata di Redis. Perché i comandi sono considerati pericolosi? Se eseguiti da un utente non autorizzato, questi comandi possono riconfigurare, distruggere o cancellare i dati nel server. È pratica comune disabilitare/rinominare un gruppo di comandi Redis pericolosi. Nota che la minaccia alla sicurezza di un comando dipende dalla situazione. Ad esempio, alcuni dei seguenti comandi potrebbero essere necessari regolarmente. In questi casi, la disattivazione non è raccomandata. In una situazione del genere, rinominare il comando potrebbe rivelarsi più vantaggioso. Ecco un rapido elenco dei comandi considerati pericolosi. Questo è un buon punto di partenza per migliorare la sicurezza del server Redis:

  • FLUSHDB
  • FLUSHALL
  • KEYS
  • PEXPIRE
  • DEL
  • CONFIG
  • SHUTDOWN
  • BGREWRITEAOF
  • BGSAVE
  • SAVE
  • SPOP
  • SREM
  • RENAME
  • DEBUG

Per rinominare o disabilitare un comando, questo deve essere dichiarato nel file di configurazione di Redis. Apri il file di configurazione di Redis e aggiungi le seguenti righe. Qui, "rename-command" viene utilizzato per rinominare i comandi in una stringa vuota. Aggiungi tutte le voci necessarie:

Allo stesso modo, è anche possibile rinominare i comandi con un nome diverso. In determinate situazioni, ciò potrebbe offrire maggiore flessibilità:

rename-command

Salva il file ed esci dall'editor. Per rendere effettive le modifiche, riavvia il servizio Redis:

Verifica le modifiche. Successivamente, avvia la console Redis e autentica l'accesso:

Ipotizziamo che il comando "CONFIG" sia stato disabilitato o rinominato. Prova a utilizzare il seguente comando "CONFIG". Fallirà:

Se il comando è stato disabilitato, non sarà possibile accedervi finché non verrà riabilitato. Tuttavia, se è stato rinominato, utilizza il nuovo alias:

command_4

Conclusione

Questo tutorial mostra come installare, proteggere, configurare e convalidare un'installazione di Redis. Mostra anche come utilizzare le funzionalità di sicurezza integrate di Redis per renderlo meno vulnerabile agli attacchi. Tuttavia, se qualcuno ha già effettuato l'accesso al server, è piuttosto facile aggirare le funzionalità di sicurezza specifiche di Redis. Ecco perché avere un firewall per proteggere l'accesso al server Redis è fondamentale.

Buon divertimento!

author

Hark Labs

Autore · CloudSigma

Preslav Dobrev è un designer creativo presso CloudSigma, con un focus su un'identità aziendale coerente attraverso l'uso di canali di marketing tradizionali e innovativi. È abile nel fondere la visione artistica con il marketing strategico per creare narrazioni di brand di grande impatto.

Commenti

Ancora nessun commento. Scrivi il primo.