Tutorial

Como Instalar e Proteger o Redis no Ubuntu 20.04 [Quickstart]

UbuntuNoSQLRedisQuickstartDatabasesUbuntu 20.04

Introdução

O Redis é um armazenamento de dados de chave-valor na memória, conhecido pela sua flexibilidade, desempenho e amplo suporte de linguagens. Este tutorial quickstart demonstra como instalar, configurar e proteger o Redis em um servidor Ubuntu 20.04.

Pré-requisitos

Para completar este guia, você precisará ter acesso a um servidor Ubuntu 20.04, que tenha um usuário não root com privilégios sudo e um firewall configurado.com o ufw. Você pode configurar isto seguindo o nosso Guia de Configuração Inicial de Servidor para Ubuntu 20.04.

Passo 1 — Instalando e Configurando o Redis

Comece atualizando seu cache de pacotes local do apt:

  • sudo apt update

Em seguida, instale o Redis digitando:

  • sudo apt install redis-server

Em seguida, abra o arquivo de configuração do Redis com seu editor de texto preferido:

  • sudo nano /etc/redis/redis.conf

Dentro do arquivo, encontre a diretiva supervised que permite que você declare um sistema init para gerenciar o Redis como um serviço. Uma vez que você está executando o Ubuntu, que usa o sistema init systemd, altere seu valor de no para systemd:

/etc/redis/redis.conf
. . .

# If you run Redis from upstart or systemd, Redis can interact with your
# supervision tree. Options:
#   supervised no      - no supervision interaction
#   supervised upstart - signal upstart by putting Redis into SIGSTOP mode
#   supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
#   supervised auto    - detect upstart or systemd method based on
#                        UPSTART_JOB or NOTIFY_SOCKET environment variables
# Note: these supervision methods only signal "process is ready."
#       They do not enable continuous liveness pings back to your supervisor.
supervised systemd

. . .

Salve e feche o arquivo quando você terminar. Se você usou o nano para editar o arquivo, faça isso pressionando CTRL + X, Y, depois ENTER.

Então, reinicie o serviço Redis para refletir as alterações feitas no arquivo de configuração:

  • sudo systemctl restart redis.service

Para testar se o Redis está funcionando corretamente, conecte-se ao servidor usando o redis-cli, o cliente de linha de comando do Redis:

  • redis-cli

No prompt que segue, teste a conectividade com o comando ping:

  • ping
Output
PONG

Esta saída confirma que a conexão com o servidor está ativa. A seguir, verifique se você é capaz de definir chaves executando:

  • set test "It's working!"
Output
OK

Recupere o valor digitando:

  • get test

Supondo que tudo esteja funcionando, você será capaz de recuperar o valor que você armazenou:

Output
"It's working!"

Após confirmar que você pode obter o valor, saia do prompt do Redis para voltar ao shell:

  • exit

Passo 2 — Configurando uma Senha para o Redis

Você pode configurar uma senha do Redis diretamente no arquivo de configuração do Redis, /etc/redis/redis.conf. Abra esse arquivo novamente com seu editor preferido:

  • sudo nano /etc/redis/redis.conf

Role até a seção SECURITY e procure uma diretiva comentada que mostre:

/etc/redis/redis.conf
. . .
# requirepass foobared
. . .

Descomente-a removendo o #, e modificando foobared para uma senha segura.

/etc/redis/redis.conf
. . .
requirepass your_redis_password
. . .

Após configurar a senha, salve e feche o arquivo, então reinicie o Redis:

  • sudo systemctl restart redis.service

Para testar se a senha funciona, abra o cliente Redis:

  • redis-cli

A seguir encontra-se uma sequência de comandos usada para testar se a senha do Redis funciona. O primeiro comando tenta definir uma chave para um valor antes da autenticação:

  • set key1 10

Isso não funcionará porque você não se autenticou, então o Redis retorna um erro:

Output
(error) NOAUTH Authentication required.

O próximo comando autentica-se com a senha especificada no arquivo de configuração do Redis:

  • auth your_redis_password

O Redis reconhece:

Output
OK

Após isso, executando o comando anterior novamente terá sucesso:

  • set key1 10
Output
OK

get key1 consulta o Redis para o valor da nova chave.

  • get key1
Output
"10"

Após confirmar que você é capaz de executar comandos no cliente Redis depois da autenticação, você poderá sair do redis-cli:

  • quit

Passo 3 — Renomeando Comandos Perigosos

A outra característica de segurança embutida no Redis envolve renomear ou desativar completamente determinados comandos que são considerados perigosos. Alguns comandos que são considerados perigosos incluem: FLUSHDB, FLUSHALL, KEYS, PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME, e DEBUG. Ao desativar ou renomear esses e outros comandos, você torna mais difícil para os usuários não autorizados reconfigurar, destruir ou, de outro modo, limpar seus dados.

Para renomear ou desativar comandos do Redis, abra novamente o arquivo de configuração:

  • sudo nano /etc/redis/redis.conf

Aviso: os passos a seguir mostrando como desativar e renomear comandos são exemplos. Você deve apenas escolher desativar ou renomear os comandos que fizerem sentido para você. Você pode rever a lista completa de comandos por conta própria e determinar como eles poderiam ser usados de forma errada com o redis.io/commands.

Para desativar um comando, simplesmente renomeie-o para uma string vazia (representado por um par de aspas sem caracteres entre elas), como mostrado abaixo:

/etc/redis/redis.conf
. . .
# It is also possible to completely kill a command by renaming it into
# an empty string:
#
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command DEBUG ""
. . .

Para renomear um comando, dê a ele outro nome como mostrado nos exemplos abaixo. Os comandos renomeados devem ser difíceis para que outros possam adivinhar, mas fácil para você lembrar:

/etc/redis/redis.conf
. . .
# rename-command CONFIG ""
rename-command SHUTDOWN SHUTDOWN_MENOT
rename-command CONFIG ASC12_CONFIG
. . .

Salve suas alterações e feche o arquivo.

Após renomear um comando, aplique a alteração reiniciando o Redis:

  • sudo systemctl restart redis.service

Para testar o novo comando, acesse a linha de comando do Redis:

  • redis-cli

Em seguida, autentique-se:

  • auth your_redis_password
Output
OK

Supondo que você tenha renomeado o comando CONFIG para ASC12_CONFIG como no exemplo anterior, tente usar o comando CONFIG original. Ele deve falhar, porque você o renomeou:

  • config get requirepass
Output
(error) ERR unknown command `config`, with args beginning with:

Chamar o comando renomeado, no entanto, será bem-sucedido. Não é sensível a maiúsculas e minúsculas:

  • asc12_config get requirepass
Output
1) "requirepass" 2) "your_redis_password"

Conclusão

Neste tutorial quickstart, você instalou e configurou o Redis, validou que sua instalação do Redis está funcionando corretamente e usou seus recursos de segurança integrados para torná-lo menos vulnerável aos ataques de indivíduos mal-intencionados.

Creative Commons License