预算有限初创企业的实用安全建议
嗨,我是 Alex,自 2007 年以来一直从事 IT 安全专业工作,最近通过我的项目 bughuntr.io 进入了初创企业世界。在组建这个项目的过程中,安全一直是我的首要关注点。这既是因为我的背景,也是因为项目的性质——作为一个面向安全专业人员和爱好者的培训平台。在我的安全职业生涯中,我受雇评估了无数 Web 应用程序、云环境和计算机网络的安全漏洞。在这些评估中,很明显安全往往是在产品发布前作为合规要求“临时附加”的,或是在事后响应事件时添加的。初创企业有一个难得的机会在项目开始时就将安全“融入”其中,但这通常被视为一项昂贵的努力。在这篇文章中,我旨在缓解这种恐惧,并为希望从一开始就发布更安全产品的初创企业提供实用(且廉价)的建议。
我应该在此说明,没有任何产品是“绝对安全”的,安全不是一个状态,而是一个过程。然而,初创企业可以采取几个(相对)简单的步骤来显著降低被黑客攻击的可能性,并在发生时减少影响。有了这个前提,以下是我为基于云和 SaaS 产品的初创企业提供的十大实用安全建议:
1. 使用密码管理器和双因素认证
技术能力:低 影响:高
开始一个新项目意味着注册各种在线服务、创建新电子邮件地址、SaaS 产品的免费层级账户、服务器凭据等等。为了方便,很容易在这些服务中使用相同的密码,但这可能导致这些账户及其他使用相同密码的账户被简单攻破。黑客经常使用从一个服务泄露的密码尝试认证其他服务。如果你在多个服务中使用相同的密码,那么你面临风险。此外,如果你能记住密码,这通常意味着密码复杂度不足以被视为“安全”。你认为黑客更容易猜到哪个密码:“Start-up Fall2021”还是“^zf%Mm3Gxs5BZF!NRhNE5v@oUh6@VBHn”?密码管理器可以帮助你在所有申请的在线服务中维护安全、唯一的密码。
此外,在支持双因素认证(2FA)的地方,应启用它。2FA 要求在正确密码之外提供第二个认证令牌。这可以是硬件安全密钥(最安全)、基于时间的一次性密码(中等安全)或发送到移动设备的一次性密码(最不安全)。并非所有服务都支持 2FA,但在支持的地方应启用它。
如果你打算在这里停止阅读,或只从这篇博客文章中获取一件事,请去注册一个密码管理器。它不是安全的银弹,但它是我们目前最接近的东西之一。
提供“免费”层级的密码管理器:
- BitWarden
- KeePass
作为奖励,你可以通过免费的 Have I Been Pwned 服务监控你的账户是否出现在第三方数据泄露中。
2. 使用现代框架开发
技术能力:中等 影响:中等
与拥有成熟产品的现有公司相比,初创企业处于独特的位置,可以选择当前一流的软件框架进行开发。现代软件框架可以显著减少引入漏洞(如跨站脚本和 SQL 注入)的可能性。事实上,一些现代框架尽一切努力防止意外引入这些漏洞,甚至将可能引入它们的函数命名为“危险”。
在开始开发新产品时,应谨慎选择具有良好安全抽象和良好安全实践历史的框架。
3. 配置边缘安全服务
技术能力:低/中等 影响:中等
边缘安全服务有多个好处,包括帮助保护你的服务免受机器人、黑客和分布式拒绝服务攻击。正确配置后,所有流量将通过边缘服务路由,提供最佳保护。许多边缘安全服务还具有作为内容分发网络(CDN)的好处,意味着它们可以减少后端服务基础设施的负载。
如果你的服务具有需要有限数量的支持人员访问的管理、报告或诊断功能,边缘安全服务可以将对这些区域的访问限制为预先批准的 IP 地址或浏览器提供特定令牌的用户。这些额外的访问限制有助于缓解可能在你用于构建和托管服务的框架中发现的软件漏洞,并缓解针对管理登录页面的密码猜测攻击。
提供“免费”层级的安全聚焦 CDN 服务:
- Cloudflare
4. 启用 HTTP 安全头
技术能力:低/中等 影响:中等
现代 Web 浏览器包含许多客户端安全功能,只有在服务器指示支持使用时才会启用。这些功能通过服务器发送特定的 HTTP 头启用,可以(非详尽地)防止用户通过未加密的连接加载你的服务,防止用户的浏览器将数据从你的服务泄露到第三方网站,或防止你的服务被任何其他网站框架化。配置这些头可以显著提高服务的客户端安全性。
一个值得特别提及的安全头是内容安全策略(CSP)头。CSP 定义了可以从哪些源加载和执行内容,如脚本、视频和图像。一个健壮的 CSP,虽然配置有些复杂,可以完全缓解客户端攻击(如跨站脚本(XSS))的风险。
帮助你配置 HTTP 安全头的免费指南和工具:
- OWASP 安全头项目
- 安全头
帮助构建和评估健壮 CSP 的免费工具:
- Report URI CSP 生成器
- Google CSP 评估器
5. 应用安全补丁
技术能力:中等 影响:高
当自托管应用程序时,例如在 Digital Ocean(联盟链接!)上,你需要确保在发布时应用操作系统和库的安全补丁。不幸的是,这是一个持续的过程,因为操作系统和库中的安全漏洞不断被发现和修复。使用 DevOps 实践和临时基础设施可以帮助确保你的服务在每次发布时都部署到完全打补丁的系统。
作为自托管的替代方案,有免费(和付费)的无服务器和平台即服务(PaaS)产品,它们在容器中运行你的应用程序,并负责为你打补丁操作系统。然而,你仍然需要确保服务使用的库保持最新安全补丁。
提供“免费”层级的无服务器/PaaS 服务:
- Fly.io
6. 备份用户数据和源代码
技术能力:中等 影响:中等
随着勒索软件威胁的不断增加,拥有用户数据和源代码的已验证(!)备份可以在勒索软件攻击或其他不可预见的停机事件中节省大量时间和金钱。在存储用户数据备份时,确保它们使用安全存储的密钥加密,以防止恶意黑客获取备份文件时的泄露。源代码通常保存在源代码仓库中,除了帮助促进多个远程开发人员之间的开发外,还提供你的服务源代码的完整历史。当保存在在线源代码仓库中时,这可以为你的代码提供足够的备份。
备份的一个重要因素(可能看似明显)是它们必须能够恢复。然而,你只能通过定期测试备份和恢复过程来确认这一点。无法恢复的备份与根本没有备份一样无用。
提供“免费”层级的源代码仓库:
- GitLab
- GitHub
7. 集中所有日志记录
技术能力:低 影响:中等
在成功攻击(或任何其他类型的严重停机)事件中,访问应用程序和系统日志可以是快速补救情况与盲目尝试拼凑发生了什么(在黑暗中,戴着太阳镜,头上套着纸袋)之间的区别。不幸的是,存储在受损系统上的日志不再可信。使用集中日志服务,除了聚合来自多个源的日志外,可以帮助提供直到成功攻击点的“可信”日志活动源。
提供“免费”层级的集中日志服务:
- Solarwinds Loggly
- Logz.io
8. 招募优秀黑客
技术能力:低 影响:高
所有软件都有可能被恶意黑客利用的漏洞,你只需要查看微软或苹果的每月补丁说明就能看到即使大公司也不能一直做对。比你的初创企业产品中有漏洞更糟糕的是什么?不知道你的初创企业产品中有漏洞!通过实施漏洞披露政策(VDP),你可以为优秀黑客提供一个沟通渠道,以便在他们发现影响你产品的安全漏洞时联系你。
当资金更充足时,可以考虑对你的产品进行渗透测试。也就是说,雇佣专业安全人员主动搜索你产品中的漏洞。除此之外,可以启动漏洞赏金计划,激励优秀黑客寻找并报告影响你产品的漏洞。每种方法的优点超出了本文的范围,但应注意这些不是廉价的选择。
帮助定义和实施 VDP 的免费工具和指南:
- Disclose.io 政策生成器
- NCSC 漏洞披露工具包
9. 服务容器化
技术能力:高 影响:高
容器化是在限制性执行环境中运行软件的行为。虽然安全实现容器化所需的技术能力相当高,但当实现时,它可以缓解整个类别的攻击和漏洞(如命令注入)的风险,并严重阻碍后利用攻击(如权限提升或持久性)。
10. 部署金丝雀令牌
技术能力:低 影响:高
一旦以上所有都实施,你的初创企业仍然不能免疫攻击(不幸的是)。虽然你已经做了所有合理(甚至更多!)的事情来保护自己,但社会工程、0day、供应链攻击等仍然可能被利用来攻破你的服务。如果攻击成功针对你的初创企业,你希望尽快知道!攻击者喜欢尽可能长时间地隐藏他们的存在,他们通常不想广告他们在那里的事实。金丝雀令牌可以通过创建诱人的目标(文档、配置文件、服务)来帮助你发现这些恶意黑客,这些目标在被访问时创建警报。这些可以用作攻击正在发生的可靠指示,你应该开始调查。
生成基本金丝雀令牌的免费工具:
- 金丝雀令牌
结论
任何能应用所有十项建议的初创企业在安全方面将远胜于众人,即使只应用少数几项也将显著降低成功黑客攻击的可能性,并在发生时减少影响。安全作为一个过程可能对早期初创企业来说在前期时间和金钱上似乎昂贵,然而从一开始就包含安全流程要便宜得多,并且比从攻击中恢复要便宜几个数量级。
附言
如果你需要帮助实施任何这些策略,想讨论你的初创企业的安全性,或想邀请我作为你活动的演讲者,我可以提供自由职业咨询。请随时联系我讨论需求、可用性和费率。