Voltar ao blog

Como instalar e proteger o Redis no Ubuntu 18.04

Como instalar e proteger o Redis no Ubuntu 18.04

Redis é um poderoso armazenamento de chave-valor em memória que pode ser usado como servidor de banco de dados, cache e message broker. É amplamente conhecido por seu desempenho rápido, flexibilidade e suporte a uma grande variedade de linguagens. É um software livre e de código aberto escrito na linguagem de programação C. Neste guia, confira como instalar e proteger o Redis no Ubuntu 18.04.

Pré-requisitos

Para seguir este guia, você precisará preparar algumas coisas com antecedência. Você precisa ter um servidor Ubuntu 18.04, que você pode instalar facilmente seguindo nosso tutorial. Além disso, você precisa ter um usuário não-root com privilégios sudo e um firewall básico configurado. Você pode configurar isso seguindo nossos guias sobre configuração do arquivo sudoers do Linux e configuração de um UFW no servidor em nuvem Ubuntu e Debian.

Agora, vamos começar!

Instalando o Redis

O Redis está disponível diretamente no repositório oficial do Ubuntu repo. Esta é a maneira mais simples de instalá-lo e configurá-lo. Recomendamos seguir este caminho, a menos que haja motivos específicos para não fazê-lo. Como o código-fonte do Redis está disponível gratuitamente, também é possível compilar o Redis a partir do código-fonte. No entanto, não recomendamos isso porque é mais trabalhoso de gerenciar e atualizar.

Instalar o Redis a partir do repositório do Ubuntu

Primeiro, atualize o cache local de pacotes do APT:

Em seguida, instale o Redis com o seguinte comando:

Instalar o Redis a partir do código-fonte

O Ubuntu não vem com as ferramentas de compilação e bibliotecas necessárias por padrão. O comando a seguir instalará todas as ferramentas necessárias para compilar o Redis:

Existem duas dependências adicionais para compilar o Redis. Essas dependências são necessárias para compilar o Redis com recursos adicionais, por exemplo, suporte a TLS, integração com o systemd, etc. Para compilar o Redis com suporte a TLS, instale o pacote “libssl-dev”. Para compilar o Redis com suporte ao systemd, instale o pacote “libsystemd-dev”:

O código-fonte do Redis está disponível no GitHub. Confira a página do Redis no GitHub. Em seguida, obtenha o código-fonte:

Redis GitHub page

Altere o diretório ativo atual para o diretório do código-fonte do Redis:

Depois disso, execute a ferramenta make para iniciar a compilação. Ela compilará o Redis sem nenhum elemento adicional:

Para habilitar o suporte a TLS (assumindo que o “libssl-dev” está instalado), use o seguinte comando:

Para habilitar o suporte ao systemd (assumindo que o “libsystemd-dev” está instalado), use o seguinte comando:

Em seguida, teste se a compilação foi bem-sucedida. Observe que pode ser necessário um pacote adicional “tcl-dev” e dependências associadas para executar o teste:

Finalmente, instale o Redis executando o seguinte comando:

Se o Redis foi compilado usando TLS, a execução do servidor deverá ser feita da seguinte maneira:

Configurando o Redis

Assim que a instalação estiver concluída, é hora de configurar o Redis. Abra o arquivo de configuração do Redis em um editor de texto e role para baixo até a seção “supervised”:

secure redis 1

Altere o valor de “supervised” para “systemd”. Isso garantirá que o serviço do Redis seja gerenciado por sistemas. Para que as alterações entrem em vigor, reinicie o serviço do Redis:

Testando o Redis

É sempre uma boa ideia testar se o Redis está funcionando corretamente antes de colocá-lo em uso. Aqui estão algumas maneiras de testar o comportamento do Redis. O primeiro passo é verificar se o serviço do Redis está ativo e em execução:

Aqui, o Redis já está em execução. Por padrão, o serviço Redis começará a ser executado na inicialização. Se o serviço Redis for executado manualmente, desative-o:

O próximo teste é verificar usando o console do Redis. Inicie o cliente de linha de comando do Redis:

Execute o comando “ping”:

A saída confirma que a conexão com o servidor ainda está ativa. O próximo teste é ver se ele permite definir chaves. Crie uma chave “temp” com o valor “hello world”:

Recupere o valor usando o comando “get”:

Se tudo estiver funcionando bem até agora, o Redis deve retornar o valor da chave sem problemas. Feche o cliente de linha de comando do Redis:

Redis command-line

O teste final é verificar se o Redis pode persistir dados mesmo se for parado ou reiniciado. Reinicie o serviço Redis:

Se você receber um erro ao executar o comando acima, use o comando “systemctl enable redis-server”:

Inicie o cliente de linha de comando do Redis e recupere o valor da chave “temp” que criamos anteriormente:

Isso conclui os testes do Redis. Seu servidor Redis agora está pronto para ser utilizado para a finalidade desejada.

Protegendo o Redis

Neste ponto, o Redis está totalmente operacional. No entanto, algumas de suas configurações padrão não oferecem a melhor segurança. Se não forem atualizadas, qualquer ator malicioso pode aproveitar a oportunidade para obter acesso ao servidor e seus dados. Esta seção mostrará como mitigar essas vulnerabilidades. Embora essas etapas sejam opcionais, é altamente recomendável segui-las para reforçar a segurança do sistema.

Vinculando ao localhost

Por padrão, o Redis só é acessível a partir do localhost. No entanto, se o Redis foi configurado em um servidor remoto, a configuração deve ser atualizada para permitir a conexão de qualquer lugar. No entanto, pode não ser tão seguro quanto vincular ao localhost. Para vincular novamente o Redis ao localhost, abra o arquivo de configuração do Redis em um editor de texto:

Role para baixo e encontre o seguinte. Certifique-se de que não esteja comentado:

Binding to localhost

Salve e feche o arquivo. Em seguida, reinicie o serviço Redis para garantir que a alteração entre em vigor imediatamente:

Verifique se a alteração foi bem-sucedida:

Se você receber um erro como ‘netstat: command not found’, use o comando para instalar o net-tools “sudo apt-get install net-tools”. A saída verifica se o “redis-server” foi vinculado com sucesso ao localhost (127.0.0.1), refletindo a alteração feita recentemente. Se houver qualquer outro endereço IP (por exemplo, 0.0.0.0), verifique novamente o arquivo de configuração e reinicie o servidor Redis.

Configurando a senha do Redis

A configuração de uma senha permite o uso de um recurso de segurança integrado do Redis – o comando “AUTH”. Ele exige que os clientes se autentiquem para acessar o banco de dados. Por padrão, o Redis não possui senha configurada. A senha deve ser declarada no arquivo de configuração do Redis. Abra o arquivo de configuração em um editor de texto:

Em seguida, role para baixo até a seguinte linha e remova o comentário:

Depois de remover o comentário, “foobared” será a senha padrão. Altere-a para a senha de sua escolha. Quando se trata do Redis, a força da senha é um grande fator de preocupação. Como o Redis é um servidor de alto desempenho, ele é potencialmente mais fácil de explorar usando ataques de força bruta. É por isso que o arquivo de configuração contém diretamente o seguinte aviso. Aqui está um exemplo rápido de geração de uma senha aleatória muito forte. Usaremos o comando OpenSSL para gerar uma string aleatória:

Após configurar uma nova senha, reinicie o serviço Redis para que as alterações entrem em vigor:

É hora de testar se a senha foi aplicada com sucesso. Inicie o console de linha de comando do Redis:

Em seguida, tente definir uma nova chave:

O Redis rejeitará a solicitação, pois não há autenticação para a ação. Para realizar qualquer ação no servidor, o usuário deve ser autorizado primeiro. Autorize o usuário usando o seguinte comando:

Se a senha estiver correta, o Redis reconhecerá a ação. Agora, o Redis permitirá o acesso às funcionalidades do seu servidor:

Por enquanto, nosso trabalho com o console do Redis está concluído. Você pode fechar o console:

Renomeando comandos perigosos

O Redis permite renomear ou desativar completamente certos comandos que são considerados perigosos. Este é outro recurso de segurança integrado importante do Redis. Por que os comandos são considerados perigosos? Se executados por um usuário não autorizado, esses comandos podem reconfigurar, destruir ou apagar dados no servidor. É uma prática comum desativar/renomear uma série de comandos perigosos do Redis. Observe que a ameaça de segurança de um comando depende da situação. For exemplo, alguns dos seguintes comandos podem ser necessários regularmente. Nesses casos, desativá-los não é recomendado. Em tal situação, renomear o comando pode ser mais benéfico. Aqui está uma lista rápida dos comandos que são considerados perigosos. Este é um bom ponto de partida para melhorar a segurança do servidor Redis:

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

Para renomear ou desativar um comando, ele deve ser declarado no arquivo de configuração do Redis. Abra o arquivo de configuração do Redis e adicione as seguintes linhas. Aqui, “rename-command” é usado para renomear os comandos para uma string vazia. Adicione quantas entradas forem necessárias:

Da mesma forma, também é possível renomear os comandos para um nome diferente. Em certas situações, isso pode oferecer mais flexibilidade:

rename-command

Salve o arquivo e saia do editor. Para que as alterações entrem em vigor, reinicie o serviço Redis:

Verifique as alterações. Em seguida, inicie o console do Redis e autentique o acesso:

Vamos assumir que o comando “CONFIG” foi desativado ou renomeado. Tente usar o seguinte comando “CONFIG”. Ele falhará:

Se o comando foi desativado, ele não poderá ser acessado até ser reativado. No entanto, se foi renomeado, use o novo alias:

command_4

Conclusão

Este tutorial demonstra como instalar, proteger, configurar e validar uma instalação do Redis. Também demonstra como usar os recursos de segurança integrados do Redis para torná-lo menos vulnerável a ataques. No entanto, se alguém já estiver logado no servidor, é bastante fácil contornar os recursos de segurança específicos do Redis. É por isso que ter um firewall para proteger o acesso ao servidor Redis é crucial.

Boa computação!

author

Hark Labs

Autor · CloudSigma

Preslav Dobrev é um designer criativo na CloudSigma, focado na construção de uma identidade empresarial consistente por meio de canais de marketing tradicionais e inovadores. Ele é hábil em combinar a visão artística com o marketing estratégico para criar narrativas de marca impactantes.

Comentários

Nenhum comentário ainda. Seja o primeiro.