Como Proteger Instalações Redis: Dicas Essenciais de Configuração

Proteja o Redis com vinculação de rede, modo protegido, ACLs ou senhas, acesso mais seguro a comandos, regras de firewall, privilégio mínimo e TLS.

Como Proteger Instalações Redis: Dicas Essenciais de Configuração

O Redis é rápido, simples e frequentemente confiado pelo código da aplicação com dados de sessão, filas, contadores e registros em cache. Isso torna a segurança do Redis importante: uma instância exposta pode permitir que um invasor leia dados, exclua chaves com FLUSHALL ou abuse de comandos administrativos.

Seu objetivo é tornar o Redis acessível apenas pelos sistemas que precisam dele, exigir autenticação, reduzir o acesso a comandos perigosos e proteger os arquivos que armazenam configuração e dados persistentes.


1. Configuração de Rede: Limitando a Exposição

A medida de segurança mais imediata é controlar em quais interfaces de rede o Redis escuta. Muitas instalações empacotadas do Redis vinculam-se ao localhost por padrão, mas imagens de contêiner, arquivos de configuração personalizados e implantações mais antigas podem diferir. Sempre verifique seu redis.conf ativo em vez de assumir que o padrão é seguro.

Vinculando a Interfaces Específicas (bind)

Você deve configurar o Redis para escutar apenas nas interfaces necessárias. Na maioria dos ambientes de produção, isso significa vincular apenas ao endereço de loopback ou a um endereço IP privado específico usado pelos servidores de aplicação.

Apenas Acesso Interno ou Local

Se o seu servidor de aplicação reside no mesmo host que o Redis, vincule exclusivamente ao endereço de loopback.

# Trecho de configuração do redis.conf
bind 127.0.0.1

Acesso Privado em Rede

Se seus servidores de aplicação estão em um segmento de rede privada e precisam de acesso à rede, vincule a esse endereço IP privado específico. Não vincule o Redis a um IP voltado para a internet pública. Se precisar de acesso remoto, coloque-o em uma rede privada e restrinja o tráfego com regras de firewall ou grupos de segurança.

# Liste os endereços IP internos específicos que devem acessar o Redis
bind 192.168.1.100 10.0.0.5

Entendendo o Modo Protegido

Desde o Redis 3.2, o modo protegido está habilitado por padrão nas compilações padrão do Redis. Ele ajuda a bloquear o acesso externo quando o Redis não está explicitamente configurado para clientes remotos. Trate-o como uma rede de segurança, não seu controle principal. Use restrições de vinculação, autenticação e regras de firewall.

Se você precisar desabilitá-lo para uma configuração específica, pode usar:

protected-mode no

Aviso: Desabilite protected-mode apenas quando tiver configurado corretamente bind, autenticação e filtragem de rede.

2. Autenticação e Controle de Acesso

Uma vez que o acesso à rede é restrito, a próxima camada de defesa é a autenticação. Os clientes só devem poder interagir com o Redis se fornecerem uma senha válida ou, preferencialmente, usarem o sistema moderno de Lista de Controle de Acesso (ACL).

Implementando Proteção por Senha (requirepass)

Use a diretiva requirepass no seu arquivo redis.conf para impor a autenticação do cliente. Isso atua como um segredo compartilhado global para segurança básica.

# Defina uma senha forte e única
requirepass T4h!S_Is_V3ry_S3cure_P@ss

Para conectar usando uma senha, os clientes devem usar o comando AUTH:

# Exemplo usando redis-cli
$ redis-cli
127.0.0.1:6379> AUTH T4h!S_Is_V3ry_S3cure_P@ss
OK
127.0.0.1:6379> PING
PONG

Segurança Avançada: Listas de Controle de Acesso (ACLs) do Redis

Para ambientes de produção executando Redis 6.0 e posteriores, ACLs são o método de autenticação preferido. ACLs permitem definir vários usuários com senhas específicas e permissões granulares (por exemplo, Usuário A só pode ler, Usuário B pode escrever em keyspaces específicos).

A configuração de ACL geralmente envolve definir usuários e suas regras no redis.conf ou em um arquivo ACL separado:

# Exemplo de definições de usuário ACL no redis.conf ou em um aclfile
user default off
user app_reader on >app_read_P@ss ~cache:* +get +scan
user app_writer on >app_write_P@ss ~data:* +set +del

Renomeando ou Desabilitando Comandos Perigosos

Certos comandos administrativos (como FLUSHALL, CONFIG, KEYS e SHUTDOWN) podem causar interrupções operacionais ou expor detalhes sensíveis de configuração se mal utilizados. É uma boa prática renomear esses comandos para nomes obscuros ou desabilitá-los completamente.

Para renomear um comando, use rename-command:

# Renomeie o comando CONFIG para evitar alterações não autorizadas
rename-command CONFIG HIDE_MY_CONFIG

# Desabilite FLUSHALL completamente
rename-command FLUSHALL ""

3. Melhores Práticas de Segurança Operacional

Além da configuração interna do Redis, aplicar medidas robustas de segurança operacional externa é crucial para uma postura de segurança completa.

Aplique Regras de Firewall Rigorosas

Independentemente da configuração da diretiva bind, sempre aplique filtragem de rede usando grupos de segurança em nuvem, iptables ou soluções de firewall semelhantes. A porta padrão do Redis (6379) deve estar aberta apenas para os endereços IP específicos ou faixas de IP de seus servidores de aplicação confiáveis.

Exemplo de Regra de Firewall (Linux/iptables)

Permita tráfego de entrada na porta 6379 apenas de um endereço IP de servidor de aplicação conhecido (192.168.1.50):

# Permita servidor de aplicação específico
iptables -A INPUT -p tcp -s 192.168.1.50 --dport 6379 -j ACCEPT

# Negue outro tráfego Redis de entrada
iptables -A INPUT -p tcp --dport 6379 -j DROP

Executando com Privilégio Mínimo

Nunca execute o processo do servidor Redis como usuário root. Se um invasor comprometer o processo Redis, executá-lo como root concede a ele controle total sobre todo o sistema operacional.

Crie um usuário de sistema dedicado e não privilegiado, como redis, e configure seu gerenciador de serviços para executar o processo Redis como esse usuário. Com systemd, isso é normalmente tratado no arquivo de unidade com diretivas como User=redis e Group=redis, ou pelo serviço empacotado que sua distribuição fornece.

Protegendo Arquivos de Configuração e Persistência

O arquivo redis.conf contém informações sensíveis como a senha requirepass e configurações de rede. Garanta que este arquivo, juntamente com os arquivos de persistência (snapshots RDB e logs AOF), seja protegido por permissões de arquivo restritivas, impedindo leitura ou modificação não autorizada por outros usuários do sistema.

# Exemplo de permissões recomendadas
# Apenas o usuário 'redis' e root devem ler/escrever
chown redis:redis /etc/redis/redis.conf
chmod 600 /etc/redis/redis.conf

Implemente Criptografia SSL/TLS

Para ambientes onde o tráfego Redis atravessa um segmento de rede não confiável (mesmo internamente), implemente criptografia SSL/TLS. Embora o Redis historicamente não tivesse suporte nativo a TLS, versões modernas (a partir do Redis 6) o suportam totalmente. Configurar TLS requer gerar certificados e definir diretivas relevantes no redis.conf:

# Habilite o listener TLS
tls-port 6379
port 0
tls-auth-clients yes
tls-cert-file /etc/redis/tls/redis.crt
tls-key-file /etc/redis/tls/redis.key
tls-ca-cert-file /etc/redis/tls/ca.crt

port 0 desabilita o listener de texto simples. Mantenha uma porta de texto simples apenas quando cada cliente que a usa estiver em um caminho local confiável e você tiver um motivo claro.

Resumo das Etapas Essenciais de Segurança

Proteger uma instalação Redis é um trabalho em camadas. Comece com a exposição, depois autenticação e, em seguida, controles operacionais:

  1. Restrinja o Acesso à Rede: Use bind 127.0.0.1 ou IPs privados específicos.
  2. Force a Autenticação: Use requirepass (básico) ou ACLs (avançado).
  3. Fortaleça Comandos: Desabilite ou renomeie comandos administrativos perigosos (FLUSHALL, CONFIG).
  4. Use Firewalls: Permita apenas tráfego na porta 6379 de servidores de aplicação confiáveis.
  5. Privilégio Mínimo: Execute o processo Redis como um usuário dedicado não root.
  6. Criptografe o Tráfego: Habilite SSL/TLS para conexões de rede quando apropriado.