Ubuntu下Redis安全配置要点
配置密码认证是防止未授权访问的基础。编辑Redis配置文件(/etc/redis/redis.conf),找到requirepass参数,取消注释并设置强密码(建议至少16位,包含大小写字母、数字和特殊字符,定期更换)。修改后需重启Redis服务使配置生效。验证时通过redis-cli连接并执行AUTH your_password命令,成功后会返回OK。
限制Redis仅监听特定IP地址,减少暴露风险。修改bind参数,如仅允许本地访问则设置为bind 127.0.0.1;若需要内网访问,可添加内网IP(如bind 127.0.0.1 192.168.1.100),绝对禁止绑定0.0.0.0(会暴露给公网)。
默认端口6379易成为攻击目标,建议更改为1024-65535之间的非标准端口(如6380)。修改port参数后,重启Redis服务,并通过新端口连接(如redis-cli -p 6380)。可通过nmap扫描旧端口确认已关闭。
使用Ubuntu的ufw防火墙限制访问Redis端口的IP范围。例如,允许内网IP段(192.168.1.0/24)访问6380端口,拒绝其他IP:
sudo ufw allow from 192.168.1.0/24 to any port 6380
sudo ufw deny 6380
若使用iptables,可添加类似规则:iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 6380 -j ACCEPT; iptables -A INPUT -p tcp --dport 6380 -j DROP。
重命名或禁用高风险命令(如FLUSHALL清空数据库、CONFIG修改配置、SHUTDOWN关闭服务),防止恶意操作。在配置文件中添加:
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG "b840fc02d524045429941cc15f59e41cb7be6c52"
若无需使用,可直接禁用(设置为空字符串)。验证时执行相应命令会返回ERR unknown command。
避免以root用户运行Redis,降低权限滥用风险。创建专用用户(如redis):
sudo adduser --system --group --no-create-home redis
修改Redis数据目录和日志文件的所属用户:
sudo chown -R redis:redis /var/lib/redis
sudo chown -R redis:redis /var/log/redis
修改配置文件中的user参数为redis,重启服务后Redis将以该用户身份运行。
通过maxclients参数限制最大客户端连接数(如maxclients 100),防止资源耗尽攻击(如大量连接导致内存溢出)。默认值为10000,可根据服务器性能调整。
设置内存上限(maxmemory),避免Redis占用过多服务器内存(建议为系统总内存的80%,若为专用服务器可设为70%)。同时配置内存淘汰策略(maxmemory-policy),推荐使用allkeys-lru(移除最近最少使用的key)或volatile-lru(在设置了过期时间的key中移除最近最少使用的)。
开启Redis日志记录(logfile /var/log/redis/redis.log),便于追踪异常操作。使用监控工具(如Redis Monitor、Prometheus+Grafana)实时监控性能指标(如内存使用率、连接数、命中率),并设置报警规则(如内存超过90%时报警)。
保持Redis版本最新,及时修复已知漏洞(通过sudo apt update && sudo apt upgrade redis-server更新)。定期备份数据(如每日备份到/backup/redis目录),可使用redis-cli save命令生成RDB文件,或配置AOF持久化(appendonly yes)。