redis-security

Par redis · agent-skills

Conseils de sécurité Redis couvrant l'authentification (requirepass et utilisateurs ACL), TLS, le contrôle d'accès par moindre privilège basé sur les ACL, la restriction de l'exposition réseau via bind et protected-mode, les règles de pare-feu, et la désactivation des commandes dangereuses. À utiliser lors du déploiement de Redis en production, de la définition d'utilisateurs ACL pour une application, de la configuration de connexions TLS, du verrouillage d'une instance Redis derrière un pare-feu, ou de l'audit d'un déploiement Redis dans une optique de durcissement de la sécurité.

npx skills add https://github.com/redis/agent-skills --skill redis-security

Sécurité Redis

Durcissement en production pour Redis : authentification, contrôle d'accès basé sur les ACL, et exposition réseau. Couvrir les trois ensemble — chacun seul laisse une faille exploitable.

Quand appliquer

  • Déployer ou examiner une instance Redis destinée à la production.
  • Configurer des credentials d'application au-delà d'un mot de passe partagé.
  • Auditer un déploiement Redis par rapport à une checklist de sécurité.
  • Recevoir des findings "Redis exposé à internet" d'un scanner.

1. Toujours authentifier (et utiliser TLS)

Ne jamais exécuter un Redis de production sans mot de passe. Associer l'authentification à TLS pour que les credentials et les données ne soient pas envoyés en clair.

# redis.conf
requirepass your-strong-password
tls-port 6380
tls-cert-file /path/to/redis.crt
tls-key-file  /path/to/redis.key
r = redis.Redis(
    host="localhost",
    port=6380,
    password="your-strong-password",
    ssl=True,
    ssl_cert_reqs="required",
)

Si tu peux utiliser des utilisateurs ACL (section suivante) à la place du requirepass unique, fais-le — requirepass est effectivement le raccourci hérité de l'« utilisateur par défaut ».

Voir references/auth.md.

2. ACLs pour un accès avec moindre privilège

L'utilisateur default avec un mot de passe partagé convient au développement. Pour la production, donner à chaque application un utilisateur ACL dédié avec seulement les commandes et patterns de clés dont elle a réellement besoin.

# Lecteur cache uniquement
ACL SETUSER app_readonly on >password ~cache:* +get +mget +scan

# Writer qui ne peut pas exécuter les opérations dangereuses
ACL SETUSER app_writer   on >password ~*        +@all -@dangerous

# Admin (à utiliser avec parcimonie, jamais pour le trafic d'application)
ACL SETUSER admin        on >strong-password ~* +@all

Catégories de commandes utiles :

Catégorie Ce qu'elle couvre
@read Commandes de lecture (GET, MGET, HGET, ...)
@write Commandes d'écriture (SET, DEL, XADD, ...)
@dangerous FLUSHALL, DEBUG, KEYS, etc.
@admin Commandes administratives

Si les credentials de l'app fuient, une ACL stricte limite le rayon d'explosion — l'attaquant ne peut pas FLUSHALL ta DB juste parce qu'il a volé le mot de passe d'un lecteur de cache.

Voir references/acls.md.

3. Restreindre l'accès réseau

La violation Redis la plus courante est un Redis sur l'internet public sans auth. L'éviter avec trois couches :

# redis.conf — bind sur des interfaces spécifiques, keep protected-mode on
bind 127.0.0.1 192.168.1.100
protected-mode yes
# Firewall — autoriser seulement les subnets d'application
iptables -A INPUT -p tcp --dport 6379 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 6379 -j DROP

Anti-pattern : bind 0.0.0.0 + protected-mode no — expose Redis à tout le réseau sans protection.

Optionnel mais recommandé : renommer ou désactiver les commandes destructrices pour qu'un client compromis ne puisse pas endommager la DB :

rename-command FLUSHALL ""
rename-command DEBUG ""
rename-command CONFIG ""

Voir references/network.md.

Références

Skills similaires