您好,欢迎来到飒榕旅游知识分享网。
搜索
您的当前位置:首页流量调节防火墙的设计与实现

流量调节防火墙的设计与实现

来源:飒榕旅游知识分享网
第12卷第11期2000年11月

计算机辅助设计与图形学学报

JOURNALOFCOMPUTERAIDEDDESIGNANDCOMPUTERGRAPHICS

Vol.12,No.11Nov.,2000

流量调节防火墙的设计与实现

刘淑芬 付 宁 韩 璐

(吉林大学分析测试中心 长春 130023)

摘要 论述了防火墙技术可以对进出网络的数据进行控制,有效地对内部网络实施保护;而流量调节技术通过

按优先级发送不同类别的信息量,达到改善网络服务质量的目的.文中将两种技术相结合,构建了某企业CAD网络的防火墙WQ-Firewall的安全系统,以求在获得安全的同时提高网络性能.在Linux系统上实现了加权优先级队列的防火墙,在对IP包进行过滤的同时,根据其IP地址、TCP端口协议类型等信息,为它们分配了不同的优先级别.根据网络带宽和吞吐量对各级别进行处理.

关键词 防火墙,包过滤,流量调节,Linux系统,IP地址,TCP端口中图法分类号 TP393.08

DesignandImplementationofTrafficAdjustingFirewall

LIUShu-Fen FUNing HANLu

(AnalysisTestCenter,JilinUniversity,ChangChun 130023)

Abstract  Technologiesofpacketfilterfirewallandtrafficadjustingarecombinedtoensurese-curityaswellasperformanceCADnetworkinformationsystem.Afirewallthatadoptsweightedpriorityqueue,calledWQ-FIREWALLisimplemented.Asitfiltersthepackets,itassignsprior-itytothemaccordingtoIPaddress,TCPports,protocoltypeetc,andsendspacketsinorderac-cordingtotheirpriorityandweight.

Keywords firewall,trafficadjusting,packetfilter

合作,才能达到较高程度的安全性.网络越大,这种

1 前  言

防火墙是在内部网与外部网之间实施安全防范的系统,可被认为是一种访问控制机制,用于确定哪些内部服务允许外部访问,以及允许哪些外部服务访问内部服务.网络防火墙防止互联网及内部网络的损坏,它就像一道护城河.假如没有防火墙,一个网络就暴露在Internet诸协议和设施面前,面临来自Internet其它主机的探测和攻击的危险.在一个没有防火墙的环境里,网络的安全性只能体现为每一个主机的功能,在某种意义上,所有主机必须通力

较高程度的安全性越难管理.随着安全性问题上的失误和缺陷越来越普遍,对网络的入侵不仅来自高超的攻击手段,也有可能来自配置上的低级错误或不合适的口令选择.因此,防火墙的作用是防止不希望的、未授权的通信进出被保护的网络.

一个网络防火墙通常安装在被保护的内部网与互联网的连接点上.从互联网或从内部网上产生的任何活动都必须经过防火墙,这样防火墙就能确定这种活动是否可以接受.所谓可以接受是指它们(电子邮件,文件传输,远程登录或其它的特定活动)是否符合站点的安全规定.

  修改稿收到日期:2000-09-08.本课题得到符号计算与知识工程国家教委开放实验室的资助.刘淑芬,女,1950年生,教授,主要研究领域为计算机网络与安全技术.付 宁,男,1973年生,硕士,主要研究领域为计算机网络与安全技术.韩 璐,女,1977年生,助教,主要研究领域为计算机网络与安全技术.

11期刘淑芬等:流量调节防火墙的设计与实现

877

加上包头.在与网络连接的另一头的工作是解包.即

2 包过滤技术

包过滤技术是对网络服务进行过滤.目前In-ternet上提供的主要服务有远程登录(TELNET)、文件传输(FTP)、浏览查询(WWW)、电子邮件(E-MAIL)等.不同服务数据包有着不同的特征,我们可以根据这些特征来进行过滤,允许或禁止某种服务的连接.本节以TELNET服务为例,介绍如何对网络服务进行过滤.

TELNET是在两个主机之间进行远程实时通信的一种服务.对于从本地连接到远程的TELNET,往外的TELNET包中含有本地用户的击键信息,且具有如下特征:该包的目的地址是远程主机的IP地址,源地址是本地主机的IP地址,协议类型为TCP,TCP的目的端口号是23,源端口号是大于1023的随机数Y,以及为建立连接的第一个向外的ACK位为0,其余包的ACK位为1;而在返回的数据包中:源地址为远程主机地址,目的地址为本地主机地址,源端口为23,目的端口为Y,且所有包的ACK位为1.至于从远程连接到本地主机的TELNET,情形类似.根据这些特征,我们可以制定过滤规则对TELNET服务进行控制.

包过滤系统的主要特色是可以让我们在一台机器上提供对整个网络的保护.也以TELNET为例,假定为了不让使用TELNET,将网络中所有机器上的TELNET服务器关闭,即使这样做了,也不能保证在网络中新增机器时,新机器的TELNET服务器也被关闭或其他用户不重新安装TELNET服务器.如果有了包过滤系统,只要在包过滤中对此进行设置,也就无所谓机器中的TELNET服务器是否存在问题了.

包过滤方式有许多优点,主要优点之一是仅用一个设置在战略要津上的包过滤路由器就可保护整个网络;而且,包过滤不需要用户软件支持,也不要求对客户机作特别的设置,包过滤器的工作对用户来说是透明的.2.1 包过滤原理

包的构造有点像洋葱一样,是由各层连接协议组成的.在每一层,包都由包头与包体两部分组成.在包头中存放与这一层相关的协议信息,包体中存放包在这一层的数据信息.这些数据信息也包含了上层的全部信息,在每一层上对包的处理是将从上层获取的全部信息作为包体,然后依本层的协议再在另一头,为了获取数据就由下而上依次把包头剥离.在包过滤系统看来,包的最重要的信息是各层次依次加上的包头.

3 流量调节

流量调节技术通过对数据包进行合理的排队,对特定的数据包赋以较高的优先级,从而加速传输的进程,实现实时交互.由于每种应用系统对网络的要求不同,使得带宽本身并不能解决网络拥塞的问题.流量调节可以把网络按照业务量的类型或级别加以区分,并能够依次对各级别进行处理.例如,若网站主要是向外部提供信息服务,那么外部用户的数据就要优先于内部网用户而先发送.

流量调节技术对IP包进行分类,为它们分配不同的优先级,根据网络容量和吞吐量对各级别进行处理.排队技术用来处理被指定的优先级别.一旦数据包被分配了某一级别,系统则根据数据包的优先级来进行处理.

3.1 网络传输的优先级

通过网络传输的数据、文件有很多,但它们的重要性是不同的,对网络服务质量(QoS,QualityofService)的要求也不同.除了前面提到的不同服务对实时性的要求不同外,即便是相同类型的服务,也可能因实际情况的不同而对服务质量有不同的要求.例如,对于一家网络书店来说,外部客户通过其WWW网站进行网上购书,内部员工可以通过WWW访问Internet.如果因为内部员工的大量访问而延迟了对客户的响应,那显然是不利于其营销的.为了使客户满意,在发生网络拥挤时,就应当优先满足外部客户的请求.而对于内部员工的访问来说,业务经理通过Internet从其分公司获取销售数据的网络传输,要比普通员工在网上阅读新闻或是下载文件进行的传输重要的多,也应当优先传送.通过以上分析我们看出,由于实际应用情况的不同,可以将通过网络进行的传输赋予不同的优先级别.如果对所有的传输都平等对待,很容易造成相对不太重要的数据占据了大量带宽,使重要的数据传输受到延误;如果按优先级别进行发送,即使存在着网络延迟,也可以保证那些重要的传输不受影响.

3.2 基于策略的流量调节

基于策略的流量调节(policy-basedtrafficad-878

计算机辅助设计与图形学学报2000年

justing)是指通过运用优先策略,使高优先级的网络流量获得较多的带宽及优先发送次序,从而提高网络的服务质量,保证重要的数据传输不被延误.优先策略是根据实际情况预先指定的.例如,对于要求具有较高实时性的IP电话、视频会议等传输,其优先级就要高于一般的E-MAIL,WWW等.可以将网络流量按协议类型、源地址、目的地址、源端口、目的端口等信息分为不同类别,每一类别分配一个优先级别.协议类型、地址、端口等信息都可在IP数据报的报头或TCP报头中找到.

前面说过,排队延迟是网络中的主要延迟.现有的路由器多数采用先进先出队列(FirstInFirstOutQueue),这是最普遍采用的一种排队方式,数据包的发送次序与其到达路由器的先后顺序是一致的.这种方案比较简单,实现起来容易,但其不足也是显而易见的.因为数据包的发送次序完全依赖于其到达次序,这样,突发的大数据量通信会给实时通信造成非常大的延迟.

流量调节技术则是通过采用改进的排队技术,将不同优先级的流量放入不同队列,从而避免了低优先级流量对高优先级流量的干扰.可以采用两种不同的排队方式:简单优先级队列和加权优先级队列.

3.2.1 简单优先级队列

为了能够按优先级发送数据,简单优先级排队技术把流量按协议、端口、源地址、目的地址等进行分类,并设置优先级.在发送低优先级流量之前,必须先清空(发送完)高优先级队列.换句话说,要根据数据的重要性先发送重要的流量,发送重要流量不受带宽限制.这种方案对突发通信量很管用,但如果策略设置不当,优先级高的流量可能会“吞食掉”大量带宽,从而导致低优先级的流量“饿死”.

3.2.2 加权优先级队列

加权优先级队列也是按优先级将流量放入不同的队列,但除优先级外,加权优先级排队算法还要求每一连接有一权值.发送时,不仅把流量分配到指定的优先级队列里去,而且还要按其权值大小给它指定一定的带宽.

采用加权优先级队列进行转发时,发送程序要循环检查各个优先级队列,若队列中有等待发送的数据包,则将其取出进行转发.发送的数据量由可用带宽及连接的权值决定,权值越大,分到的带宽越多.设共有N个连接,B为可用带宽,B(t)为待发送的连接集合,连接i的权值为bi=B[如果发送一个连接没有用完所分配的全部带宽,则将剩余带宽分配给其它连接.例如有两个连接,第一个连接的权值为20,第二个连接的权值为3;那么,系统将分配[20/(20+30)]=2/5的带宽给第一个连接,分配[30/(20+30)]=3/5的带宽给第二个连接.

加权优先级队列可以根据网络的吞吐量在不同的连接之间平衡带宽,因而比简单优先级队列更为公平.本文实现的系统中即采用这种队列.

4 WQ-Firewall的实现

WQ-Firewall是一个运行于Linux操作系统上的包过滤系统.Linux是一个在386/486/PentiumPC机上运行的Unix系统.Linux系统具有最新U-nix的全部功能,由于其系统软件可以免费获取,具有硬件费用低廉的特点,在实际应用中,Linux表现出非常好的稳定性和安全性.作为包过滤的操作系统,Linux不失为一个费用低、且安全性极佳的选择.

4.1 WQ-Firewall的结构

WQ-Firewall是在Linux内核防火墙的基础上,增加了流量调节模块实现的.即在对IP包进行过滤之后,将IP包的协议类型、源地址和目的地址、端口等与预先定义的流量调节策略进行匹配.若存在与之匹配的规则,则按该规则定义的优先级将数据包存入相应的队列;若不存在与之匹配的规则,则存入系统默认的队列.发送程序按优先级从高到低循环检查各队列,若队列不空,则从队列中取数据包进行发送.

4.2 主要的数据结构

4.2.1 sk_buff结构

该结构体中存放待传送IP包的有关数据,主要包括:

structsk_buff{

structsk_buff *next;structsk_buff*prev;

/*用来形成队列的指针*/

structsk_buff_head*list;

/*到达时间*/structtimeval stamp;

structdevice*dev;/*到达或离去的网络接口设备*//*指向IP报头的指针*/structiphdr*ip_hdr;

unsignedlonglen;/*数据包实际长度*/11期

刘淑芬等:流量调节防火墙的设计与实现

879

u32saddr;     /*源地址*/

/*目的地址*/—u32daddr;

——

u32seq;u32ack_seq;

/*TCP序列数*//*TCP的ACK序列数*//*ACK置位标志*//*包类型*/

structip_traffic*fw_next;/*指向后继的指针*/structin_addrfw_src,fw_dst;

/*源地址、目的地址*/structin_addrfw_smsk,fw_dmsk;

/*源和目的地址的掩码*/

unsignedshortfw_pts[IP_FW_MAX_PORTS];intweight;intpri;…};

/*要进行匹配的端口号*//*权值*//*优先级*/

volatilecharacked;pkt_type,

structsk_buff*data_skb;/*数据区*/…};

structsk_buff_head{

structsk_buff*next;structsk_buff*prev;

/*向后的指针*//*向前的指针*//*队列长度*/

u32qlen;

4.2.5 WQUEUE结构和WQUEUE_HEAD结构

WQUEUE是发送队列,WQUEUE_HEAD是指向队列头部的指针.

structWQUEUE_HEAD{

structWQUEUE*q;intqlen; …};

structWQUEUE{

structWQUEUE*next;intweight;

structsk_buff_head*q;…};

/*指向后继的指针*//*权值*/

/*指向存放IP数据包的缓冲区的指针*/

};

4.2.2 iphdr结构

该结构中存放IP报头的数据.

structiphdr{

—u8tos;       /*服务类型*/

——

/*指向队列的指针*//*队列长度*/

u16tot_len;/*总长度*//*标识*/

/*分段偏移*//*生存时间*//*协议类型*//*源地址*//*目的地址*/

u16id;

—u16frag_off;—u8ttl;

——

u8protocol;

u32saddr;—u32daddr;…};

4.2.3 Ip_fw结构

该结构用来存放防火墙的过滤规则.

structip_fw{

structip_fw*fw_next;/*指向后继的指针*/structin_addrfw_src,fw_dst;

/*源地址、目的地址*/structin_addrfw_smsk,fw_dmsk;

/*源和目的地址的掩码*/unsignedshortfw_pts[IP_FW_MAX_PORTS];

/*要进行匹配的端口号*/…};

下列4个指针分别指向4个不同优先级的队列,从WQ0到WQ3优先级依次增加.

structWQUEUE_HEAD*WQ0;structWQUEUE_HEAD*WQ1;structWQUEUE_HEAD*WQ2;structWQUEUE_HEAD*WQ3;

4.3 实现细节

为完成过滤和流量调节,主要用到下列子程序:

intipfw_input_check()intipfw_output_check()

/*对进入的包进行过滤*//*对离去的包进行过滤*/

intipfw_forward_check()/*对转发的包进行过滤*/

/*将数据包送入加权优先队列*/intwq_put()intwq_get()

intwq_init()intwq_bdw()intwq_rule()

/*从加权优先队列中取数据包*/

/*初始化优先级队列*//*计算可用带宽*//*从配置文件读流量调节策略*/

下列3个链表分别存储转发防火墙、输入防火墙、输出防火墙的过滤规则.

structip_fw*ip_fw_fwd_chain;

structip_fw*ip_fw_in_chain;structip_fw*ip_fw_out_chain;

4.2.4 Ip_traffic结构

该结构用来存放流量调节策略.

structip_traffic{4.4 设置规则

过滤规则需用Linux系统的ipfwadm命令进行设置,每条规则对应一条命令,如下命令将允许从任意外部主机到网络地址为192.168.1的任意主机的TELNET连接.

ipfwadm-F-aaccept-b-Ptcp-S0.0.0.0/0880

计算机辅助设计与图形学学报2000年

23-D192.168.1.0/241024:65535

为安全起见,第一条规则应设置为将所有连接都禁止:

ipfwadm-F-pdeny,然后再逐条增加“允许”规则.这样,对于所有未被允许的连接,系统都将“拒绝”.

应用中,可将所有规则的设置命令写入/etc/rc.d/rc.ipfw中,并配置系统使其开机后自动运行该文件.

流量调节策略需写入文本文件/etc/traffic中,每条规则需包括如下内容:

方向、源地址、目的地址、协议、源端口、目的端口、优先级、权值.其中方向的有效值为I(进)、O(出)和B(双向);优先级的有效值为0—3;权值为整数.

4.5 设置流量策略

比起过滤规则的设置,流量策略的设置相对要简单一些.主要的设置是为WWW服务分配较高的优先级,同时为不使外部访问者在网络拥挤时等待太久,应给向外的WWW流量分配较大的权.另外,流量调节可以只在一个路由器上进行,因而我们只在外部路由器上作一些配置(因为向外部提供的WWW信息经过外部路由器).

1ChrisHare.InternetSecurityProfessionalReference.NewRid-ers.ISBN1-56205-557-7.1996

2AndrewSTanenbaum.ComputerNetworks(ThirdEdition).Prentice-HallInternational,Inc.Beijing:TsinghuaUniversityPress,1997

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sarr.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务