分享
 
 
 

RFC3093 - Firewall Enhancement Protocol (FEP)

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

Network Working Group M. Gaynor

Request for Comments: 3093 S. Bradner

Category: Informational Harvard University

1 April 2001

Firewall Enhancement Protocol (FEP)

Status of this Memo

This memo provides information for the Internet community. It does

not specify an Internet standard of any kind. Distribution of this

memo is unlimited.

Copyright Notice

Copyright (C) The Internet Society (2001). All Rights Reserved.

Abstract

Internet Transparency via the end-to-end architecture of the Internet

has allowed vast innovation of new technologies and services [1].

However, recent developments in Firewall technology have altered this

model and have been shown to inhibit innovation. We propose the

Firewall Enhancement Protocol (FEP) to allow innovation, without

violating the security model of a Firewall. With no cooperation from

a firewall operator, the FEP allows ANY application to traverse a

Firewall. Our methodology is to layer any application layer

Transmission Control Protocol/User Datagram Protocol (TCP/UDP)

packets over the HyperText Transfer Protocol (HTTP) protocol, since

HTTP packets are typically able to transit Firewalls. This scheme

does not violate the actual security usefulness of a Firewall, since

Firewalls are designed to thwart attacks from the outside and to

ignore threats from within. The use of FEP is compatible with the

current Firewall security model because it requires cooperation from

a host inside the Firewall. FEP allows the best of both worlds: the

security of a firewall, and transparent tunneling thought the

firewall.

1.0 Terminology

The key Words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",

"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this

document are to be interpreted as described in RFC2119.

2.0 IntrodUCtion

The Internet has done well, considering that less than 10 years ago

the telco's were claiming it could not ever work for the corporate

environment. There are many reasons for this; a particularly strong

one is the end-to-end argument discussed by Reed, Seltzer, and Clark

[2]. Innovation at the ends has proven to be a very powerful

methodology creating more value than ever conceived of. But, the

world is changing as Clark notes in [6]. With the connection of the

corporate world to the Internet, security concerns have become

paramount, even at the eXPense of breaking the end-to-end paradigm.

One example of this is the Firewall - a device to prevent outsiders

from unauthorized Access into a corporation. Our new protocol, the

Firewall Enhancement Protocol (FEP), is designed to restore the end-

to-end model while maintaining the level of security created by

Firewalls.

To see how powerful the end-to-end model is consider the following

example. If Scott and Mark have a good idea and some implementation

talent, they can create an artifact, use it, and send it to their

friends. If it turns out to be a good idea these friends can adopt

it and maybe make it better. Now enter the Firewall: if Mark happens

to work at a company that installs a Firewall, he can't experiment

with his friend Scott. Innovation is more difficult, maybe

impossible. What business is it of an IT manager if Scott and Mark

want to do some experiments to enable them to better serve their

users? This is how the web was created: one guy with talent, a few

good ideas, and the ability to innovate.

Firewalls are important, and we do respect the right of anybody to

protecting themselves any way they want (as long as others are not

inconvenienced). Firewalls work, and have a place in the Internet.

However, Firewalls are built to protect from external threats, not

internal ones. Our proposed protocol does not break the security

model of the Firewall; it still protects against all external risks

that a particular Firewall can protect against. For our protocol to

work someone inside the Firewall must run an application level

protocol that can access TCP port 80. Our concept allows a

consistent level of security while bypassing the IT manager in charge

of the Firewall. We offer freedom to innovate without additionally

compromising external security, and the best part, no need to waste

time involving any managers for approval.

We got this idea from the increasing number of applications that use

HTTP specifically because it can bypass Firewall barriers. This

piecemeal deployment of specific applications is not an efficient way

to meet the challenge to innovation created by Firewalls. We decided

to develop a process by which TCP/IP itself is carried over HTTP.

With this innovation anyone can use any new TCP/IP application

immediately without having to go through the laborious process of

dealing with Firewall access for the particular application. An

unintended byproduct of this proposal is that existing TCP/IP

applications can also be supported to better serve the users. With

FEP, the users can decide what applications they can run.

Our protocol is simple and is partly based on the Eastlake [3]

proposal for MIME encoding of IP packets. We use the ubiquitous HTTP

protocol format. The IP datagram is carried in the message body of

the HTTP message and the TCP packet header information is encoded

into HTTP headers of the message. This ASCII encoding of the header

fields has many advantages, including human readability, increasing

the debuggability of new applications, and easy logging of packet

information. If this becomes widely adopted, tools like tcpdump will

become obsolete.

3.0 FEP Protocol

Figure 1 shows a high level view of our protocol. The application

(1) in host A (outside the Firewall) sends a TCP/IP datagram to host

B (within the firewall). Using a tunnel interface the TCP/IP

datagram is routed to our FEP software (2), which encodes the

datagram within a HTTP message. Then this message is sent via a

HTTP/TCP/IP tunnel (3) to host B on the normal HTTP port (4). When

it arrives at host B, this packet is routed via the tunnel to the FEP

software (5), which decodes the packet and creates a TCP/IP datagram

to insert into host's B protocol stack (6). This packet is routed to

the application on host B (7), as if the Firewall (8) never existed.

host A host B

---------- ----------

App (1) App (7)

---------- ----------

TCP TCP

---------- ----------

IP IP (6)

---------- ----------

FEP dvr (2) FEP dvr (5)

---------- ----------

TCP TCP

---------- ----------

IP Firewall (8) IP

---------- --- -----------

(3) ^ (4)

+----------------> -----------------------+

---

Figure 1

3.1 HTTP Method

FEP allows either side to look like a client or server. Each TCP/IP

packet is sent as either a HTTP GET request or a response to a GET

request. This flexibility work well with firewalls that try to

verify valid HTTP commands crossing the Firewall stopping the

unwanted intercepting of FEP packets.

3.2 TCP Header Encapsulation:

The TCP/IP packet is encoded into the HTTP command in two (or

optionally three) steps. First, the IP packet is encoded as the

message body in MIME format, as specified in [3]. Next, the TCP [4]

packet header is parsed and encoded into new HTTP headers. Finally,

as an option, the IP header can also be encoded into new optional

HTTP headers. Encoding the TCP and optionally the IP header is

strictly for human readability, since the entire IP datagram is

encoded in the body part of the HTTP command.

This proposal defines the following new HTTP headers for representing

TCP header information.

TCP_value_opt - This ASCII string represents the encoding type for

the TCP fields where a mandatory encoding type is not specified.

The legitimate values are:

TCP_binary - ASCII representation of the binary representation of the

value of the field.

TCP_hexed - ASCII representation of the hex representation of the

value of the field.

TCP_Sport - The 16-bit TCP Source Port number, encoded as an ASCII

string representing the value of port number.

TCP_Dport - The 16-bit TCP Destination Port number, encoded as an

ASCII string representing the value of the port number.

TCP_SeqNum - The 32-bit Sequence Number, encoded as an ASCII string

representing the hex value of the Sequence number. This field

MUST be sent as lower case because it is not urgent.

TCP_Ackl - The 32-bit Acknowledgement Number, encoded as ASCII string

representing the value of the Acknowledgement number.

TCP_DODO - The 4-bit Data Offset value, encoded as an ASCII string

representing the base 32 value of the actual length of TCP header

in bits. (Normally this is the Data value times 32.)

TCP_6Os - The 6 reserved bits, encoded as a string of 6 ASCII

characters. A "O" ("Oh") represents an "Off" bit and "O" ("Oh")

represents an "On" bit. (Note these characters MUST all be sent

as "off" and MUST be ignored on receipt.)

TCP_FlgBTs - The TCP Flags, encoded as the set of 5 comma-separated

ASCII strings: [{URGurg}, {ACKack}, {PSHpsh}, {RSTrst},

{SYNsyn}, {FINfin}]. Capital letters imply the flag is set,

lowercase means the flag is not set.

TCP_Windex - The 16-bit TCP Window Size, encoded as an ASCII string

representing the value of the number of bytes in the window.

TCP_Checkit - The 16-bit TCP Checksum field, encoded as an ASCII

string representing the decimal value of the ones-complement of

the checksum field.

TCP_UP - The 16-bit TCP Urgent Pointer, encoded as the hex

representation of the value of the field. The hex string MUST be

capitalized since it is urgent.

TCP_Opp_Lst - A comma-separated list of any TCP options that may be

present. Each option is encoded as an ASCII string representing

the name of the option followed by option-specific information

enclosed in square brackets. Representative options and their

encoding follow, other IP options follow the same form:

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

Window scale option: ["Window scale", shift_count], where

shift_count is the window scaling factor represented as the

ASCII string in decimal.

3.2 IPv4 Header Encapsulation:

This proposal defines the following new HTTP headers for representing

IPv4 header information:

These optional headers are used to encode the IPv4 [5] header for

better readability. These fields are encoded in a manner similar to

the above TCP header fields.

Since the base IP packet is already present in an HTTP header, the

following headers are optional. None, some or all of them may be

used depending on the whim of the programmer.

IP_value_opt - This ASCII string represents the encoding type for the

following fields where a mandatory encoding type is not

specified. The legitimate values are the same as for

TCP_value_opt.

IP_Ver - The IP Version number, encoded as an UTF-8 string. The

legitimate values for the string are "four", "five", and "six."

The encapsulation of the fields in the IP header are defined in

this section if the value is "four", and in section 3.3 if the

value is "six". Encapsulations for headers with IP_Ver value of

"five" will be developed if the right orders are received.

Encapsulations for headers with the IP_Ver value of "eight" are

empty. Implementations MUST be able to support arbitrary native

languages for these strings.

IP4_Hlen - The IP Internet Header Length field, it is encoded in the

same way as TCP_DODO.

IP4_Type_of_Service (this name is case sensitive) - This is an

obsolete name for a field in the IPv4 header, which has been

replaced with IP_$$ and IP_CU.

IP_$$ - The 6-bit Differentiated Services field, encapsulated as an

UTF-8 string representing the name of the DS codepoint in the

field.

IP_CU - The 2-bit field that was the two low-order bits of the TOS

field. Since this field is currently being used for experiments

it has to be coded in the most general way possible, thus it is

encoded as two ASCII strings of the form "bit0=X" and "bit1=X,"

where "X" is "on" or "off." Note that bit 0 is the MSB.

IP4_Total - The 16-bit Total Length field, encoded as an ASCII string

representing the value of the field.

IP4_SSN - The IP Identification field, encoded as an ASCII string

representing the value of the field.

IP4_Flags - The IP Flags, encoded as the set of 3 comma separated

ASCII strings: [{"Must Be Zero"}, {"May Fragment""Don't

Fragment"}, {"Last Fragment""More Fragments"}]

IP4_Frager - The 13-bit Fragment Offset field, encoded as an ASCII

string representing the value of the field.

IP4_TTL - The 8-bit Time-to-Live field, encoded as an UTF-8 string of

the form "X hops to destruction." Where "X" is the decimal value

-1 of the field. Implementations MUST be able to support

arbitrary languages for this string.

IP4_Proto - The 8-bit Protocol field, encoded as an UTF-8 string

representing the common name for the protocol whose header

follows the IP header.

IP4_Checkit - The 16-bit Checksum field, encoded in the same way as

TCP_Checkit.

IP4_Apparent_Source - The 32-bit Source Address field. For user

friendliness this is encoded as an UTF-8 string representing the

domain name of the apparent sender of the packet. An alternate

form, to be used when the domain name itself might be blocked by a

firewall programmed to protect the innocence of the corporate

users, is an ASCII string representing the dotted quad form of the

IPv4 address.

IP4_Dest_Addr - The 32-bit Destination Address field, encoded in the

same way as is IP4_Apparent_Source.

IP4_Opp_Lst - A comma-separated list of all IPv4 options that are

present. Each option is encoded as an ASCII string representing

the name of the option followed by option-specific information

enclosed in square brackets. Representative options and their

encoding follow, other IP options follow the same form:

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

Loose Source Routing option: ["Loose Source Routing", length,

pointer, IP4_addr1, IP4_addr2, ...], where length and pointer

are ASCII strings representing the value of those fields.

3.3 IPv6 Header Encapsulation:

This proposal defines the following new HTTP headers for representing

IPv6 header information:

These optional headers encode the IPv6 [5] header for better

readability. These fields are encoded in a manner similar to the

above TCP header fields.

Since the base IP packet is already present in an HTTP header the

following headers are optional. None, some or all of them may be

used depending on the whim of the programmer. At this time only the

base IPv6 header is supported. If there is sufficient interest,

support will be developed for IPv6 extension headers.

IP_$$ - the 6-bit Differentiated Services field - see above

IP_CU - the 2-bit unused field - see above

IP6_Go_with_the_Flow - The 20-bit Flow Label field. Since this field

is not currently in use it should be encoded as the UTF-8 string

"do not care".

IP6_PayLd - The 16-bit Payload Length field, encoded as an ASCII

string representing the value of the field. The use of FEP with

IPv6 jumbograms is not recommended.

IP6_NxtHdr - The 8-bit Next Header field, encoded in the same way as

IP4_Proto.

IP6_Hopping - The 8-bit Hop Limit field, encoded in the same way as

IP4_TTL.

IP6_Apparent_Source - The 128-bit Source Address field. For user

friendliness, this is encoded as an UTF-8 string representing the

domain name of the apparent sender of the packet. An alternate

form, to be used when the domain name itself might be blocked by a

Firewall programmed to protect the innocence of the corporate

users, is an ASCII string representing any one of the legitimate

forms of representing an IPv6 address.

IP6_Dest_Addr - The 128-bit Destination Address field, encoded the

same way as IP6_Apparent_Source.

3.4 TCP Header Compression

Compressing TCP headers in the face of a protocol such as this one

that explodes the size of packets is silly, so we ignore it.

4.0 Security Considerations

Since this protocol deals with Firewalls there are no real security

considerations.

5.0 Acknowledgements

We wish to thank the many Firewall vendors who have supported our

work to re-enable the innovation that made the Internet great,

without giving up the cellophane fig leaf of security that a Firewall

provides.

6.0 Authors' Addresses

Mark Gaynor

Harvard University

Cambridge MA 02138

EMail gaynor@eecs.harvard.edu

Scott Bradner

Harvard University

Cambridge MA 02138

Phone +1 617 495 3864

EMail sob@harvard.edu

References

[1] Carpenter, B., "Internet Transparency", RFC2775, February 2000.

[2] Saltzer, J., Reed, D., and D. Clark, "End-to-End Arguments in

System Design". 2nd International Conference on Distributed

Systems, Paris, France, April 1981.

[3] Eastlake, D., "IP over MIME", Work in Progress.

[4] Postel, J., "Transmission Control Protocol", STD 7, RFC793,

September 1981.

[5] Postel, J., "Internet Protocol", STD 5, RFC791, September 1981.

[6] Clark, D. and M. Blumenthal, "Rethinking the Design of the

Internet: The end-to-end argument vs. the brave new world". 2000.

Full Copyright Statement

Copyright (C) The Internet Society (2001). All Rights Reserved.

This document and translations of it may be copied and furnished to

others, and derivative works that comment on or otherwise explain it

or assist in its implementation may be prepared, copied, published

and distributed, in whole or in part, without restriction of any

kind, provided that the above copyright notice and this paragraph are

included on all such copies and derivative works. However, this

document itself may not be modified in any way, such as by removing

the copyright notice or references to the Internet Society or other

Internet organizations, except as needed for the purpose of

developing Internet standards in which case the procedures for

copyrights defined in the Internet Standards process must be

followed, or as required to translate it into languages other than

English.

The limited permissions granted above are perpetual and will not be

revoked by the Internet Society or its successors or assigns.

This document and the information contained herein is provided on an

"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING

TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING

BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION

HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF

MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Acknowledgement

Funding for the RFCEditor function is currently provided by the

Internet Society.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有