2.2 单包授权(SPA)
SDP架构提供的协议在网络栈的所有层都对连接提供保护。通过在关键位置部署网关和控制器,能够使相关人员专注于保护最关键的连接,使其免受网络攻击和跨域攻击。
2.2.1 SPA模型
SDP强制实施“先验证后连接”,弥补了TCP/IP开放且不安全的缺陷,该内容通过SPA实现。SPA是一种轻量级安全协议,在允许访问控制器或网关等相关系统组件所处的网络前,验证设备或用户身份。
各类应用与网络服务隐藏在防火墙后方,该防火墙默认丢弃所有收到的未经验证的TCP和UDP数据包,不响应那些连接尝试。因此,潜在的攻击者无法得知所请求的端口是否正被监听。在经过身份验证和授权后,用户才能访问所请求的服务。SPA在客户端和控制器、网关和控制器、客户端和网关等的连接中应用。
SPA的实现可能存在一些差别,但其均应满足以下原则。
(1)必须对数据包进行加密和验证。
(2)数据包必须包含所有必要信息;单独的数据包头不被信任。
(3)生成和发送数据包必须不依赖管理员或底层访问权限;不允许篡改原始数据包。
(4)服务器必须尽可能无声地接收和处理数据包;不回复或发送确认信息。
在SDP架构部署模式中,SPA对连接的保护如图2-2所示。
图2-2 SPA对连接的保护
2.2.2 SPA的优势
SPA在SDP中有重要作用。SDP的目标之一是弥补TCP/IP开放和不安全的缺陷,TCP/IP允许先连接后验证。在当前网络安全面临威胁的形势下,不允许恶意用户扫描并连接到企业系统。SPA通过两种方式解决这一问题,一是将使用SDP架构的应用隐藏在SDP网关或AH后方,只有授权用户才能访问;二是保护SDP组件,如控制器和网关等,使其安全的面向互联网部署,确保合法用户可以高效、可靠的访问,未授权用户则看不到这些服务。SPA的一个优势是能隐藏服务。防火墙的默认丢弃(Default-Drop)规则缓解了端口扫描和相关侦查技术带来的威胁,使得SPA组件对未授权用户不可见,显著缩小了攻击面;SPA的另一个优势是能进行零日(Zero-Day)保护。当发现漏洞时,如果只有通过身份验证的用户能访问受影响的服务,则该漏洞的破坏性显著降低。
SPA也可以抵御分布式拒绝服务(DDoS)攻击。如果一个HTTPS服务暴露在公共互联网中,较少的流量就可能使其宕机。SPA使服务仅对通过身份验证的用户可见,因此,所有DDoS攻击都默认被防火墙丢弃,而不是由受保护服务处理。
2.2.3 SPA的局限
SPA只是SDP多层次安全的一部分,其自身并不完整。虽然SPA的实现能够抵御重放攻击,但其可能面对中间人(MITM)攻击。具体来说,当MITM攻击捕获并修改SPA数据包时,虽然其不能建立到被授权客户端的连接,但是可以建立到控制器或AH的连接。此时,攻击者由于缺乏客户端证书,无法完成mTLS连接。因此,应通过控制器或AH拒绝该连接并关闭TCP连接。由此可见,即使在面对MITM攻击时,SPA也远比标准TCP安全。
不同供应商的SPA实现存在一些差异。可以参考Firewall Knock Operator项目提供的开源SPA实现和Evan Gilman和Doug Barth的《零信任网络》中第8章“建立流量信任”。