温馨提示×

如何通过配置提升Linux Redis安全性

小樊
46
2025-11-10 22:02:40
栏目: 云计算

1. 修改默认配置:绑定IP与启用保护模式
将Redis绑定到本地IP(127.0.0.1)或内网IP,限制外部网络直接访问,在redis.conf中设置bind 127.0.0.1;启用保护模式(protected-mode yes),当未绑定IP且未设置密码时,拒绝非本地连接,防止未授权访问。

2. 设置强密码认证
redis.conf中取消requirepass注释,设置复杂密码(包含大小写字母、数字、特殊字符,长度≥12位),例如requirepass Xh@9Lp2#Qz3$。修改后需重启Redis服务使配置生效,客户端连接时需通过AUTH 密码命令验证。

3. 禁用或重命名危险命令
通过rename-command指令禁用或重命名高风险命令,避免恶意使用:

  • 禁用FLUSHALL(清空所有数据)、FLUSHDB(清空当前数据库):rename-command FLUSHALL ""
  • 禁用CONFIG(修改配置)、KEYS(遍历所有键):rename-command CONFIG "x89sKf21@Lm"rename-command KEYS "y78tGh45#Pz"
  • 重命名SHUTDOWN(关闭服务)为不可猜测的字符串:rename-command SHUTDOWN "z67uJk90*Qw"
    修改后需重启Redis生效。

4. 配置防火墙限制访问
使用ufw(Ubuntu)或iptables(CentOS)配置防火墙规则,仅允许受信任的IP地址访问Redis端口(默认6379):

  • Ubuntu:sudo ufw allow from 192.168.1.100 to any port 6379(允许192.168.1.100访问),然后sudo ufw enable启用防火墙;
  • CentOS:sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 6379 -j ACCEPT(允许192.168.1.100),sudo iptables -A INPUT -p tcp --dport 6379 -j DROP(拒绝其他IP),最后sudo service iptables save保存规则。

5. 使用SSL/TLS加密通信
生成SSL证书(密钥+证书文件),在redis.conf中启用SSL:

  • 生成证书:mkdir -p /etc/redis/ssl && cd /etc/redis/sslopenssl req -x509 -newkey rsa:4096 -keyout redis.key -out redis.crt -days 365 -nodes(自签名证书);
  • 合并证书:cat redis.key redis.crt > redis.pem
  • 配置SSL:ssl onssl_cert_file /etc/redis/ssl/redis.pemssl_key_file /etc/redis/ssl/redis.pem
    重启Redis后,客户端需使用--tls参数连接(如redis-cli --tls -h 192.168.1.100 -p 6379 -a 密码)。

6. 限制资源与连接数
通过maxclients参数限制最大客户端连接数(如maxclients 1000),防止资源耗尽攻击;调整timeout参数(如timeout 300),关闭空闲超过5分钟的连接,释放资源。

7. 定期更新Redis版本
保持Redis为最新稳定版本(如Redis 7.x),及时应用官方发布的安全补丁,修复已知漏洞(如缓冲区溢出、命令注入等)。可通过sudo apt update && sudo apt upgrade redis-server(Ubuntu)或sudo yum update redis(CentOS)更新。

8. 启用日志与监控
redis.conf中配置详细日志记录,便于追踪异常活动:

  • 日志级别设为notice(生产环境推荐):loglevel notice
  • 指定日志文件路径:logfile /var/log/redis/redis.log
  • 启用系统日志:syslog-enabled yessyslog-ident redissyslog-facility local0
    同时使用监控工具(如Prometheus+Granafa、Zabbix)监控Redis的连接数、内存使用、命令执行等指标,及时发现异常。

9. 使用非root用户运行Redis
创建专用Redis用户(如redis),并修改Redis数据目录与配置文件的所属用户:

  • 创建用户:sudo useradd -r -s /sbin/nologin redis
  • 修改目录权限:sudo chown -R redis:redis /var/lib/redis(数据目录)、sudo chown redis:redis /etc/redis/redis.conf(配置文件);
  • 以redis用户启动服务:sudo -u redis /usr/bin/redis-server /etc/redis/redis.conf
    避免以root用户运行,降低权限提升风险。

10. 备份与恢复策略
定期备份Redis数据(如每日增量备份、每周全量备份),使用BGSAVE命令(异步备份)或SAVE命令(同步备份)生成RDB文件,存储到安全位置(如远程服务器、云存储)。备份文件需加密(如使用GPG),防止泄露。

0