温馨提示×

Redis在Debian上的安全策略

小樊
32
2025-12-23 02:07:43
栏目: 云计算

Redis 在 Debian 上的安全策略

一 基线加固

  • 网络最小化暴露:将服务仅绑定在内网接口,例如 bind 127.0.0.1 或内网 bind 192.168.1.100;如必须对外,仅开放给受控网段。启用 protected-mode yes,在未设置密码且来源非本地回环时拒绝访问。
  • 强制身份认证:设置强口令 requirepass <强密码>;Debian 上配置文件默认路径为 /etc/redis/redis.conf
  • 禁用或重命名高危命令:如 FLUSHALL、FLUSHDB、CONFIG、SHUTDOWN,建议重命名为不可猜测字符串,或直接禁用(置空)。
  • 最小权限运行:创建系统用户 redis(如 adduser --system --group --no-create-home redis),配置服务以该用户运行,禁止以 root 启动。
  • 系统服务集成:在 /etc/redis/redis.conf 中将 supervised systemd,便于由 systemd 管理并遵循最小权限原则。

二 传输与访问控制

  • 传输加密:启用 TLS/SSL 保护数据面,配置 tls-port 6379、tls-cert-file、tls-key-file、tls-ca-cert-file,对外或对跨机房通信时强制使用 TLS。
  • 防火墙与网络隔离:使用 ufw 或云安全组仅允许受控来源访问 6379/tcp,例如 ufw allow from 10.0.0.0/8 to any port 6379;生产环境优先通过内网/VPC 访问。
  • 精细权限控制:Redis 6+ 使用 ACL 为不同应用分配最小权限,例如只读用户仅授予 +get、+scan、+ping 等必要命令。

三 漏洞与风险处置

  • Debian 特定 Lua 沙箱问题(CVE-2022-0543):仅在 Debian/Ubuntu 打包的 Redis ≤ 6.2.6 存在风险,表现为 Lua 脚本可能绕过沙箱执行系统命令。修复方案为升级到包含修复的版本(≥ 6.2.6 的修复版本,同时 6.0.16 亦包含修复),建议直接升级至 7.x 稳定版并持续跟踪安全公告。
  • 未授权访问常见利用:若暴露在公网且未设密码/绑定不当,攻击者可读取敏感信息、写入 SSH 公钥、写入 WebShell、篡改持久化目录,甚至通过主从复制或计划任务实现远程代码执行。务必落实基线加固与网络隔离,避免成为攻击跳板。

四 运维与监控

  • 日志与审计:启用并记录关键日志,默认日志路径 /var/log/redis/redis-server.log;按需调整 loglevel 并集中到 syslog,便于审计与告警。
  • 版本与补丁:定期执行 sudo apt update && sudo apt upgrade redis-server,及时获取安全修复;变更配置后使用 systemctl restart redis 滚动生效并观察状态。
  • 备份与恢复:结合 RDB/AOF 持久化制定备份策略(如定时快照、AOF 开启与定期校验),并进行离线/异地备份演练,确保可恢复性。

五 最小化配置示例 redis.conf 片段

# 网络与保护
bind 127.0.0.1
port 6379
protected-mode yes

# 认证与命令
requirepass YourStrongPassw0rd!
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
rename-command SHUTDOWN ""

# TLS(可选,跨机房/公网必配)
# tls-port 6379
# tls-cert-file /path/to/cert.pem
# tls-key-file /path/to/key.pem
# tls-ca-cert-file /path/to/ca.crt

# ACL(Redis 6+,示例只读用户)
# ACL SETUSER reader on >readerPass +get +scan +ping
# ACL SETUSER writer on >writerPass +set +get +del

# 日志与持久化
logfile /var/log/redis/redis-server.log
appendonly yes
appendfsync everysec

说明:Debian 默认配置文件路径为 /etc/redis/redis.conf;修改后执行 systemctl restart redis 使配置生效。

0