Redis Criptografia

Redis Criptografia

“Redis é um banco de dados de alto desempenho amplamente usado, capaz de armazenar uma variedade de estruturas de dados. Como é usado por aplicativos de grande nível corporativo para provisionar cache, sistemas de mensagens e capacidades de banco de dados, os aspectos de segurança e criptografia de dados são igualmente importantes como o desempenho. Na última década, houve uma tendência crescente em ataques maliciosos que foram acionados contra bancos de dados para revelar informações confidenciais ou alterar os dados. Portanto, o risco é o mesmo com os aplicativos que usam back -ends Redis.

Redis é fundamentalmente projetado para conexões autorizadas em ambientes confiáveis. Portanto, recomenda -se não expor a porta do banco de dados Redis ao público em geral ou na Internet e nas redes não confiáveis. Na maioria dos casos em que os aplicativos da Web geram conteúdo, consultando o Redis Store e pressionam dados com base nas solicitações do cliente, é obrigatório implementar uma camada intermediária para restringir ou filtrar solicitações de clientes que estão chegando pelos aplicativos da Web. Redis fornece uma variedade de medidas de criptografia e segurança, como listas de controle de acesso (ACL), suporte de TLS e criptografia em repouso para proteger os dados.”

Permitir tráfego confiável com autenticação Redis & ACL (listas de controle de acesso)

Como mencionado, por design, Redis não é seguro para expor a redes não confiáveis, Internet e conexões de clientes. Se for o caso, o Redis fornece um mecanismo de autenticação de banco de dados em que os clientes devem autenticar usando um nome de usuário e senha. Cada usuário está associado a um conjunto limitado de funcionalidades, teclas Redis e comandos. Isso restringiria certos clientes, tendo apenas as permissões para executar comandos de leitura, mas não os comandos de gravação. Além disso, o ACL é usado para restringir comandos de alto risco como Flushall e FlushDB de fontes não confiáveis. Além disso, o Redis possui uma variedade de comandos de configuração introduzidos para gerenciar a instância do Redis nas configurações no local e na nuvem. Esses comandos de configuração não são muito úteis para os consumidores. Então, o ACL consegue esconder esses comandos do público também.

Autenticação

Geralmente, o arquivo de configuração Redis contém uma linha chamada requerePass que pode ser usado para ativar a autenticação de senha para uma determinada instância do Redis Database. Com esta opção habilitada, clientes não autenticados não terão acesso ao banco de dados. O comando auth é usado para autenticar usuários para os bancos de dados Redis. É estendido da versão 6 Redis, que pode ser usada com dois parâmetros da seguinte forma.

Auth

Inspecionando o ACL para uma instância Redis

Redis ACLs pode ser inspecionado usando o comando ACL List, conforme mostrado no seguinte. Geralmente, exibe informações detalhadas relacionadas a um usuário, como um nome de usuário, status de senha (exigido ou não), chaves de acesso, comandos e canais pub/sub -canais.

Lista da ACL



A saída acima pode ser interpretada da seguinte maneira.


Diferentes regras da ACL estão disponíveis para criar usuários corretos com níveis mínimos de acesso à instância do banco de dados Redis. O comando ACL SetUser pode ser usado para configurar diferentes usuários com diferentes níveis de acesso.

Encrypt transferiu dados usando Redis TLS

Da versão 6 Redis, SSL/TLS foi suportado. Ele criptografa os dados enviados sobre todos os canais de comunicação Redis, como conexões de clientes, conexões de cluster, sentinelas e links de replicação. Além disso, o Redis SSL/TLS precisa ser ativado no tempo de compilação.

Por padrão, os servidores Redis são executados no modo normal, o que não suporta criptografia SSL/TLS. Portanto, você precisa iniciar explicitamente a instância Redis no modo TLS, como mostrado no seguinte.

Redis-Server-TLS-PORT 6379 --Port 0-TLS-CERT FALE ./reditls/tls/redis.CRT-TLS-KEY-FILE ./reditls/tls/redis.Chave-TLS-CA-CERT FILE ./Reditls/TLS/CA.Crt


Assumimos que todos os certificados e chaves SSL estão disponíveis. Da mesma forma, para iniciar uma conexão com o cliente, devemos usar o sinalizador -TLS, juntamente com as teclas SSL e os certificados necessários da seguinte maneira.

Redis-cli--tls--cert ./reditls/tls/redis.CRT -Key ./reditls/tls/redis.Chave --Cacert ./Reditls/TLS/CA.Crt


Além disso, a instância Redis deve ser configurada com um X.509 Certificado e chave privada também.

Criptografia SSL/TLS em Comunicação de Replicação, Sentinel e Cluster

Replicação

Em Redis, quando a replicação é ativada, a instância mestre usa o TLS-port e TLS-Auth-clients Opções para que os clientes saibam a porta que aceita conexões TLS e se a autenticação do cliente é necessária ou não. Da mesma forma, em instâncias de réplica, é recomendável usar a criptografia SSL/TLS para conexões de saída em relação às instâncias mestras. Nesse caso, o replicação TLS a opção deve ser definida como sim.

Sentinela

Sempre que o Redis Sentinel é ativado para altas necessidades de disponibilidade, o replicação TLS A opção decide se a conexão TLS ou não-TLS deve ser usada ao se conectar aos servidores mestre. Da mesma forma, a mesma diretiva governa as conexões que recebem de outros sentinelas são SSL/TLS ativadas ou não. Se o replicação TLS conjuntos de diretivos para sim, o TLS-port a opção deve ser atribuída com a porta apropriada também.

Conjunto

Quando os clusters são usados ​​no Redis, é recomendável fornecer canais de comunicação seguros para barramentos de cluster e links de agrupamento de cluster. Redis fornece o tls-cluster Diretiva para determinar o suporte para a criptografia SSL/TLS entre os nós do cluster. Esta diretiva deve ser definida como sim Quando você precisa de uma conexão TLS para enviar dados de um nó para outro.

Criptografia em repouso

Redis é implantado em ambientes locais e de nuvem. Nas implantações em nuvem, a comunicação restante é sempre criptografada. Os principais provedores de nuvem, como AWS, Azure e GCP Provision Redis implantações via canais criptografados. Além disso, a Amazon Cloud fornece recursos de criptografia em trânsito listados abaixo.

    • A comunicação mestre-replica é criptografada em instâncias de Redis implantadas da AWS.
    • Conexões de servidor e cliente habilitadas para SSL
    • Suporte de autenticações de clientes e servidores usando o comando Redis Auth discutido em uma seção anterior.

Conclusão

Em resumo, o Redis não foi projetado para expor sua porta TCP a conexões de clientes não confiáveis ​​em ambientes não confiáveis. Por design, foi desenvolvido apenas para fontes confiáveis. Como mencionado, no caso de Redis exposto ao público por meio de um aplicativo da web, uma camada de segurança adicional deve ser implementada entre as conexões do cliente e a instância de Redis. De acordo com este artigo, o Redis suporta listas de controle de acesso (ACLs), suporte ao TLS e criptografia em repouso para mitigar ataques maliciosos. Além disso, discutimos o suporte SSL/TLS para o cluster Redis, réplica e comunicação sentinela também. No geral, é recomendável praticar as técnicas acima sempre que a instância Redis é exposta ao público.