690 likes | 956 Views
IP 寻址与转发. 内容提要. 快速安全概览 IP 寻址(编址) IP 转发 And an anagram contest!. IP 包头的快速安全分析. 思维模式多于内容 全景思维的工作 …. 聚集于发送攻击. 忽略 ( 暂时 ) 其他人的攻击 : 交通分析( Traffic analysis ) 嗅探负载( Snooping payload ) 拒绝服务( Denial of service ) 主要聚焦于发送端可以利用弱点( Focus mostly on vulnerabilities sender can exploit ).
E N D
内容提要 • 快速安全概览 • IP 寻址(编址) • IP 转发 • And an anagram contest!
IP 包头的快速安全分析 思维模式多于内容 全景思维的工作…..
聚集于发送攻击 • 忽略 (暂时) 其他人的攻击: • 交通分析(Traffic analysis) • 嗅探负载(Snooping payload) • 拒绝服务(Denial of service) • 主要聚焦于发送端可以利用弱点(Focus mostly on vulnerabilities sender can exploit)
IP包结构 4-bit Header Length 8-bit Type of Service (TOS) 4-bit Version 16-bit Total Length (Bytes) 3-bit Flags 16-bit Identification 13-bit Fragment Offset 8-bit Time to Live (TTL) 8-bit Protocol 16-bit Header Checksum 32-bit Source IP Address 32-bit Destination IP Address Options (if any) Payload
IP 地址的完整性(Integrity) • 源地址应该是发送的主机 • 但, 谁来检查呢? • 你可以用任何源来发送包 • 检查为何困难?
IP地址完整性的含义 • 为什么有人使用伪造的源地址? • 发起拒绝服务攻击 • 发送过多的包到目标 • … 让结点超载, 或链路导致结点超载 • 但: 受害者通过源地址能确定/过滤你 • 通过“哄骗spoofing”来躲避(Evade)检测 • 把别人的源地址放在包内 • 或: 使用很多不同的地址,因此不能被过滤 • 或: 给被哄骗的主机带来麻烦 • 伪造的主机被错误的指责 • 被哄骗的主机可能会从接收到收到返回交通
更多安全(Security Implications) • 版本字段 (4位) …. ? • 问题: 无经验的IPv6部署意味着有时可连接性超越安全强制 • 如, 防火墙规则仅对IPv4设置 • 头长度 (4 位) …. ? • 控制存在于IP选项中 • 如, 源路由让发送者控制通过网络的路径 – 即, 绕开安全的监控 • IP 选项通常在路由的慢通道中处理 • 允许攻击者,使路由随拒绝服务的压力 • 防火墙通常配置成在选项中丢弃包.
TOS(服务类型)的安全内含? (8位) • 攻击者对他们的包设置TOS优先级? • 如果正常的流量不设置TOS, 那么网络更偏爱攻击包, 极大地增加了损害 • 如果网络根据TOS收费会怎样 … • … 攻击者伪造成受害者的原地址? • 今天,网络TOS通常不工作 • 由于收费非常困难 • TOS目前已经针对区分服务重新定义 • 后面内容讨论
Offset=0 Nasty-at 包分块的安全含义? • 允许网络入侵监控/增强 • 如, 把攻击分布在多个块中 • 包监测无法匹配“签名signature” • 可以通过监控端记住之前的块来处理 • 但这加大状态的费用, 是攻击的另外一个方面 Offset=8 tack-bytes
Offset=8 Offset=0 USERNAME NICE EVIL Offset=8 更多分块攻击 • 如果两个重叠块不一致怎样? • 网络监控如何知道接收端看到的是USERNAME NICE还是 USERNAME EVIL?
Offset=65528 NineBytes 更多分块攻击 • 如果分块超过IP数据报的限制会怎样? • 13位字段最大尺寸: 0x1FFF = 8191字节偏移转换成最终的数据报 = 8191*8 = 65528数据报的最终长度 = 65528 + 9 = 65537 • 结果: 核崩溃 • 拒绝服务仅使用少数几个包 • 在现代操作系统中已经解决
更多的分块攻击 • 如果攻击者不在数据报中发送所有分块会怎样? • 接收端 (或防火墙) 不再保留接收到较长时间的 • State-holding 攻击
TTL的安全含义? (8位) • 允许发现 topology(a la traceroute) • 可以提供包欺骗的提示 • 到达路由器时带有一个与该地址通常的包具有不同的TTL • 因为从攻击者到达路由器有不同的跳数 • 虽然这在路由变化时比较脆弱 • 初值对于发送者的操作系统有点不同. 这加上其他初始设置允许OS有手印(fingerprinting…) • 这就允许攻击推断出可能的脆弱点
余下的安全含义? • 对protocol 字段 (8位)没有显然的问题 • 仅仅只是合并处理 • 如果设置不正确, 下一层将发现包是病态的形式 • 坏的IP checksum字段 (16位)将使得包被网络丢弃 • 不是有效的攻击…
IP 包结构 4-bit Header Length 8-bit Type of Service (TOS) 4-bit Version 16-bit Total Length (Bytes) 3-bit Flags 16-bit Identification 13-bit Fragment Offset 8-bit Time to Live (TTL) 8-bit Protocol 16-bit Header Checksum 32-bit Source IP Address 32-bit Destination IP Address Options (if any) Payload
地址的用途 • 路由器用其转发包到目标 • 非常缺乏标识符 (暂时忘记此吧) 聚焦于: 地址怎样用于路由
IP 地址 • 今天的设计反映了必要的hacks • 没有人能从头设计这样一个系统 • 本讲最后会讨论一个更好的解决方案 • 但此方案对部署有大的修改….
第 2 层编址 • 典型地使用 MAC地址 • 唯一号烧到接口卡中 • 随机位串 • 没有位置信息 • 局域网基于此“flat”地址寻路 为什么在IP中不使用此方法?
第 2 层是局部的, 但第3层是全局的! • 将对所有的网络设备都有一项 • 必须记录下他们每个的位置 • 在其移动时更新表! • 两个问题: • 设备是纯数字 • 局部信息传播到各处 • 第2层: • 更少设备 • 局部信息仅在局部共享
编址目标: 可扩展路由 • 状态: 路由状态的限制 • 比主机数要少很多 • 变动: 路由表中变化率的限制 • 流量, 不一致性, 复杂性 对两者都极重要的 (使用单个项来覆盖更多地址)
聚焦为何不简单? • 移动性: 移动电脑, 手机等. • 多址: 很多实体有两个或者更多的ISP • 由来已久的重命名困难
另一编址问题: 稀少! • 地址耗尽: • 需要共享地址 • 无法满足每个人 • 一些国家每100人一个地址 • 极端地共享!
设计的问题 • 一个地址应该与什么相联系? • 电话网是一个含义不清的模型 • 固话: 号码反映了位置 (很难移动) • 手机: 号码反映了手机 (容易移动) • 地址应该有什么样的结构? 此结构的含义是什么? • 谁确定哪个人得到全局Internet的某个地址? 亮是如何做的隐含了什么?
00001100 00100010 10011110 00000101 IP地址 (IPv4) • 与某个interface接口相关联的唯一的32位数 • 在主机上, 在路由器上, … 连接到端口, 链路等. • 关联可以是长期的,也可以是短期的 • 使用dotted-quad 记号, 如, 12.34.158.5: 12 34 158 5
01010000 01000100 00010011 01110011 11110000 10110111 00110011 00000111 例 • 此地址是什么? • 怎样表示 68.115.183.7? 80.19.240.51
网络中的路由器 • 路由器将链路和网络连接在一起 • 必须转发包到目标 ... ... host host host host host host LAN 2 LAN 1 router router router WAN WAN Router
路由器发送包到正确的端口 包队列的位置依赖于交换机的设计 Node incoming links outgoing links Memory
1.2.3.4 1.2.3.5 转发表起到重要的作用 • 表将IP地址映射到输出接口 • 基于目标地址转发包 1.2.3.5 1 1.2.3.6 3 1.2.3.4 2 … … 1 2
forwarding table 可扩展挑战 • 假定主机具有随机地址 • 那么路由器对每一个主机需要有一行 • 每个路由器中太多状态需要hold (为什么如此多的状态?) 1.2.3.4 5.6.7.8 2.4.6.8 1.2.3.5 5.6.7.9 2.4.6.9 ... ... host host host host host host LAN 2 LAN 1 router router router WAN WAN 1.2.3.4 1.2.3.5
两个CS中的普适技巧 • 当需要更多机动性时, 增加… • 一个非直接层 • 当需要更多可扩展性时, 加入… • 结构上增加分层
U.S. 邮件系统中层次编址 • U.S.邮件地址 • Zip code: 94704 • 街区: Center Street • 街上的建筑: 1947 • 建筑位置: Suite 600 • 居住者: Scott Shenker • 转发U.S.邮件 • 把邮件递送到邮编所在的邮局 • 将信件分配给管此街区的邮递员 • 将信放到建筑/房间的邮箱中 • 将信件给合适的人 ???
都谁知道些什么? • 有人US邮政系统中有人知道所有房子在哪里吗? • 分布路由表于层次结构的每一层 • 每个可管理的水平上
层次结构 • Internet是一种“互联网inter-network” • 用于将网络连接在一起, 而非主机 • 形成了一个自然的两层结构: • WAN 发送到正确的 LAN (即, 发送到zip code) • LAN 发送到正确的主机 (即, 发送到房间) ... ... host host host host host host LAN 2 LAN 1 router router router WAN WAN LAN = 局域网Local Area Network WAN = 广域网Wide Area Network
00001100 00100010 10011110 00000101 层次编址 • 前缀是网络地址: 后缀是主机地址 • 12.34.158.0/23 是一个23位前缀 带有29地址 • Terminology: “Slash 23” 12 34 158 5 Network (23 bits) Host (9 bits)
11111111 00001100 00100010 11111111 10011110 11111110 00000101 00000000 IP地址和 23位子网掩码(Subnet Mask) Address 12 34 158 5 255 255 254 0 Mask
改进可扩展性 • 对附近的主机,标记成相同的前缀 • 1.2.3.0/24 左边的 LAN • 5.6.7.0/24 右边的 LAN 1.2.3.4 1.2.3.7 1.2.3.156 5.6.7.8 5.6.7.9 5.6.7.212 ... ... host host host host host host LAN 2 LAN 1 router router router WAN WAN 1.2.3.0/24 5.6.7.0/24 转发表
容易添加新的主机 • 不用更新路由器 • 如在右边新加一个主机5.6.7.213 • 不需要增加一个新的转发项 1.2.3.4 1.2.3.7 1.2.3.156 5.6.7.8 5.6.7.9 5.6.7.212 ... ... host host host host host host LAN 2 LAN 1 router router router host WAN WAN 5.6.7.213 1.2.3.0/24 5.6.7.0/24 forwarding table
“Subnet” 术语 • 将LAN看成“子网subnets”的一个特殊情形 • 子网是一个区间,其中路由器在 “子网掩码”中不包含地址 • 可以是一个链路, 或LAN • 课本对子网有一个操作定义 • 从主机、交换机中移走所有接口 • 留下的区域就是子网
Internet编址的历史 • 一直都是dotted-quad记法 • 一直都是网络/主机地址分离 (子网) • 但分离的方法却是随着时间而改变的
最初的Internet地址 • 前8位: 网络地址 (/8) • 后24位: 主机地址 认为256个网络已经够多的了!
Nice Features • 传输的路由器查看哪个部分的地址? • 网络 • 地址空间的该部分是偏平的 • 对于256项不需要层次 • 余下地址仅与主机网络相关 • 但不提供足够的网络 • 未预测到泛在的ethernet
0******* 10****** 110***** ******** ******** ******** ******** ******** ******** ******** ******** ******** 接下来的设计: 分类地址 • A类: 首字节在 [0..127]间 假定 /8 (最高位 = 0) • 非常大的块 (如MIT拥有18.0.0.0/8) • B类: 首字节在 [128..191]间 假定 /16 (最高位 = 10) • 较大的块 (如 UCB 拥有128.32.0.0/16) • C类: [192..223] 假定 /24 (最高位 = 110) • 小块 (如, ICIR拥有192.150.187.0/24) • (作者房间过去用/25)
1110**** 11110*** ******** ******** ******** ******** ******** ******** 类地址 (续) • D类: [224..239] (最高位 1110) • 多播组(Multicast groups) • E类: [240..255] (最高位11110) • 保留未来使用 • 类地址将产生什么问题? • 只有三种尺寸 • 路由器最终会被太多C类地址所终结 (/24s) • 浪费地址空间
今天的编址: CIDR • CIDR = 无类域间路由Classless Interdomain Routing • 网络和主机地址间的划分是可变的 • 必须对地址和掩码都指定 • 澄清地址间的边界在哪里 • 分类地址使用前几位进行通信 • CIDR 需要显式掩码
00001100 00000100 00000000 00000000 11111111 11111110 00000000 00000000 CIDR 编址 使用两个32位数来表示网络. 网络号 = IP 地址 + 掩码 IP 地址 : 12.4.0.0 IP 掩码: 255.254.0.0 地址 掩码 Network Prefix for hosts 记着 12.4.0.0/15 或 12.4/15
CIDR: 层次地址分配 • 前缀是Internet可扩展的关键 • 地址以连续块分配 (前缀) • 路由协议和包转发是基于前缀的 • 在接近主机的过程中递归地分裂成块 : : : 12.0.0.0/15 12.3.0.0/22 12.2.0.0/16 12.3.4.0/24 : : 12.3.0.0/16 12.3.254.0/23 : : 12.0.0.0/8 12.253.0.0/19 12.253.32.0/19 12.253.64.0/19 12.253.0.0/16 12.253.64.108/30 : 12.253.96.0/18 12.253.128.0/17
扩展性: 地址聚集 服务商(Provider)拥有201.10.0.0/21 (201.10.0.x .. 201.10.7.x) Provider 201.10.0.0/22 201.10.4.0/24 201.10.5.0/24 201.10.6.0/23 Internet中余下的路由器只用知道如何到达 201.10.0.0/21. 服务商(provider)可将 IP包导向到合适的客户.
聚集不总是可能 201.10.0.0/21 Provider 1 Provider 2 201.10.6.0/23 201.10.0.0/22 201.10.4.0/24 201.10.5.0/24 拥有201.10.6.0/23的Multi-homed客户有两个服务商. Internet的其他部分需要知道如何通过两个服务商都能到达目标. /23 路由必须全局可见