Redis安全的笔记

172 views

Redis is designed to be accessed by trusted clients inside trusted environments.

上述说明来自官方文档Redis Security。因而在实现针对Redis的安全保护方案时,需要付出更多的代价。 考虑因素包括系统安全、网络安全、软件安全、应用安全。

系统安全

  • 操作系统及相关软件及时升级至最稳定版本。
  • 及时修复操作系统及相关软件的安全漏洞。
  • 关闭不相关的服务。
  • 禁用不必要的端口。
  • 卸载不相关的软件,如编译器。
  • 清理未使用的账号。

网络安全

  • 推荐绑定在本地回环地址,即只允许本机访问。
  • 避免直接对Internet暴露服务。
  • 绑定到指定IP,避免使用通配方式暴露服务。
  • 使用非标准端口对外提供服务。
  • 定义黑名单和白名单,使用iptables控制访问来源。

软件安全

  • 推荐使用Redis当前的稳定版本。
  • 及时升级Redis的版本。
  • 清理不相关的文件,如安装Redis时使用的源码包、样例文件、未使用的工具等。
  • 禁止高危命令,使用样例:
    rename-command CONFIG ""
  • 重定义必须使用的高风险命令,使用样例:
    rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
  • 指定内存的使用上限,避免影响应用和系统的稳定性。
  • 指定客户端最大通信链接数,规避DoS攻击。
  • 指定客户端通信链接的闲置时间的上限值,当客户端链接空闲时间超出上限后,将自动关闭链接,避免占用过多的资源。
  • 禁止将数据文件保存至系统分区。
  • 禁止将日志文件保存至系统分区。
  • 控制Redis软件、配置文件、日志文件、数据文件等的系统权限和属主,避免信息泄漏。

应用安全

  • 使用单独的操作系统用户运行Redis服务。
  • 关闭Redis运行用户的登录权限。
  • 禁止在Redis中保存敏感数据。
  • 禁止在命令行中使用Redis的口令,避免攻击者通过查阅history得到口令。
  • 合理使用日志切割工具控制日志文件的大小和数量,避免中断业务。
  • 对访问Redis的客户端进行认证,并且定期更换认证口令。

其它措施

建议通过修改对Redis的源码,提供如下特性:

  • Redis客户端在传输口令时,使用传输密钥对口令进行加密。
  • 传输密钥支持更换。
  • 在Redis的配置文件中,加密存储口令。
  • 存储密钥支持更换。
  • Redis客户端与Redis服务端之间定义加密的数据传输通道。
  • Redis客户端与Redis服务端之间实现双向认证。
  • Redis服务端认证客户端时,定义认证操作的超时时间,规避慢攻击。
  • 从使用场景将Redis的指令区分为管理用途和数据访问用途。对于管理类的指令,仅允许在Redis服务端本地使用;对于数据访问类的指令,可以在客户端使用。

参考资料



若非注明,均为原创,欢迎转载,转载请注明来源:Redis安全的笔记

关于 JackieAtHome

基层程序员,八年之后重新启航

此条目发表在 Redis, 数据库 分类目录,贴了 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Protected with IP Blacklist CloudIP Blacklist Cloud