防火墙为什么要对多连接协议进行特殊处理

本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。
msn: yfydz_no1@hotmail.com
来源:http://yfydz.cublog.cn

1. 多连接协议

所谓多连接协议是指在协议完成过程中,除了一个主的通信通道(主连接)外,还会动态打开一些通道(子连接)进行通信,防火墙对这些协议需要特别处理才能保证安全。
多连接协议也可分为强制子连接和非强制子连接,强制子连接是指子连接的建立是必须的,不建立子连接通信将无法正常进行,如FTP;非强制子连接是指子连接的建立不是必须的,主连接先尝试用动态端口打开子连接,如果子连接打不开,则数据依旧在主连接中传输,这样不影响总体协议通信的完成,如 MMS、MSN传递文件等。对防火墙来说,处理的重点前者,因为后者在防火墙上可以不用作特殊处理。本文若不特殊说明,都是指前者。

2. 多连接协议的特殊处理

多连接协议的特殊之处就在于其之连接的端口通常是动态的,具体值是在协议内容中协商确定,而一般防火墙的策略中只允许有限的端口通过,端口全部开放是很危险的,所以早期的包过滤防火墙,对于FTP协议的支持只能支持主动模式,也就是服务器端数据端口固定为20时的情况,被动模式不支持或只能通过打开全部端口来支持。

在状态检测防火墙中,防火墙不仅对IP/TCP头信息进行处理,对多连接协议这种特殊协议进一步进行了内容级跟踪处理,能够自动查找协议通信数据中关于端口协商的部分,提取出具体的端口值,然后动态打开防火墙上的端口,使子连接数据能顺利通过防火墙,当子连接结束时,防火墙相应端口又自动关闭,保证了网络的安全性。

3. NAT模式下的处理

在NAT模式下,防火墙需要作的工作要更多一些,不仅要找到关于子连接端口的描述字段,还需要根据情况修改数据内容,但有些情况又不需要,如 FTP协议,内部网络通过源地址转换访问外部FTP服务器,但使用主动模式传数据时,子连接是从服务器连向客户端,这时需要对数据内容进行修改;而使用被动模式时,子连接是从客户端连向服务器,此时防火墙只需要跟踪而不需要修改数据。

进行数据修改时,防火墙先要找到自身一个空闲的端口代替数据描述中的端口值,然后如果数据中包括IP地址地址信息的话,将IP地址信息换自己的地址,修改后的数据长度可能和原来的数据长度不同。

对于UDP协议,数据内容修改后,如果数据长度变化,需要修改UDP头部中的数据长度,UDP端口,IP包总长,然后重新计算UDP校验和,IP头校验和,基本和后续包无关。

对于TCP协议,情况就麻烦得多,如果数据长度变化,需要修改TCP端口,IP包总长,然后重新计算TCP校验和,IP头校验和,最麻烦的是对该TCP连接的所有后续包都要修改TCP包头中的序号号或确认号,所有校验和也需要重新计算,如果后续包继续有数据长度变化,这种变化也要累加。只有数据长度不改变的情况下才和后续包无关,只要修改当前包的数据就行。

4. Linux内核中的实现

在linux内核的netfilter架构中,实现了对特殊协议的跟踪和NAT功能,并可以任意扩展,代码在net/ipv4 /netfilter目录下,ip_conntrack_core.c, ip_conntrack_helper.c, ip_conntrack_standalone.c为基本的连接跟踪程序,ip_nat_core.c, ip_nat_helper.c, ip_nat_standalone.c中为NAT的基本处理程序,对于特定协议,由ip_conntrack_*.c和ip_nat_*.c构成,“*”可以为ftp, tftp, irc等,程序构架都是类似的,可以扩展新的协议。

5. 安全性

这种打开动态端口的处理在安全性方面已经提高了很多,但如果不注意还是会有些问题,如在连接信息中如果有IP地址信息,一定要验证此IP地址就是数据包发送方的地址,否则可能会打开的是到其他机器的端口,相当的危险,netfilter早期的FTP代码中就有这个问题。在phrack63的 0x13号文件中,描述了如果防火墙同时跟踪FTP和IRC服务时穿透防火墙的一种方法,因此跟踪程序一定要区分关于数据端口的描述是否是在主连接中还是在子连接中,只在主连接中进行解析,如果是子连接,这种数据模式是不解析的。

6. 总结

多连接协议的支持对状态检测防火墙来说需要特别处理,对于公开的协议,可以根据其协议规范来定制专门的支持模块,而如果协议是保密,对防火墙来说就无法处理了。现在很多新的协议也考虑到了这个问题,在子连接不能打开的情况下还用主连接来传输数据,从而避免了该协议不能被防火墙支持。
### 回答1: 配置OSPF: 1. 在网络中的所有路由器上启用OSPF协议 2. 配置每个路由器上的OSPF区域 3. 配置每个路由器上的网络接口,并将其分配到相应的OSPF区域 4. 配置每个路由器上的OSPF邻居关系 5. 配置每个路由器上的路由策略,以便将流量路由到正确的目的地 配置防火墙的NAT: 1. 确定需要翻译的内部IP地址和端口号 2. 为内部IP地址和端口号分配外部IP地址和端口号 3. 配置NAT规则,以便将内部IP地址和端口号映射到外部IP地址和端口号 4. 配置防火墙规则,以允许从内部网络流出的流量,并且不允许从外部网络流入的流量 5. 测试NAT和防火墙规则,确保它们按预期工作 配置其他协议: 具体的配置过程会根据协议的不同而有所不同。通常,您需要了解该协议的基本原理和工作方式,以及如何在您的网络环境中配置它。您可以查找协议的文档或参考资料,或者在网络论坛上寻求帮助。同时请注意,配置其他协议可能需要特殊的硬件或软件支持,因此请确保您的设备和系统符合要求。 ### 回答2: 配置OSPF的步骤如下: 1. 确保所有路由器使用相同的OSPF协议版本。可以通过运行“show version”命令来查看当前操作系统的版本。 2. 在每个路由器上启用OSPF进程。可以通过运行“router ospf <进程号>”命令来启动OSPF进程,并设置进程号。 3. 配置每个路由器上的区域。可以使用“network <网络地址> <逆掩码> area <区域号>”命令来配置路由器所属的区域。路由器的接口地址必须与所配置的网络地址相匹配。 4. 配置LSA生成。可以使用“auto-cost reference-bandwidth <带宽值>”命令来设置LSA生成的参考带宽。 5. 配置OSPF认证。可以使用“area <区域号> authentication”命令来为特定的区域配置OSPF认证。 6. 确保连通性。运行“show ip ospf neighbor”命令来检查邻居路由器的状态,并确保正常互通。 配置防火墙的NAT的步骤如下: 1. 确定需要进行NAT的内部和外部接口。内部接口通常是局域网,外部接口通常是连接互联网的接口。 2. 在防火墙上创建地址对象。可以创建内部网络对象,指定局域网的地址范围;也可以创建外部网络对象,指定互联网的地址范围。 3. 创建NAT策略。指定内部网络对象作为源地址,外部网络对象作为目标地址,并选择适当的转换类型,如静态NAT、动态NAT或PAT(端口地址转换)。 4. 配置入接口和出接口。将NAT策略与适当的入接口和出接口相关联,以便防火墙能够在数据包进入或离开防火墙时执行NAT转换。 5. 验证和测试配置。使用一个内部主机尝试访问互联网,并确保NAT转换正常工作。 其他协议的配置步骤视具体协议而定,一般可以参考协议相关的文档或手册来进行配置。在配置过程中,需要确保正确设置必要的参数、配置正确的接口和地址、测试连通性和功能,并进行必要的调试和故障排除。 ### 回答3: 在配置OSPF或防火墙的NAT或其他协议之前,首先需要了解网络拓扑结构和需求。下面是一些基本步骤: 1. 配置OSPF: a. 选择一个主路由器,并在其上启用OSPF协议。可以使用命令行或图形用户界面配置。 b. 在所有其他连接到OSPF网络的路由器上配置OSPF,并将它们连接到主路由器。 c. 分配唯一的路由器ID,以便在OSPF网络中进行识别。 d. 配置各个接口的IP地址,并将它们添加到OSPF协议中。 e. 配置阻止短时间内的路由更新和损坏的机制(如收敛时间、路由摂取等)。 2. 配置防火墙的NAT: a. 为了在防火墙上启用NAT,首先要配置内外部接口。内部接口连接到内部网络,外部接口连接到互联网。 b. 配置NAT规则,以指定内部IP地址和外部IP地址之间的映射关系。这样可以将内部IP地址转换为外部IP地址,以便实现访问互联网。 c. 可以使用端口地址转换(PAT)或网络地址转换(NAT)等不同的NAT模式,根据具体需求选择合适的模式。 d. 配置出站和入站过滤规则,以允许特定的数据包通过防火墙。这可以通过设置访问控制列表(ACL)或其他策略进行配置。 3. 其他协议的配置: a. 具体的配置步骤取决于所选择的协议。例如,如果配置动态主机配置协议(DHCP),则需要指定DHCP服务器的IP地址范围和其他参数。 b. 对于其他协议,可能需要配置特定的规则和参数,以适应网络需求。在配置之前,请查阅相关协议的文档以获取详细信息。 总之,配置OSPF或防火墙的NAT或其他协议需要根据网络需求和特定设备的配置界面进行操作。建议在执行配置之前,仔细阅读文档或咨询相关专业人士,以确保正确地完成配置过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值