温馨提示×

Redis如何保障Linux系统安全

小樊
38
2025-11-30 17:50:59
栏目: 云计算

Redis在Linux上的安全加固清单

一 基础防护与网络边界

  • 保持软件更新:及时升级 RedisLinux 补丁,修复已知漏洞。
  • 监听与访问控制:在 /etc/redis/redis.conf 中仅监听本地或受控网段,例如 bind 127.0.0.1;必要时配合防火墙仅放行白名单网段与端口。
  • 防火墙策略:使用 UFW/iptables 限制来源 IP 与端口,例如仅允许内网网段访问 6379/tcp
  • 避免暴露公网:Redis 设计用于可信环境,默认不应直接暴露在公网;跨机房/公网通信需叠加加密通道或代理。
  • 修改默认端口:将 6379 改为非常见端口,降低自动化扫描命中率。
  • 最小权限运行:创建 redis 系统用户,禁止以 root 启动 Redis 服务。

二 身份与命令安全

  • 强口令认证:在配置中设置 requirepass <强密码>;主从复制从库需配置 masterauth 与主库一致。
  • 精细化授权:Redis 6.0+ 启用 ACL,按用户/命令/键前缀精细授权,避免使用单一高权限账户。
  • 禁用或重命名高危命令:通过 rename-command 禁用或重命名 CONFIG、FLUSHDB、FLUSHALL、SHUTDOWN、KEYS 等,降低被滥用风险。
  • 保护模式:开启 protected-mode yes,当未设置 bind 和密码时阻止外部访问。
  • Lua 脚本安全:避免执行来自不可信来源的 Lua;历史上部分版本存在 EVAL 沙箱逃逸风险,升级版本并严格输入校验。

三 加密传输与端口安全

  • 加密传输:跨公网或不可信网络时,启用 SSL/TLS 加密通信,配置 ssl-cert-filessl-key-file;客户端使用 –ssl 连接。
  • 端口与协议:仅开放必要端口(默认 6379/tcp),禁用不必要的协议与接口。
  • 通道加固:无法原生 TLS 时,可使用 spiped 等 SSL 代理或 SSH 隧道 建立加密通道。

四 持久化、备份与监控审计

  • 持久化策略:根据业务选择 RDB/AOF 或两者结合,并定期校验备份可用性;备份文件与密钥分开存放并设置严格权限。
  • 日志与监控:启用日志与 syslog,记录关键操作;使用 redis-cli --monitor 实时观测,结合系统监控与告警。
  • 审计与合规:使用 auditd 对 Redis 关键文件与命令进行审计追踪,定期复盘异常。
  • 高可用与故障隔离:部署 Redis Sentinel 实现故障切换与可用性提升,减少单点风险。

五 快速配置示例

  • 仅本地监听与保护模式
    • 编辑 /etc/redis/redis.conf
      • bind 127.0.0.1
      • protected-mode yes
  • 强口令与高危命令重命名
    • requirepass YourStrongPassword
    • rename-command CONFIG “”
    • rename-command FLUSHDB “”
    • rename-command FLUSHALL “”
  • 防火墙仅放行内网
    • UFW:ufw allow from 192.168.1.0/24 to any port 6379/tcp
    • iptables:
      • iptables -A INPUT -p tcp --dport 6379 -s 192.168.1.0/24 -j ACCEPT
      • iptables -A INPUT -p tcp --dport 6379 -j DROP
  • 启用 TLS(示例)
    • 生成证书:
      • openssl req -x509 -newkey rsa:4096 -keyout /etc/redis/ssl/redis.key -out /etc/redis/ssl/redis.crt -days 365 -nodes
    • 配置:
      • ssl on
      • ssl_cert_file /etc/redis/ssl/redis.crt
      • ssl_key_file /etc/redis/ssl/redis.key
    • 客户端:redis-cli --ssl --ssl-cert-file /path/redis.crt --ssl-key-file /path/redis.key
  • 以非 root 用户启动
    • 创建用户:useradd -s /usr/sbin/nologin -M redis
    • 以 redis 用户启动服务(按系统服务管理方式配置)

0