• 安全性
    • 分发的安全性
    • 内部通信
    • CA 证书仪表盘
    • 应用
    • 报告问题

    安全性

    安全对 Flynn 来说尤其重要。

    Flynn 是一个用于控制端到端的集成平台,因而我们可以内置了许多最佳实践,用户可直接使用,无需用户自定义实现这些较难的技术。

    当然,我们觉得稳定性是第一位的。我们将很快完成一个足够稳定的 Flynn 版本,它能满足大多数用户对生产环境需求。详细请看 stability 页面。当该项工作告一段落,我们将会为 Flynn 添加更多安全方面功能。

    在那之前,我们认为解释一下Flynn 当前具备哪些安全特性是非常必要的。

    分发的安全性

    我们提供的所有的二进制文件,包括flynn-hostflynn命令行工具,以及 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,将你的邮件用下面的公钥加密:

    1. pub 4096R/6913B2EF 2015-11-04 [expires: 2016-11-03]
    2. Key fingerprint = C334 DB91 6744 BD00 B347 0A86 0281 AD75 6913 B2EF
    3. uid Flynn Security Team <security@flynn.io>
    4. sub 4096R/38F74B09 2015-11-04 [expires: 2016-11-03]
    5. -----BEGIN PGP PUBLIC KEY BLOCK-----
    6. mQINBFY6QowBEADgRoqA7rwYc54npNAweozzylx4jIIFf6JcwxaCzc+zeHw9iAk+
    7. PFMw7IdkWIA8A+2/sa11vPufCAa7OVzsk/YOYaZUPWv0khm1fO/CR0dmWoGB56jH
    8. IWPUjtJpcEXp5j76qNp6U9VRcP/pfE5kTpwa8dFvOmtiwF1mDMAiMYedlz1eYfNW
    9. hZbwJ6etMTd8SaAU/AP0rM+tDoRXtli6LOpkxRT3Bi4ykTwnhY1e2WYEvKPGqBvL
    10. 4YvxP1X+ZON7mgxbRwX01KyrhkLdks6nXmXltEewTy9uutz2oLiFWQyY+JC5C4PO
    11. pLgTiaY+bXwow5SF52Ztc1bETdfYUbAfLWQ3bONjniGRGNSm3zT5mnc4x4eUXAf1
    12. 9XGvX7N3mWXzA+fHZF+WSuyDYGK8n8TsT9/rOaZryNSFWtjLxwXft8I4V5Sfm2hF
    13. ljc/50fHAf39jAwTZwF8aAFqFSsNt5o0TWMt5fbYaOZA53zBEdOGT0+6HyoK7wRE
    14. wdcRDLSHkoCSkzr8jTMs29ln/Dk79xFOyte3Pp5jDlm5biLeoF6dYYCUs/P2QiCE
    15. j1ZSfvIdRd1Nl7OdtNblMSVboiJfGf0UTnqc6CWz3WnNNuL6D1GiyZgY0eenbzik
    16. pVIqq+/EdarIu5RgP25ONkaZf8IVMI6Xwhx6HQTDlQCPpY39IQUS7StUywARAQAB
    17. tCdGbHlubiBTZWN1cml0eSBUZWFtIDxzZWN1cml0eUBmbHlubi5pbz6JAj4EEwEC
    18. ACgFAlY6QowCGwMFCQHhM4AGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEAKB
    19. rXVpE7LvRUEQAK4cX9lTSABXvlA9Ur7EUy5QnUOXgLjA3g125P4daLWQLjKGIjYF
    20. Qengl+T/HED8QSiNF6au4Om3KbYutSqOEe3eyi1krnIILhLXp2p7eNVSmWic8Img
    21. J2GDCfDxNxzaHKiuIy9cRmVLD9+nQBF7c3IHj5cvXHSROWKq4wgJUljuOs9s9VDN
    22. GjCExWeeG5pF5J9HnmS1F+N21BK8E2KTzouRhVmJ8fpaxJy7Ofr9N6WyxbZCwwwD
    23. QMamo1mczo0p/+cUeQik92D2tz1Pn+RiF/Ooq16RKsls8N8poR9ffQ0rkE2hksjB
    24. 3+OIaZ3Q0vKUBowUu6pmPSfkorq29zy45V3nku9Ly8K0B/t1Xl/wUQaY/OBm9Iiy
    25. eJ6p2NBc8U8Xcl33Xe7t5r9nCVrhzEDoggcbCo6YjcGQJwzgwhgbwtO0HDIcax3z
    26. y2j7pfmABwJifmyMAD6UxAqftXcBxKXT9+jxa6skqFAid2zceqn1V/M83tQ28gLa
    27. /IssVSJ0DbjPpoPOSjFV+b0lKzre12EcsTVvDsm9u0jUSH+XVJA5o8cZFU8WCAs7
    28. h9x6yhrE+n3AX3ZP8zUSv8mSH1Eh1EAolsnqBBA3qiC+b6l/KcVbYjo3bv2jw0IZ
    29. 5xSG8hOdUShKpKkPc4CiY5Z5c75TibA4+UaAvDELXUsOkU0eBoD/fbUJuQINBFY6
    30. QowBEADMK3ES9lEjDyhV43WB8oNizzA0fbf3k3giyOneAZz7VgP8BPy8xvI5zkjU
    31. tjDJfCKc5Yk+3pDJRgi+7u2O0KdF7VVJ+YnHRfPib4YB033fbhDTa15qa7Mr3uDr
    32. EyTyUzZ0tVuDAnvSz8To6Z2HWOynBFB7N31plhN/xubMCfqH20l6ZtgKszdZ6pVR
    33. xD0BZ47JhD9JcZF1Xa1tgASAQ286XCVkOwxRnSGmnNCc+HjAqepbKMbJgtTCOLRK
    34. Zx1I9jIikAakwxbzXtv7gFzYWrsGWPEKEtKCdmhD2V6Zvl5nwBkr7nS/JQQgzWXM
    35. /ltcG3Np0qJRkXA2ZSlhh21bOgfjHvfijRuxAPWlJv21qzN0nzBpLXtu3XntnzFP
    36. BR1u7HW5hfGXIbRUbmkiJ/5j29QpbXn+beYmGUH0ukvGpAqIyHDIgiTqLYMErePZ
    37. aY97tx/XTVsBKJmnGnsYUe2TIdIEpcKe0JSijOC8AVPBjm3A8Mna8169q3s7ARxC
    38. NfpBOelExfdxWcBprTUkqwK13vX3X2FgOHXH3LPqMzwuuh9QMtr0tvyG+g/8KsAP
    39. 1+va1Zi4gBUxB2PeTdxkSbue4apctKEOsEhbMjvBKWQ/Ip3hSUAvFiUwBK0IsP1k
    40. sv8T1vIpYBInHtkUUSDgKwn2X7KQ/khTKtwmNjHFGbnyCOdUVwARAQABiQIlBBgB
    41. AgAPBQJWOkKMAhsMBQkB4TOAAAoJEAKBrXVpE7Lvlq8P/2RwDa47yQO31eP0cYyf
    42. l8SdJFkTvPx8hy6IOgm5p1xOOGXHkVWioG8R8KQMNPLAdu7g6hTmboE69XNuLox/
    43. 9T9YyTN5TkUxh/9uJmupahN/hbS9aomZsznIBIan6I6QzSk17UNXm8rY5hIKB9qb
    44. 4JLKZq8tSMTGhUAyKbqeLbClvRM/LTFrq+J+FKMOrBdW5BjfdNTYLf7w1yAVLThI
    45. TDsu6epdKpV2kG1/cp0QJQssbePxe6xvZ9PeWI5axGN0A74pIKWSn5K5tP9DpDf1
    46. FfJcx9obzIzOAffO6ID6mn1Rc20Yu3NSW0cvB3TOv97jdviSoq3eP1v7pgqfJtc2
    47. ZWXa9hIlIYv6bx0ukkSYuERHoi3SVFZMiVeOTddOPKAKy2vWzQRt9S/mIDh32PmD
    48. oNvPfTIdRGivYzKqTzIkjB73Vq4Jn2BflQoyAoEu8BzI9/oYATke2TpYmcsYgh9r
    49. 03zbex98lF/rIhySMuJDp20/FHsJUMZMnfxv/NgN/A2wotSA5/idvrBUwVkdNsKU
    50. MpVfhFfhxSvkMXofbcSSAsRX1+r8S3BAQrnqV2fDzBnJqmAQ8CUTYQheZ8iMDdzJ
    51. 47wRWTZBgqCCedNOBN6TSmQGiwGhZKVKxMfIORp+1FgLEl/2FiJVoi3736SagKGG
    52. aOmKnAD2rS4Lu4+Ez2pTZFz9
    53. =yreI
    54. -----END PGP PUBLIC KEY BLOCK-----

    原文: http://doc.oschina.net/flynn?t=54104