安全性
安全对 Flynn 来说尤其重要。
Flynn 是一个用于控制端到端的集成平台,因而我们可以内置了许多最佳实践,用户可直接使用,无需用户自定义实现这些较难的技术。
当然,我们觉得稳定性是第一位的。我们将很快完成一个足够稳定的 Flynn 版本,它能满足大多数用户对生产环境需求。详细请看 stability 页面。当该项工作告一段落,我们将会为 Flynn 添加更多安全方面功能。
在那之前,我们认为解释一下Flynn 当前具备哪些安全特性是非常必要的。
分发的安全性
我们提供的所有的二进制文件,包括flynn-host
和 flynn
命令行工具,以及 container 镜像,都是通过The Update Framework 保障安全的分发。TUF 包含了一个鲁棒的、基于角色的签名系统,它可以防御许多攻击,包括降级攻击、CDN compromise 等。除了 TUF 之外,只能通过 HTTPS 来访问所需内容。
我们的 Vagrant 虚拟机镜像通过 HTTPS 提供服务,但并没有被署名,所以 Vagrant 不支持签名。
内部通信
Flynn 使用多个端口来进行内部通信,当前对于内部通信是没有认证的,所以绝对不可以将这些访问的端口暴露在外网上。主机必须配置防火墙,使得唯有 80 和 443 端口 Flynn 的端口可以访问,以防止被攻击。访问这些内部的 Flynn 端口需要 root 权限,所以请务必小心。
可以在 443 端口上通过 HTTPS 来访问控制器和仪表板,并生成一个 bearer token 进行认证。TLS 用于通信的证书在安装时就被生成了。证书的 hash 值作为命令行配置的一部分,以防止中间人攻击。
CA 证书仪表盘
在 Flynn 安装过程中,CA 证书会自动安装,并同时完成控制器和仪表板显示证书签署。CA 证书对应的私钥将立马被弃用,以防被滥用。CA 证书的作用是,让浏览器知道如何去处理多个用自己签署的证书连接到服务器的链接。CA 证书是仪表板提供给浏览器的,用来允许浏览器和仪表板、控制器之间的TLS通信加密。如果使用了 Flynn 安装器,CA 证书会在安装时通过 SSH 安全传输,防止在访问仪表板时被攻击。如果没有使用安装器,证书可能会在第一次访问仪表板时通过不安全的链接进行传输,请不要在不安全的链接上安装证书。未来我们将使用Let's Encrypt,这样既无需生成证书,也不用安装证书。
应用
在 Flynn 中运行的应用并非全是沙盒,这些应用可通过访问内部 Flynn API 来获取服务器的 root 权限,所以请不要在 Flynn 环境下运行不可信的代码。
Flynn 中可能存在一些其他未知的安全漏洞。若你的服务包含敏感数据,暂时我们不推荐通过 Flynn 托管。
未来几个月内将推出重要的更新,来提高 Flynn 的基础安全性。在那之后,可用性会被限制。未来 Flynn 将打造业内领先的安全策略。
报告问题
如果在使用 Flynn 过程中发现了一个没有被明确确认的安全漏洞,请立即security@flynn.io">邮件告知我们。
如果你可以使用 PGP,将你的邮件用下面的公钥加密:
pub 4096R/6913B2EF 2015-11-04 [expires: 2016-11-03]
Key fingerprint = C334 DB91 6744 BD00 B347 0A86 0281 AD75 6913 B2EF
uid Flynn Security Team <security@flynn.io>
sub 4096R/38F74B09 2015-11-04 [expires: 2016-11-03]
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
aOmKnAD2rS4Lu4+Ez2pTZFz9
=yreI
-----END PGP PUBLIC KEY BLOCK-----