[NOTE]底层协议安全

本文深入探讨了网络协议如IP、TCP、UDP、ICMP、DNS等的安全隐患,包括地址欺骗、路由欺骗、分片攻击、定向广播攻击、网络监听、SYNFlood、序号攻击、UDP Flood、ICMP DoS、DNS欺骗等,并详细阐述了各种攻击手段及其防御措施。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本协议及简述

  • IP:
    1. 无状态
    2. 无连接(不支持上下文)
    3. 不可靠(尽力送达)
    4. 无序(送达顺序不固定)
    5. 支持分片(分片字段)
    6. 路由不固定
    7. 地址由报文头指定
  • TCP:
    1. <localhost,localport->remotehost,remoteport>
    2. 三步握手:SYN->SYNACK->ACK
  • UDP:
    1. 简单的数据传输,没有纠错和重传
    2. 没有序列号机制,支持分片
    3. 开销小
  • ICMP
    1. 控制报文协议
    2. 可以用来探测可达性
    3. 对TCP/UDP产生影响

协议的安全隐患

IP协议
IP地址欺骗

报文头部的IP地址并不能保证是真实IP地址;可以通过伪造源IP进行欺骗

IP路由欺骗

可以在报文头部指定路由,则可以通过伪造IP和指定路由来接受应答数据包.

IP分片攻击
  • 老式设备在接受重组后总长超过65535的碎片时会造成缓冲区溢出
  • 偏移量攻击:Ping O’ Death
    1. Ping包的结构:ICMP头+Max=65507 PING数据
    2. 指定发送碎片偏移量超过65507会引发崩溃(如frag 9@65520)
  • 分片攻击:Teardrop:发送偏移重叠的片段导致处理出错.
    在这里插入图片描述
  • Tiny Fragment 攻击:发送极小的分片绕过包过滤系统:报头分为两个分片;第一个包含目的IP,目的是绕过防火墙建立连接;第二个分片包含禁止访问的目标端口,这样可以绕过针对端口进行封锁的防火墙,因为这种系统多半只会判断第一个分片是否合法.
  • Fragment Overlap:利用偏移覆盖端口.
    1. 在第一个分片声明使用合法端口
    2. 在第二个分片使用重叠的偏移量覆盖端口,造成了非法访问.
  • 分片Dos: 发送一部分分片但不发送完全造成资源等待,从而耗尽路由或主机资源
定向广播攻击

发送目的地为***.***.***.255的报文,等同向网域内所有主机发送(.2~.254),这样可以消耗主机资源产生拒绝服务攻击.

网络监听

IP协议采用明文传输.

被动监听技术
  • 基于介质的报文捕获:Hub
  • 基于交换介质的捕获:arp重定向/光纤分流
ARP协议

主要功能:建立IP地址和Mac地址的映射.
实现方式:向所有域内主机发送查询,符合条件的返回应答信息,其他的主机不返回.
攻击方式:发出假冒的ARP应答信息从而重定向数据流或者修改(中间人攻击)

TCP协议
SYN Flood

取消第三次握手的ACK包导致连接长期挂起,占用连接资源导致拒绝服务
应对:

  1. 半开连接数量检测
  2. 新建连接速率检测
  3. 阻断新建连接
  4. 释放超时连接
  5. 中间代理防火墙
    1. 用hash暂时保存半开连接信息
    2. SYN Cookie
    3. 判断合法后放行
序号攻击

TCP的信息重组基于序号,如果可以猜测起始序号ISN可以欺骗主机.

  1. 压制信任主机
  2. 攻击者连接主机端口,猜测ISN变化规律
  3. 主机向被压制的信任主机返回SYN+ACK.
  4. 估算时间向主机发送ACK
  5. 此时攻击者和攻击目标建立了连接.
    在这里插入图片描述
TCP序号劫持

使用上述类似的方法猜测序列号并压制信任主机从而接管会话.

UDP协议
UDP Flood

大量堵塞信道造成丢包

UDP欺骗

没有连接的概念(没有源地址)导致非常的不安全,很容易实施欺骗.

ICMP协议
Dos

针对带宽:发送大量无效的ICMP包
针对连接:伪造ICMP强行终止连接

ICMP重定向

ICMP重定向报文用于优化机器的路由路径.
攻击者利用这种报文重定向机器的路由表,可以伪装成路由器进行监听.

DNS协议

功能:IP-域名的映射

  1. DNS欺骗
  2. DNS解析可以省略后缀层次(?)
### OAuth2 认证机制底层实现原理 #### 一、OAuth2 协议概述 OAuth2 是一种授权框架,允许应用程序在用户许可的情况下访问其他应用的数据。通过此协议,客户端可以获取资源拥有者的同意来获得有限的访问权。 #### 二、主要角色定义 - **资源所有者 (Resource Owner)**:通常是最终用户。 - **客户端 (Client)**:请求受保护资源的应用程序。 - **授权服务器 (Authorization Server)**:验证用户的凭证并颁发令牌。 - **资源服务器 (Resource Server)**:存储实际数据的服务端,它依赖于有效的访问令牌提供资源访问[^1]。 #### 三、四种授权模式详解 OAuth2 定义了四种不同的授权流程以适应不同场景下的需求: ##### 授权码模式 (Authorization Code Grant) 这是最常用的一种方式,适用于具有后端组件的传统Web应用。当用户尝试登录时,会被重定向至授权服务器,在那里输入用户名密码完成身份验证;随后返回一个临时性的授权码给客户端,再由后者交换成正式的访问令牌用于后续API调用。 ```mermaid sequenceDiagram participant User as 用户 participant Client as 客户端 participant AuthServer as 授权服务器 participant ResourceServer as 资源服务器 Note over User,AuthServer: 用户点击登录按钮\n被重定向到授权服务器 User->>AuthServer: GET /authorize?response_type=code&client_id=<CLIENT_ID>&redirect_uri=<REDIRECT_URI> loop 登录表单提交 User->>AuthServer: POST 表单数据 {username,password} end AuthServer-->>User: HTTP 302 Found Location=http://<REDIRECT_URI>?code=<AUTHORIZATION_CODE> Client->>AuthServer: POST /token grant_type=authorization_code code=<AUTHORIZATION_CODE> AuthServer-->>Client: {"access_token":"<ACCESS_TOKEN>"} Client->>ResourceServer: GET /api/resource Authorization: Bearer <ACCESS_TOKEN> ResourceServer-->>Client: 返回所需资源 ``` ##### 隐式模式 (Implicit Grant) 主要用于浏览器中的JavaScript前端应用。由于这些环境难以安全保存秘密信息,因此直接授予短寿命的访问令牌而非授权码。这种方式下不再有额外的Token Exchange步骤,而是立即得到Access Token。 ##### 密码模式 (Resource Owner Password Credentials Grant) 在这种情况下,客户可以直接向授权服务器发送用户名和密码换取令牌。不过官方并不推荐广泛采用这种做法因为这违反了OAuth设计初衷—减少暴露敏感凭据的机会。 ##### 客户端证书模式 (Client Credentials Grant) 适合机器间通信场合,比如微服务架构内部各模块间的交互。此时不存在具体的人类参与者作为资源主人,所以只需凭借已知的身份证明材料(如API Key)去申请权限范围内的操作权利即可。 #### 四、安全性考量 为了保障整个过程中各个环节的安全性,通常还会采取诸如HTTPS加密传输通道、签名算法防止篡改以及过期时间控制等措施确保系统的健壮性和可靠性[^2]。 #### 五、SSO单点登录实践案例 对于支持多租户或多产品的大型互联网公司来说,构建统一的身份认证中心变得尤为重要。例如在一个典型的SSO环境中,一旦某位访客完成了首次登陆动作,则在未来一段时间内再次进入关联站点时便无需重复经历相同的鉴权环节。具体表现为跳转到指定域名下的`/login.html`页面,并附带必要的查询字符串参数如`key`与`redirect`以便识别来源及回退路径[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值