温馨提示×

Ubuntu Redis安全设置怎样做

小樊
41
2025-12-28 11:48:00
栏目: 云计算

Ubuntu 上 Redis 的安全设置清单

一 基础防护配置

  • 绑定与网络
    • 仅本地访问:在 /etc/redis/redis.conf 设置 bind 127.0.0.1 ::1,禁止外网直连。
    • 必须远程时:改为内网地址(如 bind 192.168.1.10),并确保外层网络与主机防火墙已限制来源。Redis 设计用于受信任环境,默认不应直接暴露在公网。
  • 认证与保护模式
    • 强密码:取消注释 requirepass,设置足够长且随机的密码(示例生成方式:echo “phrase” | sha256sum)。
    • 保护模式:保持 protected-mode yes,仅当绑定到 127.0.0.1 或已设置密码且来源受限时才更安全。
  • 防火墙与端口
    • 使用 UFW 仅允许可信网段访问 6379/tcp:sudo ufw allow from TRUSTED_IP to any port 6379;默认拒绝其他来源。
    • 如需全网开放,应先完成身份认证、来源限制与加密后再评估风险。
  • 危险命令
    • 禁用或重命名高危命令(在 redis.conf 的 SECURITY 段):
      • rename-command FLUSHDB “”
      • rename-command FLUSHALL “”
      • rename-command CONFIG “xxxxxxxx_CONFIG”
      • 可按需禁用/重命名 DEBUG、SHUTDOWN、KEYS 等。

二 系统与服务加固

  • 运行身份与最小权限
    • 确认以 redis 用户运行:ps aux | grep redis;必要时调整服务单元或配置文件的用户/组权限,避免使用 root
  • 配置文件与目录权限
    • 限制配置与数据目录:chmod 600 /etc/redis/redis.conf;确保 /var/lib/redisredis 可写。
  • 日志与监控
    • 启用日志并定期审计:logfile /var/log/redis/redis-server.log;结合监控工具观察 connected_clients、used_memory、instantaneous_ops_per_sec 等指标。
  • 补丁与版本
    • 定期更新:sudo apt update && sudo apt upgrade,及时修复已知漏洞。

三 远程访问与加密传输

  • 最小化暴露面
    • 优先通过应用侧或内网代理访问;若必须远程,仅开放给受控来源 IP,并配合强认证与命令重命名。
  • TLS 加密(Redis 6+)
    • 生成证书并启用 TLS(示例):
      • 生成自签名证书:
        • sudo mkdir -p /etc/redis/ssl
        • sudo openssl req -x509 -newkey rsa:4096 -keyout /etc/redis/ssl/redis.key -out /etc/redis/ssl/redis.crt -days 365 -nodes
      • 配置 redis.conf:
        • port 6380
        • tls-port 6380
        • tls-cert-file /etc/redis/ssl/redis.crt
        • tls-key-file /etc/redis/ssl/redis.key
        • tls-auth-clients no(或配置 CA/客户端证书以双向认证)
    • 客户端连接:redis-cli --tls -h HOST -p 6380 -a PASSWORD
  • 端口与协议
    • 不建议仅依赖更换默认端口(如 6380)来“隐蔽”服务,应与 TLS、来源限制、认证共同使用。

四 备份与高可用

  • 持久化与备份
    • 根据业务选择 RDB/AOF 或两者并用;定期备份 /var/lib/redis 到隔离位置,并验证可恢复性。
  • 高可用与故障切换
    • 生产环境建议部署 Redis Sentinel 或集群模式,提供故障检测、自动切换与读写分离能力。

五 快速验证与回滚

  • 本地连通与认证
    • redis-cli
    • AUTH YOUR_PASSWORD
    • PING(应返回 PONG
    • SET/GET 测试读写
  • 远程与加密
    • 非 TLS:redis-cli -h SERVER_IP -p 6379 -a PASSWORD
    • TLS:redis-cli --tls -h SERVER_IP -p 6380 -a PASSWORD
  • 监听与来源
    • ss -lntp | grep 6379(或 6380);确认仅监听预期地址与端口。
  • 回滚预案
    • 保留旧配置备份;变更后用 sudo systemctl restart redis-server 生效,异常立即恢复配置并审计日志。

0