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.
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.
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
:
. . .
# 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
OutputPONG
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!"
OutputOK
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
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:
. . .
# requirepass foobared
. . .
Descomente-a removendo o #
, e modificando foobared
para uma senha segura.
. . .
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:
OutputOK
Após isso, executando o comando anterior novamente terá sucesso:
- set key1 10
OutputOK
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
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:
. . .
# 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:
. . .
# 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
OutputOK
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
Output1) "requirepass"
2) "your_redis_password"
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.
Join our DigitalOcean community of over a million developers for free! Get help and share knowledge in our Questions & Answers section, find tutorials and tools that will help you grow as a developer and scale your project or business, and subscribe to topics of interest.
Sign up