Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

附加章十三:永不止息的安全与攻防

复习

  • 分层:系统由多层组成,每一层都可能存在漏洞
  • 攻防:攻击者会不断寻找新的突破口

TL;DR

  • 安全是持续的攻防过程,而不是一劳永逸的状态
  • 防御要分层,避免任何单点失效
  • 攻击者只需成功一次,防御者却要处处设防
  • 信任应当显式建立、尽量最小化,并随时可以撤销

正文

  前面讲了具体的漏洞和恶意程序。这一章,我们退后一步,看看安全这场“战争”的整体格局。

攻防天生不对称

  安全领域有一条残酷的规律:攻击者只要找到一个突破口就够了,而防御者必须守住所有地方。

  这意味着一件事:没有绝对安全。 你不可能证明“这个系统绝无漏洞”,因为攻击者可能明天就发现一个新的。所以安全的目标,从来不是“做到满分”,而是持续提高攻击成本、降低自身风险。它是一场没有终点的拉锯,而不是一次能通关的考试。

纵深防御:别把鸡蛋放一个篮子

  既然任何一道防线都可能被突破,那就别只建一道。

  纵深防御(defense in depth)主张在多个层次设置防护:网络层、主机层、应用层、数据层各有措施,任何一层失守,还有下一层兜底。这和前面讲备份时的“3-2-1”是同一个思路——假设每一层都会失败,靠冗余和分散来避免全盘皆输。

信任要显式、最小、可撤销

  很多安全问题的根源,是系统“想当然地信任”了某样东西。

  更稳妥的做法,是把信任当成一件需要主动管理的事:

  • 显式:明确谁被信任、信任到什么程度,而不是默默默认
  • 最小化:只给予完成任务所必需的那一点点信任
  • 可撤销:一旦发现异常,能及时收回信任

  近年来流行的“零信任”理念,正是这个方向的极端表述:不默认任何内部或外部的实体是可信的,一切都要先验证。 它把过去“内网就放心”的假设,彻底反转了。

人是最难修补的一环

  最后要承认一个现实:技术防护再严密,也常常败在人的疏忽上。

  一次钓鱼邮件、一个弱密码、一次随手点击,都可能让所有技术防线形同虚设。所以安全教育、流程约束、以及“默认安全”的设计,和技术本身同样重要。

  安全没有银弹,也没有终点。它更像是给系统上的一份“健康保险”——你无法保证永远不出事,但可以让自己在出事后依然站得住。

思考题

  为什么说“攻击者只需找到一个突破口,而防御者要守住所有地方”?

小结

知识点

  • 安全是持续的攻防过程,没有绝对安全
  • 纵深防御用多层防护避免单点失效
  • 信任应显式、最小化并可撤销
  • 人常常是最薄弱的一环

参考资料

  1. Wikipedia(zh):计算机安全:保护系统与数据免受攻击
  2. Wikipedia(zh):纵深防御 (计算机):多层次的安全防护策略
  3. Wikipedia(zh):零信任安全模型:不默认任何实体可信

思考题答案(仅供参考)

  因为两者的目标本质不同:攻击者只要在任意一处成功,就能达成目的,所以他有无数条路可选;而防御者必须让每一条路都走不通,只要漏掉一处就可能被突破。这种不对称决定了安全的难度,也说明为什么“没有绝对安全”,只能不断加固与迭代。

协议

  本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

封面图

设计师 | 南国微雪