温馨提示×

Redis如何在Ubuntu上安全配置

小樊
40
2025-12-24 14:48:01
栏目: 云计算

Ubuntu 上 Redis 的安全配置清单

一 基线加固

  • 安装与基础检查
    • 更新索引并安装:sudo apt update && sudo apt install redis-server
    • 确认服务运行与开机自启:sudo systemctl status redis-serversudo systemctl enable redis-server
    • 连接测试:redis-cli ping(应返回 PONG
  • 绑定与监听
    • 仅本地访问:编辑 /etc/redis/redis.conf,确保包含 bind 127.0.0.1 ::1
    • 验证监听地址:sudo netstat -lnp | grep redis(应仅见 127.0.0.1:6379::1:6379
  • 防火墙
    • 启用 UFWsudo ufw enable
    • 默认策略为拒绝入站;如未开放 SSH,先放行:sudo ufw allow OpenSSH
    • 在未放开 6379 的情况下,外部不可达 Redis(推荐保持此策略)
  • 系统服务与集成
    • 使用 systemd 管理:设置 supervised systemd(在 /etc/redis/redis.conf 中)以便与 systemd 正确集成

二 身份与命令防护

  • 强密码认证
    • /etc/redis/redis.conf 的 SECURITY 段取消注释并设置:requirepass <强密码>
    • 重启生效:sudo systemctl restart redis-server
    • 验证:连接后执行命令应返回 (error) NOAUTH Authentication required.,使用 auth <强密码> 后恢复正常
  • 重命名或禁用危险命令
    • 禁用示例:rename-command FLUSHDB “”rename-command FLUSHALL “”rename-command DEBUG “”
    • 重命名示例:rename-command SHUTDOWN SHUTDOWN_MENOTrename-command CONFIG ASC12_CONFIG
    • 重启生效:sudo systemctl restart redis-server
    • 验证:被重命名/禁用的命令应不可用或返回未知命令错误
  • ACL 用户管理(Redis 6+)
    • 创建受限用户:ACL SETUSER appuser on >StrongPass123 ~cache: +@read +@write -@dangerous*
    • 验证:ACL LISTAUTH appuser、尝试受限/禁止命令以确认权限边界

三 网络安全与访问控制

  • 原则
    • Redis 设计用于受信任环境受信任客户端,不建议直接暴露在公网或不安全网络中
  • 必须远程访问时的做法
    • 保持默认 bind 127.0.0.1,通过应用所在主机的本地端口转发或 SSH 隧道访问:
      • 示例:ssh -L 6380:127.0.0.1:6379 user@redis-host -N
      • 应用连接 127.0.0.1:6380,隧道流量经 SSH 加密
    • 如确需开放网络访问(不推荐):
      • 仅绑定内网地址(如 bind 10.0.0.10),严禁 bind 0.0.0.0
      • 使用 UFW 精确放行来源网段:sudo ufw allow from 10.0.1.0/24 to any port 6379 proto tcp
      • 变更端口并不能替代认证与访问控制,仍需强密码/ACL 与命令重命名

四 运行环境与持久化

  • 运行身份与目录权限
    • 建议创建专用系统用户(如 redis)并以该用户运行;确保 /var/lib/redis/var/log/redis 归属该用户且权限最小化
  • 日志与监控
    • 配置日志文件(如 logfile /var/log/redis/redis.log),集中采集与安全审计
    • 监控关键指标(命中率、连接数、慢查询、复制延迟),设置告警
  • 持久化策略
    • 根据业务选择 RDBAOF,并定期备份快照与配置;在异常重启后可快速恢复
  • 内存与驱逐策略
    • 设置 maxmemory 与合适的 maxmemory-policy(如 allkeys-lruvolatile-lru),避免 OOM 导致进程被杀或数据丢失

五 快速核查与回滚

  • 核查清单
    • 监听地址仅限本地:sudo netstat -lnp | grep redis
    • 防火墙策略:sudo ufw status verbose
    • 密码与 ACL:连接后执行 AUTH <密码>ACL LIST 验证
    • 危险命令:尝试 FLUSHDB/FLUSHALL/CONFIG/SHUTDOWN 确认已被重命名或禁用
    • 服务状态:sudo systemctl is-active redis-serversudo systemctl is-enabled redis-server
  • 回滚要点
    • 恢复 bind 127.0.0.1 ::1 并重启
    • 移除或注释 requirepassrename-command 相关行并重启
    • 关闭对外端口并恢复 UFW 默认拒绝策略

注意:任何对外暴露或修改默认网络配置都可能引入安全风险。生产环境请优先采用本地访问或 SSH 隧道,并在变更前在测试环境验证与备份配置。

0