Redis 在 Debian 上的安全配置清单
一 网络与访问控制
- 将服务绑定到本地或内网接口,避免暴露在公网。编辑 /etc/redis/redis.conf:设置仅监听本地 bind 127.0.0.1 ::1;如确需远程,仅绑定内网地址(如 bind 192.168.1.100),并确保有严格的网络边界控制。
- 保持或启用 protected-mode yes,在未设置密码且允许远程时,保护模式会限制仅本地访问,降低误暴露风险。
- 通过防火墙限制来源:如使用 ufw 仅允许应用网段访问 6379/tcp,或采用 iptables 对来源网段放行、其余拒绝。
- 如需加密传输,启用 TLS/SSL(Redis 6.0+):配置 tls-port 6379(或另设端口)、tls-cert-file、tls-key-file、tls-ca-cert-file,客户端使用 TLS 连接。
二 身份与命令安全
- 设置强密码认证:在 redis.conf 配置 requirepass <强密码>;如部署 Redis 6.0+,使用 ACL 做细粒度授权,例如:
- 只读用户:ACL SETUSER reader on >reader123 allkeys +get +scan +ping
- 读写用户:ACL SETUSER writer on >writer123 allkeys +set +get +del
- 禁用或重命名高危命令,降低被滥用风险:
- 直接禁用:rename-command FLUSHALL “”、rename-command FLUSHDB “”、rename-command CONFIG “”
- 保留但改名:rename-command KEYS “JOYAPNXRPmcarcR4ZDgC”(示例为不可猜测字符串)
- 避免将 requirepass/masterauth 等敏感信息以明文形式暴露给客户端或日志;必要时通过重命名或访问控制限制 CONFIG 等敏感命令的使用。
三 系统与文件权限
- 使用专用的 redis 系统用户运行服务,禁止以 root 直接启动:创建用户(如 adduser --system --group --no-create-home redis),并在服务单元或配置中指定 User=redis / Group=redis。
- 收紧关键文件与目录权限:配置文件 chmod 600 /etc/redis/redis.conf;数据目录 chmod 700 /var/lib/redis,确保仅 redis 用户可读写。
- 如启用 Unix 域套接字,设置严格的权限(如 unixsocketperm 700),仅允许受控用户访问。
四 运行与运维安全
- 保持 Redis 版本更新:执行 sudo apt update && sudo apt upgrade redis-server,及时获取安全修复。
- 变更配置后按序重启并验证:sudo systemctl restart redis-server,使用 sudo systemctl status redis-server 检查运行状态。
- 建立备份与恢复机制,定期备份 RDB/AOF 数据;启用监控与日志审计,关注异常连接与命令执行。
- 避免在生产环境使用 Snap 安装(隔离但存在性能与运维限制),优先 APT 或可控的源码部署。
五 最小化配置示例 redis.conf 片段
# 网络与监听
bind 192.168.1.100
protected-mode yes
port 6379
# 如需TLS,取消注释并配置证书路径
# tls-port 6380
# tls-cert-file /etc/redis/redis.crt
# tls-key-file /etc/redis/redis.key
# tls-ca-cert-file /etc/redis/ca.crt
# 身份与命令
requirepass YourStrongP@ssw0rd!
# ACL 示例(Redis 6+)
# ACL SETUSER reader on >reader123 allkeys +get +scan +ping
# ACL SETUSER writer on >writer123 allkeys +set +get +del
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
# 系统与文件(配合系统权限设置)
# unixsocket /run/redis.sock
# unixsocketperm 700
提示:以上为关键项示例,完整配置请结合业务与合规要求调整,变更前在测试环境验证,变更后及时备份并滚动重启。