Upload
lee-sears
View
107
Download
0
Embed Size (px)
DESCRIPTION
IP 寻址与转发. 内容提要. 快速安全概览 IP 寻址(编址) IP 转发 And an anagram contest!. IP 包头的快速安全分析. 思维模式多于内容 全景思维的工作 …. 聚集于发送攻击. 忽略 ( 暂时 ) 其他人的攻击 : 交通分析( Traffic analysis ) 嗅探负载( Snooping payload ) 拒绝服务( Denial of service ) 主要聚焦于发送端可以利用弱点( Focus mostly on vulnerabilities sender can exploit ). - PowerPoint PPT Presentation
Citation preview
1
IP 寻址与转发
内容提要• 快速安全概览• IP 寻址(编址)• IP 转发
• And an anagram contest!
2
IP 包头的快速安全分析
思维模式多于内容
全景思维的工作… ..
3
聚集于发送攻击• 忽略 ( 暂时 ) 其他人的攻击 :
– 交通分析( Traffic analysis )– 嗅探负载( Snooping payload )– 拒绝服务( Denial of service )
• 主要聚焦于发送端可以利用弱点( Focus mostly on vulnerabilities sender can exploit )
4
IP 包结构
4-bitVersion
4-bitHeaderLength
8-bitType of Service
(TOS)16-bit Total Length (Bytes)
16-bit Identification3-bitFlags 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
6
IP 地址的完整性( Integrity )• 源地址应该是发送的主机
– 但 , 谁来检查呢 ?– 你可以用任何源来发送包– 检查为何困难 ?
7
IP 地址完整性的含义• 为什么有人使用伪造的源地址 ?
• 发起拒绝服务攻击– 发送过多的包到目标– … 让结点超载 , 或链路导致结点超载– 但 : 受害者通过源地址能确定 / 过滤你
• 通过“哄骗 spoofing” 来躲避( Evade )检测– 把别人的源地址放在包内
o 或 : 使用很多不同的地址,因此不能被过滤
• 或 : 给被哄骗的主机带来麻烦– 伪造的主机被错误的指责– 被哄骗的主机可能会从接收到收到返回交通
8
更多安全( Security Implications )• 版本字段 (4 位 ) …. ?
– 问题 : 无经验的 IPv6 部署意味着有时可连接性超越安全强制
– 如 , 防火墙规则仅对 IPv4 设置
• 头长度 (4 位 ) …. ?– 控制存在于 IP 选项中
o 如 , 源路由让发送者控制通过网络的路径 – 即 , 绕开安全的监控– IP 选项通常在路由的慢通道中处理
o 允许攻击者,使路由随拒绝服务的压力– 防火墙通常配置成在选项中丢弃包 .
9
TOS (服务类型)的安全内含 ? (8 位 )
• 攻击者对他们的包设置 TOS 优先级 ?– 如果正常的流量不设置 TOS, 那么网络更偏爱攻击包 , 极
大地增加了损害
• 如果网络根据 TOS 收费会怎样 …– … 攻击者伪造成受害者的原地址 ?
• 今天 , 网络 TOS 通常不工作– 由于收费非常困难– TOS 目前已经针对区分服务重新定义
o 后面内容讨论
10
包分块的安全含义 ?
• 允许网络入侵监控 / 增强• 如 , 把攻击分布在多个块中
– 包监测无法匹配 “签名 signature”
• 可以通过监控端记住之前的块来处理– 但这加大状态的费用 , 是攻击的另外一个方面
Nasty-atOffset=0
tack-bytesOffset=8
11
更多分块攻击• 如果两个重叠块不一致怎样 ?
• 网络监控如何知道接收端看到的是 USERNAME NICE 还是 USERNAME EVIL?
USERNAMEOffset=0
NICE
Offset=8
EVILOffset=8
12
更多分块攻击• 如果分块超过 IP 数据报的限制会怎样 ?
– 13 位字段最大尺寸 : 0x1FFF = 8191字节偏移转换成最终的数据报 = 8191*8 = 65528数据报的最终长度 = 65528 + 9 = 65537
• 结果 : 核崩溃– 拒绝服务仅使用少数几个包– 在现代操作系统中已经解决
NineBytes
Offset=65528
13
更多的分块攻击
•如果攻击者不在数据报中发送所有分块会怎样 ?
•接收端 ( 或防火墙 ) 不再保留接收到较长时间的– State-holding 攻击
14
TTL 的安全含义 ? (8 位 )
• 允许发现 topology (a la traceroute)
• 可以提供包欺骗的提示– 到达路由器时带有一个与该地址通常的包具有不同的 TTL
o 因为从攻击者到达路由器有不同的跳数–虽然这在路由变化时比较脆弱
•初值对于发送者的操作系统有点不同 . 这加上其他初始设置允许 OS 有手印( fingerprinting … )– 这就允许攻击推断出可能的脆弱点
15
余下的安全含义 ?
• 对 protocol 字段 (8 位 )没有显然的问题– 仅仅只是合并处理– 如果设置不正确 , 下一层将发现包是病态的形式
•坏的 IP checksum 字段 (16 位 )将使得包被网络丢弃– 不是有效的攻击…
16
IP 编址
IP 包结构
4-bitVersion
4-bitHeaderLength
8-bitType of Service
(TOS)16-bit Total Length (Bytes)
16-bit Identification3-bitFlags 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
地址的用途1. 路由器用其转发包到目标
2. 非常缺乏标识符 ( 暂时忘记此吧 )
聚焦于 : 地址怎样用于路由
18
IP 地址• 今天的设计反映了必要的 hacks
•没有人能从头设计这样一个系统• 本讲最后会讨论一个更好的解决方案• 但此方案对部署有大的修改… .
19
第 2 层编址•典型地使用 MAC 地址•唯一号烧到接口卡中
– 随机位串–没有位置信息
•局域网基于此“ flat” 地址寻路
为什么在 IP 中不使用此方法 ?
20
第 2 层是局部的 , 但第 3 层是全局的 !
•将对所有的网络设备都有一项–必须记录下他们每个的位置– 在其移动时更新表 !
• 两个问题 :– 设备是纯数字–局部信息传播到各处
• 第 2 层 :– 更少设备–局部信息仅在局部共享
21
编址目标 : 可扩展 路由•状态 : 路由状态的限制
–比主机数要少很多
•变动 : 路由表中变化率的限制– 流量 , 不一致性 , 复杂性
对两者都极重要的( 使用单个项来覆盖更多地址 )
22
聚焦为何不简单 ?
• 移动性 : 移动电脑 , 手机等 .
• 多址 : 很多实体有两个或者更多的 ISP
• 由来已久的重命名困难
23
另一编址问题 : 稀少 !
• 地址耗尽 :–需要共享地址– 无法满足每个人
• 一些国家每 100 人一个地址– 极端地共享 !
24
25
设计的问题• 一个地址应该与什么相联系 ?
–电话网是一个含义不清的模型–固话 : 号码反映了位置 ( 很难移动 )–手机 : 号码反映了手机 ( 容易移动 )
• 地址应该有什么样的结构 ? 此结构的含义是什么 ?
• 谁确定哪个人得到全局 Internet 的某个地址 ? 亮是如何做的隐含了什么 ?
26
IP 地址 (IPv4)
•与某个 interface 接口相关联的唯一的 32 位数– 在主机上 , 在路由器上 , … 连接到端口 , 链路等 .–关联可以是长期的,也可以是短期的
• 使用 dotted-quad 记号 , 如 , 12.34.158.5:
00001100 00100010 10011110 00000101
12 34 158 5
例• 此地址是什么 ?
• 怎样表示 68.115.183.7?
27
01010000 00010011 11110000 00110011
01000100 01110011 10110111 00000111
80.19.240.51
28
网络中的路由器
• 路由器将链路和网络连接在一起•必须转发包到目标
host host host
LAN 1
... host host host
LAN 2
...
router router routerWAN WAN
Router
29
路由器发送包到正确的端口包队列的位置依赖于交换机的设计
incoming links outgoing linksNode
Memory
30
转发表起到重要的作用
•表将 IP 地址映射到输出接口•基于目标地址转发包
……
31.2.3.6 11.2.3.5
1
21.2.3.5
1.2.3.4
1.2.3.4 2
31
可扩展挑战•假定主机具有随机地址
– 那么路由器对每一个主机需要有一行–每个路由器中太多状态需要 hold
( 为什么如此多的状态 ?)
host host host
LAN 1
... host host host
LAN 2
...
router router routerWAN WAN
1.2.3.4 5.6.7.8 2.4.6.8 1.2.3.5 5.6.7.9 2.4.6.9
1.2.3.4
1.2.3.5
forwarding table
两个 CS 中的普适技巧•当需要更多机动性时 , 增加…
– 一个非直接层
•当需要更多可扩展性时 , 加入…– 结构上增加分层
32
33
U.S. 邮件系统中层次编址• U.S.邮件地址
– Zip code: 94704–街区 : Center Street–街上的建筑 : 1947–建筑位置 : Suite 600–居住者 : Scott Shenker
• 转发 U.S.邮件– 把邮件递送到邮编所在的邮局–将信件分配给管此街区的邮递员–将信放到建筑 /房间的邮箱中–将信件给合适的人
???
都谁知道些什么 ?
• 有人 US邮政系统中有人知道所有房子在哪里吗 ?
• 分布路由表于层次结构的每一层–每个可管理的水平上
34
35
层次结构• Internet 是一种“互联网 inter-network”
– 用于将网络连接在一起 , 而非主机
•形成了一个自然的两层结构 :– WAN 发送到正确的 LAN ( 即 , 发送到 zip code)– LAN 发送到正确的主机 ( 即 , 发送到房间 )
host host host
LAN 1
... host host host
LAN 2
...
router router routerWAN WAN
LAN = 局域网 Local Area NetworkWAN = 广域网 Wide Area Network
36
层次编址• 前缀是网络地址 : 后缀是主机地址• 12.34.158.0/23 是一个 23 位前缀 带有 29 地址
– Terminology: “Slash 23”
00001100 00100010 10011110 00000101
Network (23 bits) Host (9 bits)
12 34 158 5
37
IP 地址和 23 位子网掩码( Subnet Mask )
00001100 00100010 10011110 00000101
12 34 158 5
11111111 11111111 11111110 00000000
255 255 254 0
Address
Mask
38
改进可扩展性• 对附近的主机,标记成相同的前缀
– 1.2.3.0/24 左边的 LAN– 5.6.7.0/24 右边的 LAN
host host host
LAN 1
... host host host
LAN 2
...
router router routerWAN WAN
1.2.3.4 1.2.3.7 1.2.3.156 5.6.7.8 5.6.7.9 5.6.7.212
1.2.3.0/24
5.6.7.0/24
转发表
39
容易添加新的主机• 不用更新路由器
– 如在右边新加一个主机 5.6.7.213– 不需要增加一个新的转发项
host host host
LAN 1
... host host host
LAN 2
...
router router routerWAN WAN
1.2.3.4 1.2.3.7 1.2.3.156 5.6.7.8 5.6.7.9 5.6.7.212
1.2.3.0/24
5.6.7.0/24
forwarding table
host
5.6.7.213
“Subnet” 术语• 将 LAN 看成“子网 subnets” 的一个特殊情形
–子网是一个区间,其中路由器在 “子网掩码”中不包含地址
– 可以是一个链路 , 或 LAN
•课本对子网有一个操作定义– 从主机、交换机中移走所有接口–留下的区域就是子网
40
Internet 编址的历史• 一直都是 dotted-quad 记法• 一直都是网络 / 主机地址分离 (子网 )
• 但分离的方法却是随着时间而改变的
41
最初的 Internet 地址• 前 8 位 : 网络地址 (/8)
• 后 24 位 : 主机地址
认为 256 个网络已经够多的了 !
42
Nice Features
•传输的路由器查看哪个部分的地址 ?– 网络
• 地址空间的该部分是偏平的– 对于 256 项不需要层次
•余下地址仅与主机网络相关
• 但不提供足够的网络–未预测到泛在的 ethernet
43
44
接下来的设计 : 分类地址
– A 类 : 首字节在 [0..127]间 假定 /8 ( 最高位 = 0)
o 非常大的块 ( 如 MIT拥有 18.0.0.0/8)
– B 类 : 首字节在 [128..191]间 假定 /16 ( 最高位 = 10)
o 较大的块 ( 如 UCB 拥有 128.32.0.0/16)
– C 类 : [192..223] 假定 /24 ( 最高位 = 110)
o 小块 ( 如 , ICIR拥有 192.150.187.0/24)o ( 作者房间过去用 /25)
0******* ******** ******** ********
10****** ******** ******** ********
110***** ******** ******** ********
45
类地址 ( 续 )
– D 类 : [224..239] ( 最高位 1110)
o 多播组( Multicast groups )
– E 类 : [240..255] ( 最高位 11110)
o 保留未来使用
•类地址将产生什么问题 ?–只有三种尺寸– 路由器最终会被太多 C类地址所终结 (/24s)–浪费地址空间
1110**** ******** ******** ********
11110*** ******** ******** ********
今天的编址 : CIDR
• CIDR = 无类域间路由 Classless Interdomain Routing
• 网络和主机地址间的划分是可变的
• 必须对地址和掩码都指定–澄清地址间的边界在哪里– 分类地址使用前几位进行通信– CIDR 需要显式掩码
46
47
CIDR 编址
IP 地址 : 12.4.0.0 IP 掩码 : 255.254.0.0
00001100 00000100 00000000 00000000
11111111 11111110 00000000 00000000
地址
掩码
for hosts Network Prefix
使用两个 32 位数来表示网络 . 网络号 = IP 地址 + 掩码
记着 12.4.0.0/15 或 12.4/15
48
CIDR: 层次地址分配• 前缀是 Internet 可扩展的关键
– 地址以连续块分配 ( 前缀 )– 路由协议和包转发是基于前缀的– 在接近主机的过程中递归地分裂成块
12.0.0.0/8
12.0.0.0/15
12.253.0.0/16
12.2.0.0/1612.3.0.0/16
::
12.3.0.0/2212.3.4.0/24
::
12.3.254.0/23
12.253.0.0/1912.253.32.0/1912.253.64.0/1912.253.64.108/3012.253.96.0/1812.253.128.0/17
:::
:
49
扩展性 : 地址聚集
服务商( Provider )拥有 201.10.0.0/21 (201.10.0.x .. 201.10.7.x)
201.10.0.0/22 201.10.4.0/24 201.10.5.0/24 201.10.6.0/23
Provider
Internet 中余下的路由器只用知道如何到达 201.10.0.0/21. 服务商( provider )可将 IP 包导向
到合适的客户 .
50
聚集不总是可能
201.10.0.0/21
201.10.0.0/22 201.10.4.0/24 201.10.5.0/24 201.10.6.0/23
Provider 1 Provider 2
拥有 201.10.6.0/23 的 Multi-homed 客户有两个服务商 . Internet 的其他部分需要知道如何通过两个服务商都
能到达目标 . /23 路由必须全局可见
51
5 Minute Break
逆序智力题• What anagram of a datagram involves circular
reasoning?
• What is this compound and why is it like “heroin to me” (but with an extra b)?
52
Answers
• What anagram of a datagram involves circular reasoning? PI (anagram of IP)
• What is this compound and why is it like “heroin to me” (but with an extra b).
• Theobromine (psychoactive ingredient of chocolate)About 75% of my food intake
53
54
地址分配与指定
55
获得一块地址• 分配也是层次化的
– 前缀 : 指定给一个机构– 地址 : 由 机构指定给一个结点
• 谁分配前缀 ?– Internet Corporation for Assigned Names and Numbers
o 指定大块地址给区域 Internet注册商o ICANN is politically charged
– 区域 Internet注册商 (RIRs)o E.g., ARIN (American Registry for Internet Numbers)o 对其区间分配地址块o 分配给网络服务提供商 Internet Service Providers和大型机构 ($
$)– 网络服务提供商 Internet Service Providers (ISPs)
o 分配地址给其客户 ( 可能会递归 )• 通常不收费( Often w/o charge )
56
知晓谁拥有某个地址• 地址注册
– 地址分配的公共记录– Internet 服务提供商 (ISPs) 在给其客户分配时应该更新– 但是 , 记录的过时是有名的
• 查询方式– UNIX: “whois –h whois.arin.net 169.229.60.27”– http://www.arin.net/whois/– http://www.geektools.com/whois.php– …
按国家分配的地址
57
地址分配 (ordered sampling)
• USA 1536.19 million 5.52 address/capita• China 331.68 million 0.26• Japan 202.10 million 1.59• S. Korea 112.22 million 2.40• Brazil46.47 million 0.27• Russian 37.01 million 0.25• Taiwan 35.38 million 1.59• India 34.65 million 0.03• Ukraine 9.88 million 0.20• Finland 9.73 million 1.88• Israel5.35 million 0.86• Pakistan 5.17 million 0.03
58
59
政策问题• 对每个地理区域需要多少地址 ?
–每个国家地址一样多 ?– 还是按人口比例 ?– 已经分配的地址怎么办 ?
• 地址空间的可移动性 ?–当改变你的服务商时保留地址块 ?– 优点 : 避免对你的设备重新编号–缺点 : 削弱了地址聚集的有效性
•保持地址注册是全新的 ?– 对合并和获取怎样处理 ?– 地址块分发给客户 ?– 结果是 , 注册通常都是过时的
60
32 位地址够了吗 ?
•独立地址不是那么多– 232 = 4,294,967,296 (只有 40 亿 )– 其中 , 一些 ( 还不少 ) 保留用于特殊的目的–而且 , 地址以大的块来分配
• 而 , 许多设备需要 IP 地址–计算机 , PDA, 路由器 , tanks (酒箱) , 拷箱 , …
• 长期方案 ( 可能 ): 更大的地址空间– IPv6 有 128 位地址 (2128 = 3.403 × 1038)
•短期方案 : 沿 IPv4艰难前行–动态分配地址 Dynamically-assigned addresses (DHCP)– 网络地址转换 Network address translation (NAT)
61
共享一块地址•动态主机配置协议 Dynamic Host Configuration
Protocol (DHCP)– 配置主机的几个方面– 最重要的 : 指定临时地址 (出租 lease)– 使用 DHCP 服务器来分配– 块地址在用户间复用
• DHCP 协议 : –广播一个服务发现消息 (第二层 )– 服务器回应一个地址
host host host...
DHCP server
62
来自 DHCP 服务器的响应• DHCP 从服务器 “提供”消息
– 配置参数 (建议的 IP 地址 , 掩码 , 网关路由器 , DNS 服务器 , ...)
–租约时间 (信息有效的时间 )
• 可能多个服务器响应–同一广播网内有多个服务器–每个可能都会提供一个响应
• 接收提供的其中之一–客户机发送一个 “request” 回应参数– DHCP 服务器响应一个 “ACK” 来确认– … 而其他服务器看到他们没有被选中
63
动态主机配置协议
arrivingclient
DHCP server203.1.2.5
DHCP discover(broadcast)
DHCP offer
DHCP request
DHCP ACK
(broadcast)
Why all the broadcasts?
(broadcast)
(broadcast)
64
软状态 : 更新还是遗忘•租借时间为何必要 ?
–客户端可以释放 IP 地址 (DHCP RELEASE)o 如 , “ipconfig /release” 用 DOS命令行o 如 , clean shutdown of the computer
– 但 , 主机可能不释放地址o 如 , 主机崩溃 (蓝屏死机 !)o 如 , 有 bug 的客户机软件
–并且你不希望永远分配地址
• 性能妥协–短租约时间 : 立即返回不活动的地址– 长租约时间 : 避免由于频繁更新和学习租期而造成的超负荷,从而产生拒绝
65
共享单个地址• 如果仅有单个地址怎样
– 但有多个计算机 ?
• 网络地址转换 Network Address Translation (NAT) 使多个主机共享单个地址– 使用端口号 (传输层的字段 )
•当首次提出时,被认为是结构上很讨厌 , 但它 :– 可能从地址耗尽解救出来–且反映了现代设计的原则 ( 不直接 )
66
网络地址转换 (NAT)
在有 NAT 之前,每台连接到 Internet 的机器拥有唯一 IP地址
1.2.3.4
1.2.3.5
5.6.7.8
LAN
Clients
Server
Internet1.2.3.45.6.7.880 1001
dest addr src addrdst port
src port
5.6.7.8 1.2.3.4 80 1001
67
NAT ( 续 )• 指定在同一 NAT 之后的机器的地址
– 通常以地址块的形式 192.168.0.0/16
• 使用端口号复用单个地址
192.2.3.4
192.2.3.5
5.6.7.8
Clients
Server
Internet
NAT
1.2.3.4
5.6.7.8 192.2.3.4 80 1001
192.2.3.4:1001 1.2.3.4:2000
5.6.7.8 1.2.3.4 80 2000
1.2.3.45.6.7.880 2000
5.6.7.8 192.2.3.480 1001
68
NAT ( 续 )
192.2.3.4
192.2.3.5
5.6.7.8
Clients
Server
Internet
NAT
1.2.3.4
192.2.3.4:1001 1.2.3.4:2000
5.6.7.8 1.2.3.4 80 2001
1.2.3.45.6.7.880 2001
5.6.7.8 192.2.3.580 1001
192.2.3.5:1001 1.2.3.4:2001
5.6.7.8 192.2.3.5 80 1001
• 指定在同一 NAT 之后的机器的地址– 通常以地址块的形式 192.168.0.0/16
• 使用端口号复用单个地址
NAT: “ 中间盒子 Middlebox” 的早期示例•盒子插入到网络中来提供功能
– NATs, Firewalls,….
•与结构不匹配 , 违背端到端( E2E )原则
• 但是是一个非常巧的插入功能方式,使得 :– 不需要端主机改变或合作– 由操作者控制 ( 如 , 安全 )
• 一个有趣的结构挑战 :– 如何将中间盒子与结构协调 69