Tutorial

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

Published on May 15, 2020
Default avatar

By Mark Drake

Manager, Developer Education

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

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:

  1. sudo apt update

Em seguida, instale o Redis digitando:

  1. sudo apt install redis-server

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

  1. 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:

  1. 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:

  1. redis-cli

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

  1. 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:

  1. set test "It's working!"
Output
OK

Recupere o valor digitando:

  1. 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:

  1. 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:

  1. 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:

  1. sudo systemctl restart redis.service

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

  1. 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:

  1. 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:

  1. auth your_redis_password

O Redis reconhece:

Output
OK

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

  1. set key1 10
Output
OK

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

  1. 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:

  1. 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:

  1. 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:

  1. sudo systemctl restart redis.service

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

  1. redis-cli

Em seguida, autentique-se:

  1. 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:

  1. 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:

  1. 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.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about us


About the authors
Default avatar

Manager, Developer Education

Technical Writer @ DigitalOcean

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel