配置优化
- 禁用危险命令:在Redis配置文件(
redis.conf
)中,通过 rename-command
指令将 EVALSHA
命令重命名为一个复杂且难以猜测的字符串,甚至可以使用 rename-command EVALSHA ""
来彻底禁用该命令,如果业务不需要使用它。例如:
rename-command EVALSHA abcdef1234567890
- 设置安全模式:启用
sandbox
模式(Redis 6.0+),该模式限制了Lua脚本的一些危险操作,如文件系统访问、网络访问等。在配置文件中添加:
lua-time-limit 5000 # 设置Lua脚本执行时间限制为5000毫秒
lua-allowed-modules "" # 禁止加载任何Lua模块,进一步限制脚本能力
权限管理
- 用户认证:使用
requirepass
配置项设置密码,只有通过认证的客户端才能连接Redis服务器并执行命令。在 redis.conf
中设置:
requirepass your_strong_password
- 细粒度权限控制:Redis 6.0+ 支持 ACL(Access Control Lists)。可以创建不同的用户并为其分配不同的权限。例如,创建一个只允许执行非危险命令的用户:
# 在Redis命令行中执行
ACL SETUSER limited_user on >user_password ~* -@admin -EVAL -EVALSHA # 只允许执行非admin命令,禁止EVAL和EVALSHA命令
日常运维
- 监控脚本执行:通过Redis的
SLOWLOG
来监控脚本执行情况。可以设置合适的慢查询时间阈值,以便及时发现执行时间过长的脚本,有可能是恶意脚本。在配置文件中设置:
slowlog-log-slower-than 10000 # 慢查询时间阈值为10000微秒
slowlog-max-len 1000 # 慢查询日志最大长度为1000条
- 定期审计:定期检查Redis日志和执行的命令记录,查看是否有异常的
EVALSHA
命令调用。对于可疑的调用,及时进行分析和处理。可以通过外部工具(如 redis-audit
)来辅助审计。
- 更新与补丁:及时关注Redis官方发布的安全更新和补丁,保持Redis服务器版本是最新的,以修复已知的安全漏洞。