📄 rfc3093.txt
字号:
组织:中国互动出版网(http://www.china-pub.com/)
RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm)
E-mail:ouyang@china-pub.com
译者:prince1680(prince1680 prince1680@163.com)
译文发布时间:2001-5-24
版权:本中文翻译文档版权归中国互动出版网所有。可以用于非商业用途自由转载,但必须
保留本文档的翻译及版权信息。
Network Working Group M. Gaynor
Request for Comments: 3093 S. Bradner
Category: Informational Harvard University
1 April 2001
防火墙增强协议
(RFC3093 Firewall Enhancement Protocol (FEP))
本备忘录的状态
本备忘录提供了 Internet community 的信息,但不说明任何一种类型的 Internet 标
准。发布本备忘录不受限制。
版权声明
Copyright (C) The Internet Society (2001). All Rights Reserved.
概要
Internet 端到端体系结构的透明性允许对其进行新技术和服务的创新 [1],但是,近来
防火墙技术的发展改变了这种模式,制约了创新。我们提议了允许创新且不违反防火墙安全
模型的防火墙增强协议(FEP)。在没有防火墙管理员的协助下,FEP 允许任何应用程序通过
防火墙。我们的方法是,将任何应用程序的传输控制协议/用户数据报协议 (TCP/UDP) 包置
于超文本传输协议 (HTTP) 之上,因为 HTTP 包具有可通过防火墙的代表性。 由于防火墙被
设计用来阻止外部攻击和忽略内部威胁,故该方案并不违反实际防火墙的安全有效性。FEP 的
使用需要从防火墙内部的主机上进行协同操作,所以它与当前防火墙的安全模型相兼容。FEP
在防火墙的安全性和防火墙的透明传输通道两个方面达到最好。
1.0 术语
本文档中的关键字 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", 和 "OPTIONAL" 在 RFC 2119 中已解
释。
2.0 简介
Internet 现在已做得很好了,考虑过去的 10 年间,telco's 宣称 Internet 甚至不能
在社团环境下工作。这有许多原因,其中最主要的一点就是由 Reed, Seltzer, 和 Clark 讨
论的端到端的论点 [2]。最后的创新是提出了动手比构思更有价值的有力方法。但是,世界
正象 Clark 所指出的那样已在改变 [6]。 社团世界接入 Internet,安全性尤为重要,甚至
付出阻断端到端模式的代价。
一个这样的例子就是防火墙 - 一种阻止外来者未经授权访问社团内部的设备。我们的新
协议,防火墙增强协议 (FEP),就是为在保持防火墙建立的安全层次上恢复端到端模式而设
计的。
要看到端到端模型多么强大,请考虑以下例子。如果 Scott 和 Mark 有个好主意和实现
才能,他们可以制造一个物品,使用它,并可以送给朋友,若朋友们要保留它,把它做得更
好也许是个好主意。现在加入防火墙:如果 Mark 正好在一家安装了防火墙的公司工作,他
将不能与他的朋友 Scott 进行试验,创新将更困难,也许不可能实现。要使 Scott 和 Mark
能够做试验,IT 管理员应该做什么,以便于更好地服务于他们的用户呢?这就是 web 如何
建立的:一个有才能的人,某些好主意和创新的能力。
防火墙很重要,并且我们尊重每个人无论怎样保护他们自己的权利 (在其他人不麻烦的时
候)。 防火墙在工作,并在 Internet 中有一席之地。无论如何,防火墙是为阻止外部的威
胁而提供保护的,不是为内部的。我们提议的协议不违反防火墙的安全模型;它仍能阻止外
部危险,特别是防火墙能提供保护的危险。因为对防火墙内部的人来说,我们的协议必须运
行在可以访问 TCP 端口 80 的应用层。我们的概念是在绕过防火墙 IT 管理员的看管下而与
安全级一致。我们的自主提议是没有额外的对外部安全妥协的创新,并且最好的,是不需要
浪费包括任何管理员赞同的时间。
我们的主意来源于日益增多的使用 HTTP 的应用程序,因为它们可以通过防火墙的阻拦。
这种特定应用程序的零碎配置不足以与防火墙的创新相提并论,我们决定开发一个基于 HTTP
的 TCP/IP 的过程。使用这种创新,任何人都可以立即使用任何新的 TCP/IP 应用程序,而
不必使用艰苦的 过程通过防火墙来访问特定的应用程序。该提议的一个计划外副产品是,对
已存在的 TCP/IP 应用程序来说,也可更好地服务于用户。 用户通过 FEP 可以决定他们可
以运行哪些应用程序。
我们的提议比较简单,部分基于 Eastlake [3] 提议中的 IP 包的 MIME 编码。我们使用
随处可见的 HTTP 协议格式。IP 数据包携带于 HTTP 消息的消息体内,TCP 包的头信息编码
进消息的 HTTP 头内。这种头字段的 ASCII 编码方式有很多优点,包括易读性,增加新应用
程序的可调试性,包信息的记录容易性。如果该协议被广泛采纳,象 tcpdump 之类的工具将
变得过时。
3.0 FEP 协议
图 1 表示了协议的高层视图。主机 A 的应用程序 (1) (位于防火墙外) 发送一个
TCP/IP 数据包到主机 B (位于防火墙内)。通过通道接口,TCP/IP 数据包路由到我们的 FEP
软件 (2),并将数据包编码进一个 HTTP 消息,然后,该消息通过 HTTP/TCP/IP (3) 通道发
送到主机 B 的正常 HTTP 端口 (4)。当它到达主机 B 后,该包通过通道被路由到 FEP (5),
包被解码,并生成 TCP/IP 数据包,插入到主机 B 的协议堆栈 (6)。该包就被路由到主机 B
(7) 的应用程序,就好象不存在防火墙 (8) 一样。
主机 A 主机 B
---------- ----------
| App | (1) | App | (7)
|----------| |----------|
| TCP | | TCP |
|----------| |----------|
| IP | | IP | (6)
|----------| |----------|
| FEP dvr | (2) | FEP dvr | (5)
|----------| |----------|
| TCP | | TCP |
|----------| |----------|
| IP | 防火墙 (8) | IP |
---------- --- -----------
| (3) | | ^ (4)
+---------------->| |-----------------------+
| |
| |
---
图 1
3.1 HTTP 方法
FEP 允许任一方看起来象客户端或服务器端,每个 TCP/IP 包都可作为 HTTP GET 请求或
GET 请求应答被发送。这种灵活性在下述方面与防火墙工作得很好:试图验证通过防火墙有
效的 HTTP 命令,阻止对 FEP 包不必要的捕获。
3.2 TCP 头封装:
将 TCP/IP 包编码进 HTTP 命令有两个步骤 (或可选三个)。第一步,IP 包按 [3] 中所
指定的 MIME 格式编码进消息体内;第二步,TCP [4] 包头进行解析并编码进新的 HTTP 头
中。最后,作为可选项,IP 头也被编码进新的可选的 HTTP 头中。TCP 和可选的 IP 头编码
确实具有易读性,因为整个 IP 数据包被编码进 HTTP 命令体的部分。
该提议定义了下列描述 TCP 头信息的新 HTTP 头。
TCP_value_opt - 该 ASCII 字串表示 TCP 字段的编码类型,这里不指定强制编码类型。
合法值是:
TCP_binary - 字段值二进制表示值的 ASCII 表示。
TCP_hexed - 字段值十六进制表示值的 ASCII 表示。
TCP_Sport - 16-bit TCP 源端口号,以 ASCII 字串编码,表示端口号的值。
TCP_Dport - 16-bit TCP 目的端口号,以 ASCII 字串编码,表示端口号的值。
TCP_SeqNum - 32-bit 序列号,以 ASCII 字串编码,表示序列号的十六进制值。该字段
必须(MUST)按小写字符发送,因为它不紧急。
TCP_Ackl - 32-bit 确认号,以 ASCII 字串编码,表示确认号的值。
TCP_DODO - 4-bit 数据偏移值,以 ASCII 字串编码,表示以比特为单位的 TCP 头的实
际长度的低 32 位值。(通常这是数据值乘以 32。)
TCP_6Os - 6-bit 保留位,编码为 6 个 ASCII 字符的字串。 "O" ("Oh") 表示 "Off"
位,"O" ("Oh") 表示 "On" 位。 (注意,这些字符发送时必须(MUST)为 "off",在接收
时必须(MUST)忽略。)
TCP_FlgBts - TCP 标志位,编码为 5 个逗号分隔的 ASCII 字串:[{URG|urg},{ACK|ack},
{PSH|psh},{RST|rst},{SYN|syn},{FIN|fin}]。大写字母表示该标志位被置位,小写字母
表示该标志位被复位。
TCP_Windex - 16-bit TCP 窗口大小,以 ASCII 字串编码,表示窗口中的字节数的值。
TCP_Checkit - 16-bit TCP 检查和字段,以 ASCII 字串编码,表示检查和字段纠正一位
的十进制值。
TCP_UP - 16-bit TCP 紧急指针,以十六进制编码表示字段的值。该十六进制字串必须
(MUST)大写,因为它表示紧急。
TCP_Opp_Lst - 以逗号分隔的可能存在的 TCP 选项列表。每个选项以 ASCII 字串编码,
表示选项名,后接括在方括号内的选项指定信息。作为有代表性的选项和它们后续的编码,
其他 IP 选项有如下格式:
End of Options: ["End of Options"]
Window scale option: ["Window scale", shift_count], 这里
shift_count 是窗口尺寸因子,以十进制 ASCII 字串表示。
3.2 IPv4 头封装:
本提议定义了下列新 HTTP 头,以表示 IPv4 头信息:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -