免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1962 | 回复: 0
打印 上一主题 下一主题

这么晚了就我还在安全版,发个帖吧。zt [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-03-03 00:17 |只看该作者 |倒序浏览
防火墙增强协议
(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) 的应用程序,就好象不存在防火墙 ( 一样。

            主机 A                                       主机 B
          ----------                                   ----------
         |    App   | (1)                             |    App   | (7)
         |----------|                                 |----------|
         |    TCP   |                                 |    TCP   |
         |----------|                                 |----------|
         |     IP   |                                 |    IP    | (6)
         |----------|                                 |----------|
         | FEP dvr  | (2)                             |  FEP dvr | (5)
         |----------|                                 |----------|
         |    TCP   |                                 |    TCP   |
         |----------|                                 |----------|
         |    IP    |         防火墙 (              |    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 头信息:

   这些可选的头使用编码 IPv4 [5] 头以获得更好的易读性。这些字段的编码与上述 TCP 头字段具有相同的格式。

   由于基本 IP 包已存在于 HTTP 头内,下列头是可选的。它们不使用,使用某些或全部使用依赖于程序员的奇想。

   IP_value_opt - 该 ASCII 字串表示了下列字段的编码类型,,这里不指定强制编码类型。其合法值与 TCP_value_opt 相同。

   IP_Ver - IP 版本号,以 UTF-8 字串编码。字串的合法值是 "four","five",和 "six"。
      在本节中如果值是 'four",或在 3.3 节中如果值是 "six",IP 头中该字段的封装将被定义。如果接收到适当的命令,IP_Ver 的值是 "five" 的封装也将被处理。IP_Ver 的值为 "eight" 的封装是空的。这些字串必须(MUST)能够支持任意本地语言。

   IP4_Hlen - IP Internet 头长度字段,它与 TCP_DODO 编码方式相同。

   IP4_Type_of_Service (该名称大小写敏感) - 在 IPv4 头中,该字段名已废除,而以 IP_$$ 和 IP_CU 代替。

   IP_$$ - 6-bit 区分服务字段,以 UTF-8 字串封装,表示字段是 DS 代码指针名。

   IP_CU - 2-bit 字段,为 TOS 字段的低二位比特。因为该字段当前用于各种试验,已被编码为各种可能的方式,所以,它被编码为两个 ASCII 字串,格式为 "bit0=X" 和 "bit1=X",这里 "X" 是 "on" 或 "off."  注意,比特 0 是 MSB.

   IP4_Total - 16-bit 总长度字段,以 ASCII 字串编码表示字段的值。

   IP4_SSN - IP 标识字段,以 ASCII 字串编码表示字段的值。

   IP4_Flags - IP 标志位,编码为由 3 个逗号分隔的 ASCII 字串:[{"Must Be Zero"}, {"May Fragment"|"Don't Fragment"}, {"Last Fragment"|"More Fragments"}]

   IP4_Frager - 13-bit 片段偏移字段,以 ASCII 字串编码表示字段的值。

   IP4_TTL - 8-bit 存活时间字段(Time_To_Live),以 UTF-8 字串编码,表示形式为 "X" 的跳步次数。 这里 "X" 是字段的十进制数 -1。 该字串必须(MUST)能够支持任意本地语言。

   IP4_Proto - 8-bit 协议字段,以 UTF-8 字串编码,表示协议名,该协议的头跟着 IP 头。

   IP4_Checkit - 16-bit 检查和字段,编码方式与 TCP_Checkit 相同。

   IP4_Apparent_Source - 32-bit 源地址字段。为表示用户友好,该字段以 UTF-8 字串编码,表示包的发送者的域名。作为一种备份的形式使用,可以在防火墙将域名本身阻塞后用于保护社团用户的使用,它是一个 ASCII 字串,表示 IPv4 的由句号分隔的小于 255 的四位数地址。

   IP4_Dest_Addr - 32-bit 目的地址字段,编码方式与 IP4_Apparent_Source 相同。

   IP4_Opp_Lst - 以逗号分隔的可能存在的 IPv4 选项列表。每个选项以 ASCII 字串编码,表示
      表示选项名,后接括在方括号内的选项指定信息。作为有代表性的选项和它们后续的编码,其他 IP 选项有如下格式:

      End of Options option: ["End of Options"]

      Loose Source Routing option: ["Loose Source Routing", length,
         pointer, IP4_addr1, IP4_addr2, ...], 这里 length 和 pointer
         是 ASCII 字串,表示那些字段的值。

3.3 IPv6 头封装:

   本建议定义了下列新的 HTTP 头,以描绘 IPv6 头信息:

   这些可选的对 IPv6 [5] 头的编码提供了更好的可读性。这些字段的编码与上述 TCP 头字段的编码格式很相似。

   因为基本的 IP 包已包含在 HTTP 头中,下述头是可选的。它们不使用,使用某些或全部使用依赖于程序员的奇想。现在只支持基本的 IPv6 头。如果对此有足够的兴趣,我们将继续开发对 IPv6 扩展头的支持。

   IP_$$ - 6-bit 区分服务字段 - 见上

   IP_CU - 2-bit 未用字段 - 见上

   IP6_Go_with_the_Flow - 20-bit 流标签字段。由于该字段当前未使用,故应编码为 UTF-8 字串“do not care”。

   IP6_PayLd - 16-bit 有效载荷长度字段,编码为描述字段值的 ASCII 字串。不推荐使用 IPv6 的 FEP。

   IP6_NxtHdr - 8-bit 下一个头字段,与 IP4_Proto 编码相同。

   IP6_Hopping - 8-bit 跳跃限制字段,与 IP4_TTL 编码相同。

   IP6_Apparent_Source - 128-bit 源地址字段。该字段编码为用户友好的 UTF-8 字串,表示包发送者的域名。作为一种备份的形式使用,可以在防火墙将域名本身阻塞后用于保护合法用户的使用,它是一个 ASCII 字串,用于描述任何一种表述一个 IPv6 地址的合法形式。

   IP6_Dest_Addr - 128-bit 目的地址字段,与 IP6_Apparent_Source 编码相同。

3.4 TCP 头压缩

   面对象本文这样增加包大小的协议,压缩 TCP 头是愚蠢的,所以我们忽略它。

4.0 安全考虑

   因为该协议涉及到防火墙,所以没有实际的安全考虑。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP