温馨提示×

centos redis配置安全设置指南

小樊
34
2025-12-17 11:24:57
栏目: 云计算

CentOS Redis 安全配置指南

一 基础防护配置

  • 绑定与网络最小化暴露:在 /etc/redis/redis.conf 中设置仅监听本地或内网地址,例如 bind 127.0.0.1(如需从特定主机访问,可改为内网 IP,如 bind your_private_ip)。如确需远程访问,务必配合防火墙白名单与强认证,避免暴露在公网。
  • 启用保护模式:保持 protected-mode yes,仅当客户端来自受信网络且完成认证时才允许操作;不建议为远程开放而关闭该模式。
  • 设置强密码:取消注释并配置 requirepass <强密码>;可使用命令生成高强度口令,例如:echo “your_phrase” | sha256sum,将输出作为密码。
  • 禁用或重命名危险命令:在 redis.conf 的 SECURITY 段将 FLUSHDB、FLUSHALL、DEBUG、SHUTDOWN、CONFIG 等重命名为不可猜测的名称或置空(如:rename-command FLUSHDB “”)。注意:重命名命令会影响 AOF 重放复制,需在主从/副本上保持完全一致。
  • 最小权限运行:避免使用 root 启动 Redis,创建专用系统用户并以其身份运行服务;同时收紧 Redis 数据目录与配置文件的权限,仅允许必要用户读取。

二 防火墙与端口策略

  • 仅本地访问:若仅本机使用,保持默认 bind 127.0.0.1 且无需额外防火墙放行。
  • 指定来源访问:使用 firewalld 创建专用区域并仅放行受信客户端 IP 与端口(默认 6379/TCP)。示例:
    • 新建区域:sudo firewall-cmd --permanent --new-zone=redis
    • 放行端口:sudo firewall-cmd --permanent --zone=redis --add-port=6379/tcp
    • 仅允许某私有 IP:sudo firewall-cmd --permanent --zone=redis --add-source=client_private_IP
    • 重载规则:sudo firewall-cmd --reload
  • 云环境补充:除系统防火墙外,还需在云厂商安全组仅允许指定来源 IP 访问对应端口。

三 端口与传输安全

  • 修改默认端口:将 port 6379 改为非默认端口(如 16379),并在防火墙/安全组同步放行新端口,降低自动化扫描命中率。
  • 加密传输(可选但推荐):在公网或跨机房访问时,启用 SSL/TLS。使用 OpenSSL 生成证书与私钥:
    • 生成:openssl req -x509 -newkey rsa:4096 -keyout redis.key -out redis.crt -days 365
    • 配置:在 redis.conf 中启用 SSL 并指定证书与私钥路径,同时保留强密码与访问控制。

四 运行与维护安全

  • 服务管理与最小权限:使用 systemd 管理 Redis 服务,确保以非 root 用户运行;必要时通过 LimitNOFILE 等限制提升文件描述符上限。
  • 日志与监控:配置合理的日志级别与输出路径(如 loglevel noticelogfile /var/log/redis/redis.log),并接入监控告警,及时发现异常连接与命令执行。
  • 补丁与版本:定期更新 Redis 与系统组件,关注官方安全公告,及时修复已知漏洞。
  • 验证与演练:变更后重启服务并进行连通性与权限验证(如本地/远程连接、AOF 与复制一致性检查、重命名命令可用性测试)。

五 最小化配置示例

# /etc/redis/redis.conf 关键项示例(按需调整)
bind 127.0.0.1
protected-mode yes
port 16379
requirepass <强密码>   # 例如:echo "phrase" | sha256sum 的输出
loglevel notice
logfile /var/log/redis/redis.log

# 危险命令重命名或禁用
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command DEBUG ""
rename-command SHUTDOWN SHUTDOWN_MENOT
rename-command CONFIG ASC12_CONFIG

应用与验证要点:

  • 重启服务:sudo systemctl restart redis
  • 本地连通性:redis-cli ping → 返回 PONG
  • 认证测试:redis-cli 后执行 AUTH <强密码>,再执行 SET/GET 验证权限生效

0