dot Redis 8 来了——而且是开源的

了解更多

关于安全的 3 个关键点

3 Critical Point about Security

最近几周,关于 NoSQL 数据泄露 的报告数量有所增加,总体上是这样,具体到 Redis 也是如此。 后者很可能是 Salvatore Sanfilippo 的博客文章“关于 Redis 安全的一些事情”的后果。 那篇文章只是点燃了火焰的火花 - 我认为,违规行为的种子很久以前就已经埋下了。 除非你采取行动,否则它们仍然存在。 但在继续讲故事之前,我想让你记住 3 个关键点和 1 个重要提示

  1. 永远不要让不受保护的服务器暴露于外部世界
  2. 如果你的服务器已被入侵 – 销毁它
  3. 始终阅读文档

注意: 如果你使用的是 Redis Enterprise Cluster 或 Redis Cloud,那么你可以放心,服务器没有受到此攻击的影响。 虽然可以使用我们的解决方案创建一个不受保护的 Redis 数据库,但我们绝大多数用户的数据库,无论是直接的还是来自 PaaS 合作伙伴的,都在使用我们提供的至少一种安全措施(例如密码保护、源 IP/子网白名单和 SSL)。 此外,由于我们的解决方案提供单独的操作和功能接口,即使是不受保护的数据库也不会完全容易受到此类攻击的影响。 也就是说,如果你的数据库不受保护,那么你的数据仍然存在风险,你真的应该采取一些措施(提示:设置密码)。

回到违规行为的起源。 在他的博客文章中,Salvatore 以他一贯的残酷诚实总结了 Redis 的安全模型:“让不受信任的客户端访问系统是完全不安全的,请自行保护它免受外部世界的侵害。” 为了演示“完全不安全”实际上有多么不安全,Salvatore 展示了如何使用不受保护的 Redis 数据库来获得对其运行服务器的访问权限。

这里重要的是,如果你正在使用 Redis,你绝不能忽略安全性。 一旦 Redis 不在沙盒环境中运行,就由你(或你的 Redis 提供商)采取必要措施来正确保护它。 可以使 Redis 数据库变得足够安全 - 这是一个 文档页面,可帮助你开始这样做。 保护 Redis 的第一步是阅读文档。 Redis 有很棒的官方文档(不仅仅是我这么说 - 看看周围)和 大量的其他在线材料

Redis 的默认密码设置为 none。 确保设置它,并将其设置为非同小可的东西。 你的安全取决于你采取的预防措施。

第二步是真正注意默认值。 信任默认值为你工作就像闭着眼睛开车,并相信道路会弯曲以满足你的意愿。 除非这条路是你完全控制并已记住的路,否则你几乎没有机会到达你想去的地方。 你最好睁开眼睛。 当涉及到默认值时,使用它们的唯一安全方法是了解它们,这意味着 - 你猜对了 - 睁开你的眼睛并阅读它们的 文档 或雇用一名司机。

Salvatore 的博客文章在互联网上受到了很好的欢迎,最初启发了“脚本小子”为了乐趣而破解不受保护的服务器,但最终也被专业的网络犯罪分子用于牟利。 似乎还有一个 白帽黑客艺术渲染图)为不受保护的服务器设置密码。 令人遗憾的是,已经造成了如此多的损害,但除非公开,否则大多数人不会注意到此“漏洞”,其后果也不得而知。 这不是一个教训,但我们应该从中吸取教训,不要将安全视为理所当然。

未来版本的 Redis 将包含更安全的默认值(今天早些时候发布的 v3.2 的候选版本绑定到 127.0.0.1 而不是 0.0.0.0,并且 RC2 将有一个新的 protected-mode 默认启用),甚至可能 改进的安全机制,但保护数据库的责任将始终由操作员承担。 如果你在一个向外部世界开放的环境中运行自己的 Redis 数据库,你应该审查你已采取的安全措施,并确保你受到保护。 如果你没有使用任何安全措施,我建议你至少将你的服务器视为可疑(如果可能的话,将其销毁并从头开始) - 它很可能已经被入侵。