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 notice、logfile /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 验证权限生效