发信人: HPVC()
整理人: ding(1999-12-13 18:56:43), 站内信件
|
(三)防火墙的构成(续2)
3.3 包过滤
包过滤技术(Ip Filtering or packet filtering) 的原理在于监视并过滤网络上
流入流出的Ip包,拒绝发送可疑的包。由于Internet 与Intranet 的连接多数都要使用
路由器,所以Router成为内外通信的必经端口,Router的厂商在Router上加入IP Filte-
-ring 功能,这样的Router也就成为Screening Router 或称为Circuit-level gateway
网络专家Steven.M.Bellovin认为这种Firewall 应该是足够安全的,但前提是配置合理。
然而一个包过滤规则是否完全严密及必要是很难判定的,因而在安全要求较高的场合,
通常还配合使用其它的技术来加强安全性。
Router 逐一审查每份数据包以判定它是否与其它包过滤规则相匹配。(注:只检查
包头的内容,不理会包内的正文信息内容) 过滤规则以用于IP顺行处理的包头信息为基
础。包头信息包括: IP 源地址、IP目的地址、封装协议(TCP、UDP、或IP Tunnel)、
TCP/UDP源端口、ICMP包类型、包输入接口和包输出接口。如果找到一个匹配,且规则允
许这包,这一包则根据路由表中的信息前行。如果找到一个匹配,且规则允许拒绝此包,
这一包则被舍弃。如果无匹配规则,一个用户配置的缺省参数将决定此包是前行还是被
舍弃。
*从属服务的过滤
包过滤规则允许Router取舍以一个特殊服务为基础的信息流,因为大多数服务检测
器驻留于众所周知的TCP/UDP端口。例如,Telnet Service 为TCP port 23端口等待远程
连接,而SMTP Service为TCP Port 25端口等待输入连接。如要封锁输入Telnet 、SMTP
的连接,则Router舍弃端口值为23,25的所有的数据包。
典型的过滤规则有以下几种:
.允许特定名单内的内部主机进行Telnet输入对话
.只允许特定名单内的内部主机进行FTP输入对话
.只允许所有Telnet 输出对话
.只允许所有FTP 输出对话
.拒绝来自一些特定外部网络的所有输入信息
* 独立于服务的过滤 有些类型的攻击很难用基本包头信息加以鉴别,因为这些独立于服务。一些Router
可以用来防止这类攻击,但过滤规则需要增加一些信息,而这些信息只有通过以下方式才
能获悉:研究Router选择表、检查特定的IP选项、校验特殊的片段偏移等。这类攻击有
以下几种:
.源IP地址欺骗攻击 入侵者从伪装成源自一台内部主机的一个外部地点传送一些信息包;这些信息包似
乎像包含了一个内部系统的源IP地址。如果这些信息包到达Router的外部接口,则舍弃每
个含有这个源IP地址的信息包,就可以挫败这种源欺骗攻击。
.源路由攻击
源站指定了一个信息包穿越Internet时应采取的路径,这类攻击企图绕过安全措施 ,并使信息包沿一条意外(疏漏)的路径到达目的地。可以通过舍弃所有包含这类源路由
选项的信息包方式,来挫败这类攻击。
.残片攻击
入侵者利用Ip残片特性生成一个极小的片断并将TCP报头信息肢解成一个分离的信
息包片断。舍弃所有协议类型为TCP、IP片断偏移值等于1的信息包,即可挫败残片的攻
击。
从以上可看出定义一个完善的安全过滤规则是非常重要的。通常,过滤规则以表
格的形式表示,其中包括以某种次序排列的条件和动作序列。每当收到一个包时,则按
照从前至后的顺序与表格中每行的条件比较,直到满足某一行的条件,然后执行相应的
动作(转发或舍弃)。有些数据包过滤在实现时,"动作"这一项还询问,若包被丢弃是否
要通知发送者(通过发ICMP信息),并能以管理员指定的顺序进行条件比较,直至找到满足
的条件。以下是两个例子:
* 例 一 某公司有一个B类地址 123.45.0.0,它不希望Internet上的其他站点对它进行访问。
但是,该公司网中有一个子网123.45.6.0 用于和某大学合作开发项目,该大学有一个B
类地址 135.79.0.0 ,并希望大学的各个子网都能访问123.45.6.0 子网。但是,由于
135.79.99.0 子网中存在着不安全因素,因此,它除了能访问123.45.6.0 子网之外,不
能访问公司网中的其它子网。为了简单起见,假定只有从大学到公司的包,表一中列出
了所需的规则集。
表 一
规 则 源 地 址 目 的 地 址 动 作
A 135.79.0.0 123.45.6.0 permit
B 135.79.99.0 123.45.0.0 deny
C 0.0.0.0 0.0.0.0 deny 其中0.0.0.0代表任何地址,规则C是缺省规则,若没有其它的规则可满足,则应用
此规则。如果还有从公司到大学的包,相对称的规则应加入到此表格中,即源地址与目的
地址对调,再定义相应的动作。
现在,我们按照规则ABC的顺序来进行过滤和按照BAC的顺序来进行过滤后采取的动作
的结果如表二所示(注意:两种动作的结果有不同)
表 二
Packet 源 地 址 目 的 地 址 希望的动作 执行ABC后 执行BAC后 1 135.79.99.1 123.45.1.1 deny deny(B) deny(B) * 2 135.79.99.1 123.45.6.1 permit permit(A) deny(B)
3 135.79.1.1 123.45.6.1 permit permit(A) permit(A)
4 135.79.1.1 123.45.1.1 deny deny(C) deny(c)
从表二可以看出,以ABC的顺序来应用规则的Router能达到预想的结果: 从
135.79.99.0子网到公司网的包(如包1)都被拒绝(根据规则B),从135.79.99.0子网到
123.45.6.0子网的包(如包2)将被转发(根据规则A),从大学中的其它子网到123.45.6.0
的子网包(如包3)也将被转发(根据规则A),从大学中的其它子网到公司中的其它字网的
包(如包4)都被拒绝(根据规则C)。若以BAC的顺序来应用规则,则不能达到预计的目的。
实际上,在上面的规则外集中存在着一个小错误,正是由于这个错误,导致了以
ABC的顺序和以BAC的顺序来应用规则而出现了不同的结果。该错误就是:规则B似乎用于
限制135.79.99.0子网访问公司网,但实际上这是多余的。如果将这条规则去掉,那么
顺序ABC和BAC都将归结为AC顺序。以AC的顺序进行过滤后的结果如表三所示。
表 三
Packet 源 地 址 目 的 地 址 希望的动作 AC 动作 1 135.79.99.1 123.45.1.1 deny deny(C) 2 135.79.99.1 123.45.6.1 permit permit(A)
3 135.79.1.1 123.45.6.1 permit permit(A)
4 135.79.1.1 123.45.1.1 deny deny(C)
* 例 二
________ | | Network 199.245.180.0 ______________ |______| _________ | | _________|_______________________________|Packet |______| Internet | ___|____ ___|___ |Filter | |____________| | | | | |router | |______| |_____| |_______|
图 一
如图一所示的网络,由包过滤的Router作为在内部被保护的网络与外部不安全的网
络之间的第一道防线。假设网络的安全策略为:从外部主机来的Internet Mail 在一个指
定的网关上接收,同时你不信任外部网络上一个名叫HPVC的主机,准备拒绝任何由它发
起的网络通信。 本例中,关于使用SMTP的网络安全策略必须转移为包过滤规则。可以将网络安全规
则转换成下述用语言表示的规则:
规则1: 拒绝从主机HPVC发起的连接。 规则2:允许连接到我们的E-Mail网关。
这些规则可以用下面的表四来表示。星号(*)表示可以匹配该列的任何值。 表 四
规则 动作 本地 本地 远地主机 远地 说明 序号 主机 端口号 端口号 1 Block * * HPVC * Block traffic from HPVC
2 Allow Mail-GW 25 * * Allow Connection to Our Mail gateway
对于表四所示的规则1而言,在远地主机栏中填入了HPVC,而其它所有栏的内容
都是星号;在动作栏填入阻塞。这条规则的意义可以理解为:阻塞所有从远地主机HPVC
发起的从它的任意端口到我们本地任意主机的任意端口的连接。
对于表四所示的规则2而言,在本地主机和本地端口号两栏中都有内容,而其它栏
都是星号;在动作栏填入允许。这个规则的意义可以理解为:允许从任意远地主机的任
意端口发起的到本地主机Mail-GW的25号端口连接(端口25是为SMTP保留的)
规则是按照它们在表中的顺序来执行的。如果一个分组不符合任何规则,则它将被
拒绝。 在表四中对规则的描述有一个严重的问题,它允许任意外部主机从端口25发起一个
呼叫。端口25是为SMTP保留的,但是一个外部主机有可能利用这个权利从事其它活动。
这条规则的一个更好的描述方案是允许本地主机发起呼叫,同远地主机的端口25进行通
信。这使得本地主机可以向远地站点发送电子邮件。如果远地主机不是用端口25执行
SMTP,则SMTP的发送进程将不能发送电子邮件。这等价与远地主机不支持电子邮件。
一个TCP连接是一个全双工连接,信息双向流动。在表四所示的包过滤规则中没有
明确指定被发送报文分组中信息的传递方向,即是从本地主机发送远地站点,还是从远
地站点发送到本地主机。
当一个TCP包在某一个方向上传递时,它必须被接收方确认。接收方通过设置TCP ACK
标志来发送应答帧。TCP ACK标志也被用来确认TCP建立连接请求,ACK包将在所有TCP连接
上发送。当一个ACK包被发送后,发送方向就逆转过来,包过滤规则应该考虑为响应控制
或数据包而发回的ACK包。
对于下面的表五中的规则1,在源主机栏中填入199.245.180.0,在目标主机端口号栏
中填入25,其它栏中都填入星号,在动作栏中填入允许.整个规则的意义为:允许所有从网
络199.245.180.0任意端口发起的任意目标主机端口号为25的连接 (其中199.245.180.0
是一个C类网络地址,主机号字段为0表示网络上任意一台主机).
基于以上的讨论,修改后的包过滤规则如表五中所示.
表 五 SMTP的包过滤规则
规则 动作 源主机 源端 目标主机 远地 TCP标识 说明 序号 口号 端口号 /IP选项 1 Allow 199.245.180.0 * * 25 Allow packet from Network 199.245.180.0
2 Allow * 25 199.245.180.0 * TCP ACK Allow return acknowledgement
对于表五中的规则2,在源端口号栏中填入25,在目标主机栏中填入199.245.180.0,
在TCP标志和IP选项栏中填入TCP ACK,其它栏中都填入星号,在动作栏中填入允许.整个
规则的意义为:允许所有从任何外部网络主机上源端口号25发起的到任意本地主机(在网
络199.245.180.0上)任意端口号的TCP ACK标志置位的连接.
表五中的两条过滤规则合并起来的效果是:允许网络199.245.180上的任意主机同任何
外部网络主机的SMTP端口建立连接.
由于包过滤器只工作在OSI模型的第二和第三层(数据层和网络层).它无法绝对保证
返回的TCP确认帧中是否属于同一个连接.在实际应用中,这个策略运行得很好,因为TCP
维护连接两侧的状态信息,它们知道将要发送或接收的序号和确认信息.同时,一些上层
应用服务,例如TELNET ,SMTP 和FTP等,只能接受遵循应用层协议规则的包,想要伪造包含正确
应答信息的包是非常困难的.如想要使安全程度更高,可考虑和应用层网关一起使用(下
节将会讨论).
罗罗嗦嗦说了一大通,可以综述为下面两点:
包过滤路由器的优点:绝大多数Internet 防火墙系统只用一个包过滤路由器.与设计过
滤器和匹配Router不同的是,执行PACKET FILTER 所用的时间很 少或几乎不需要什么时间.因为Internet 访问一般被提供给一个 WAN接口.如果通信负载适中且定义的过滤很少的话,则对Router
性能没有多大影响.最后一点,包过滤路由器对终端用户和应用程
序是透明的,因此不需要专门的用户培训或在每主机上设置特别
的软件.
包过滤路由器的局限性:定义包过滤器可能是一项复杂的工作,因为网管员需要详细地了
解Internet 各种服务、包头格式和他们在希望每个域查找的特
定的值。如果必须支持复杂的过滤要求的,则过滤规则集可能 会变得很长和很复杂,从而很难管理。存在几种自动测试软件,
被配置到Router上后即可校验过滤规则。这可能对未检测到的 易损部件开放了一个地点。
一般来说,一个路由器和信息包吞吐量随过滤器数量的增加而减少。Router 被优
化用来从每个包中提取目的IP地址、查找一个相对简单的路由表,而后将信息包顺向运
行到适当转发接口。如果过滤可执行,Router还必须对每个包执行所有过滤规则。这可
能消耗CPU的资源,并影响一个完全饱和的系统性能。
-- ※ 来源:·广州网易 BBS bbs.nease.net·[FROM: 202.96.185.150]
|
|