Internet防火墙及用户网络流量统计的应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Internet防火墙及用户网络流量统计的应用
○江雄黄志蓓洪佩琳李津生
进程。
《计算机信息网络国际联网管理暂行规定》的修订工作即将结束。
《电信法》正在起草,《广播电视管理条例》、《电子工业振兴条例》的修改正在加紧进行,网络安全、网络商业经营、网络管理等问题也正在加紧研究,国家强调今后凡重大网络系统设计与建设将以我为主,其融资政策、筹资方式也必然要作出相应调整,鼓励社会集资,引进外资,银行贷款,成立股份公司,适当时间建立信息信托等方式,与国家、地方财政拨款相配合,多条腿走路。
深圳会议首次把信息化上升到国家意志高度,所有这些政策和规划的出台,为我国信息产业的发展起到了巨大的支撑与推进作用。
可以预见,今后几年各行业各地区将会大大加快信息化进程,一股新的信息化建设热潮即将在中国大地展开。
Internet在国内的应用日趋普及,出于安全方面的考虑,防火墙的重要性也越来越受到重视,因此使用什么方式、什么硬件和软件来建立防火墙才能达到预期的目的,一直是网络开发者面临的重要课题。
本文根据在校园网建设中的实践经验,介绍一种用L inux操作系统构造的成本低廉、高效实用的防火墙系统。
1.什么样的防火墙才符合使用者的需要
保护防火墙内部子网的安全,是防火墙的基本功能。
在校园网的特定网络环境情况下,一个实用的防火墙需具备以下的一些功能。
(1)为内部子网提供更多的IP地址空间。
这是在校园网这样一个特殊环境中的特别需要。
我们的校园网目前总共只有32个C类IP地址,亦即32×256=8192个,按照网络的总体规划,将每个C类子网划分为4个小的子网分配给各个使用单位,每个局域网有64个I P地址,除了路由器的IP 地址和子网广播地址,实际的可用地址数为62个。
这样的小子网总共有32×4=128个,扣除路由器占用的子网,实际最多有125个子网可供分配。
在网络建设初期,这样的规模暂时还可以满足使用的需要。
但因这样的分配办法不可避免地会导致部分子网I P地址利用率不高,而另一方面随着网络用户的的不断增加,对I P地址的需求也将不断增长,为了有效地利用I P地址资源,不得不改变网络线路结构,增加额外的投资。
因此,怎样为内部子网提供足够的I P地址空间,对拥有局域网的网络用户将成为一个很现实的问题。
(2)对防火墙内部局域网上的I nternet用户,应该提供可靠的流量统计和访问控制。
这是在I nter net网络等环境中必须具有的重要功能。
由于CER net用户对I nter net的访问不是免费的,在对局域网的管理中,如何按用户对Internet数据流量进行统计并对其访问实施有效的控制,是一个迫切需要解决的问题。
根据以上的这些要求,我们使用L inux操作系统及相应的网络系统管理软件,建立了一个实用的防火墙系统,以满足我们的使用需要。
由于此系统完全使用软件建立和管理,因此具有成本低,灵活性好的优点。
同时,由于防火墙控制模块处于操作系统的核心部分,能够高效率地实现相应的控制功能。
2.Linux操作系统简介
L inux是在使用I nte l80386及以上C PU的PC机平台上发展起来的一种U nix类型的操作系统,具有和传统的U nix 系统相同的体系结构和用户安全性。
和传统的U nix系统不同的是,它并非是某个大公司或者研究机构的产品,而是在国际互联网上,经过无数Un ix专家自愿联合开发出来的,因此具有极好的开放性和可扩充性。
其系统核心以源码的形式发布,使用户能根据自己的需要在系统内核中增加适当的附加功能。
随着国际互联网的发展,L in ux的性能也得到越来越大的增强,使之能适应多方面的需要。
3.Linux内核的网络功能简介
T C P/IP网络功能一直是U nix系统的固有功能,事实
4
5
上,T C P/IP 协议本身就是在U nix 系统的不断发展与完善过程中产生的。
和现有的U nix 系统一样,L inux 也在其系统核心中直接支持T CP /I P 协议族,其中包括最底层———网络硬件接口层的I P 地址和网卡物理地址相互转换的地址解析/反向解析(AR P /R AR P )协议、网络层的网间互联协议(IP )、传输层的传输控制协议(面向连接的T C P 和非连接型的U D P)以及远程终端访问协议TEL NET 、电子邮件传送协议S M T P 、文件传送协议FT P 、域名服务D N S 等。
其中最基本的是I P 协议,它包含了路由器的内/外部寻径协议RI P/EG P 、控制报文协议IC M P 、组管理协议I G M P 等。
防火墙的控制模块,就位于系统核心中的IP 路由控制部分。
这里有必要介绍一下TC P /U D P 通信中的端口。
在参与T CP /I P 网络通信的主机进程中,为了使用U D P 或者T C P 协议进行通信,该进程必须首先分配一个标识通信通道的套接字(soc ket),记录该通道的连接类型(T C P 或U D P)、本地和目的方的IP 地址以及本地和目的方的端口号。
每个T C P/U D P 通道实际上是建立在双方的T C P/U DP 端口之间的。
端口号用16位的二进制整数表示,也就是说,在一对通信的源和目的方之间,在通道类型和I P 地址都相同的情况下,可以建立65536个T C P 连接或者U DP 通道。
下面将要讲述的防火墙工作原理和端口号的使用有着密切的关系。
4.Linux 内核的防火墙结构
L inux 在其内核的网络部分,已经嵌入了完整的T C P/IP 网络功能。
经过必要的扩充之后,在其普通路由器功能的基础上,可增加基于数据包过滤的防火墙功能和统计功能,成为功能强大的防火墙。
L inux 内核中的防火墙将普通的路由功能划分为三个部分:控制数据包接收的输入防火墙in —f ir ew a ll 、控制数据包发送的输出防火墙o ut —f ire w all 、以及控制数据包转发的转发防火墙f orw ar d —f ir ew all 。
对应于防火墙的每一部分,都可以根据数据包的类型(T C P/UD P )、源和目的端的IP 地址以及源和目的端的通信端口来设定一系列相应的控制规则。
因此,L inux 防火墙的控制规则分别包含输入防火墙、输出防火墙、转发防火墙的控制规则以及加权的数据流量统计规则。
输入防火墙负责检查从任何一个网络接口设备(对以太网而言,就是网卡)传来的数据包,它将根据预先设定的一系列规则,对数据包的类型、源和目的I P 地址和端口进行匹配,按照第一条匹配到的规则,决定对该数据包采取何种策略进行处理,同时累加相关规则的匹配包个数和字节长度计数。
如果无法匹配任何规则,则按照缺省的策略进行处理。
输出防火墙的工作原理和输入防火墙类似,只是输入防火墙控制的是收到的I P 数据包,而输出防火墙的控制对象是从网络接口设备发出的I 数据包。
它的控制规则决定了某I 数据包是否被允许发送。
转发防火墙则规定了I P 数据包转发的规则,当防火墙路由器收到发往其他子网的I P 数据包时,只有满足条件的IP 数据包才会被转发到目的子网上,不满足条件的数据包则不会被转发,而是按照防火墙的策略进行指定的处理。
同时,还可以对被转发的I P 数据包进行I P 地址和端口号的转换和重新映射,完成I P 伪装(m a s q uer ade ,也称为IP 代理)的功能。
数据流量的统计规则是针对不同源与目的I P 地址和端口的IP 数据包,对数据包数量和字节长度进行累计。
它是在整体上作的流量统计,更详细的流量统计功能在后面的用户流量统计部分说明。
在以上的输入、输出和转发防火墙的控制中,对满足源—目的地址和端口匹配条件的I P 数据包,可以指定的处理策略有四种:
接受(acc ept):按照正常方式发送该IP 数据包。
对于输入防火墙,就是接收该数据包,交给转发防火墙或者上层的T CP 协议层进行处理;对于转发防火墙,就是将IP 包交由输出防火墙处理;对于输出防火墙,就是从正确的网络设备发送该IP 包。
伪装(m asquera de):此策略仅适用于转发防火墙,即:将IP 包的源、目的地址和端口作适当的改变后,再交给输出防火墙进行发送。
通常,向子网外部转发I P 包时,将IP 包头中的源地址和端口改变为防火墙的地址和分配的端口;向子网内转发IP 包时,则将目的地址和端口恢复为相应连接的内部子网主机的地址及其上的端口。
由于防火墙工作在L inux 系统的核心部分,它掌握着所有T C P 连接的源—目的地址和端口信息,这样的地址转换完全是可行的,并且能得到高效率的实现。
拒绝(r e j ect):不发送该I P 数据包,并向该包的发送者发送通知信息,告知其无法到达目的网络。
否认(den y ):完全忽略该I P 数据包,也不发送通知信
图
防火墙内数据包流程图
P P 1
息。
这种方式向未提供访问的使用者提供的附加信息最少,就像网络上根本不存在这样的主机似的,不给恶意的试探者以任何机会。
总而言之,在这样的防火墙环境中,任何一个通过该防火墙的IP数据包都要经过如图1所示的几道防火墙的检查和过滤(①不满足输入规则而被丢弃的I P包。
②不满足转发规则而被丢弃的IP包。
③不满足输出规则而被丢弃的IP 包。
④被转发到目的子网的I P包,可作I P伪装。
⑤输出到目的子网的IP包。
⑥发给防火墙机器自身的IP包,不转发到其他子网)。
图1中,输入与输出的数据包流动方向是相对于每一个网络设备而言的,即:无论是内部子网的网卡,还是外部网络的网卡,都有输入和输出的IP包,不过实际的传送方向不一样而已。
例如,从内部子网到外部子网的IP包要先通过内部子网的输入防火墙,然后是外部的输出防火墙;反之,从外部子网到内部子网的I P包则先通过外部的输入防火墙,再通过内部子网的输出防火墙。
5.Linux防火墙的用户流量统计
前面已经提到L inux防火墙的一部分流量统计功能,即:面向网络的流量统计。
它可以完成所有局域网和防火墙用户访问不同网络的流量统计,在整个局域网作为一个整体进行计费时,可以为局域网的管理者提供流量统计的参考值。
在Internet访问需要计费的情况下,可以帮助管理员决定何时开放或者关闭Inter net访问。
但是,如果希望在局域网内部向不同用户提供不同的访问能力,容许不同的用户拥有不同的网络访问流量限制,仅靠上面的防火墙流量统计功能是不够的。
L inux的开发者考虑到这种情况,又在系统核心中扩展了面向用户的流量统计和限制功能。
面向用户的流量统计和限制功能主要由两部分构成:系统核心中的用户流量统计功能和设定用户流量限额,并根据限额来决定用户是否能够访问计费网络的流量限额管理功能。
如果说防火墙的流量统计是在网络层和传输层进行的,那么面向用户的统计则是在会话层、应用层等比较高的层次实现的。
用户流量统计的功能的作用对象不是整个局域网,而是L inux防火墙系统中的每个用户。
每一个L inux/U nix系统中的进程,都有一个用户标识,记录该进程是由哪个用户启动并运行的。
同一个应用程序,可以被不同的用户启动,带着不同的用户标识在系统中运行。
因此,系统核心可以监视每一个被应用程序用来通信的IP通道,对其发送和接
收的数据流量进行统计,并根据该进程的用户标识累
加在相应用户的统计数据中。
这样,就完成了面向用
户的流量统计。
这种流量统计同时还是以加权的方式进行的。
对
不同的网络,可以设定不同的加权值,来自不同网络
的数据包,其字节长度将被乘上指定的加权值,然后才累加到统计结果中,因此它可以对负载程度不同的网络进行不同的加权统计,其结果符合网络计费的一般要求和准则。
如果某网络地址的加权值被设为0,则表示该网络是免费访问的,不参与流量统计。
面向用户的流量统计需要和用户流量限额管理功能结合起来实施。
出于效率上的考虑,上面用户流量统计的结果只存在于系统核心的数据区中,并不被实时地写入系统文件。
用户流量限制的功能就是以后台方式定时地(如,每60秒一次)从系统核心中读取用户流量数据,从该用户的流量限额中扣除已经使用的数额,并刷新流量统计数据。
如果某用户的流量限额被扣除到零,则通知系统核心不再替该用户建立到计费网络的IP通道,亦即,该用户的计费网络访问被关闭。
每个用户的流量限额以数据文件的形式存在,可以定期更新,或者每次和用户结算通信费用后,再作更新。
用户流量统计和限制软件包同时还提供相应的使用程序,用于设置/增减/清除用户流量限额,打开/关闭用户对计费网络的访问等。
6.Linux防火墙实现的功能
根据前面对L inux内核及其防火墙结构的介绍,我们可以使用L inux防火墙来实现以下多方面的网络功能:
①在局域网内部提供DN S、W W W、FT P、E-m ail、N ew s 等服务,支持I ntr anet;
②用一个I P地址,为整个局域网上的主机提供透明的Internet服务;
③在局域网上建立安全的透明服务器,向I nternet提供W WW服务;
④统计局域网的I nter net数据流量;
⑤根据流量统计结果,控制局域网用户的Internet访问。
以笔者实现的防火墙为例,在如图2结构的网络中,实现了上述各项功能。
图2中,L inux防火墙和网络服务器运行L inux操作系统,前者的系统核心带有增强的防火墙功能,后者仅使用普通的L inux核心及相关的L inux网络服务软件就可以了。
其他网络工作站则可自由选择操作系统和网络软件。
下面依次说明图2所示网络实现的功能。
(1)为内部局域网提供了安全的Intr anet环境。
局域网内部的D NS、W WW、F TP、E-m a il等服务,分别图一种网络结构
2
6
表1内部子网专用地址空间
*:i p fw adm 命令中网络IP 地址的记法是:网络地址/子网屏蔽位数。
如:172.16.0.0/12表示网络地址为172.16.0.0,子网屏蔽为255.240.0.0(FF.F0.00.00)。
由L inux 系统软件包中的后台服务进程nam e d 、htt p d 、w u -f t -pd 、sendm a il 、nntpd 来提供。
这些在局域网上提供的网络服务,对局域网外的用户是不可见的。
包括局域网上使用的IP 地址,也是外部用户不可知的,这样,就在内部局域网上提供了完善的Intr anet 服务。
(2)为局域网用户提供了透明的I nter net 访问,而且只需要为防火墙配备一个I P 地址,因此也节省了网络资源。
这是由防火墙的I P 伪装功能来实现的。
局域网上使用的I P 地址是I nter net I P 地址分配管理组织专为此类带防火墙和I P 伪装的封闭子网保留的,不需要Intern et 网络中心的统一分配,也不会被泄漏到外部I nte r net 。
尽管如此,通过使用i p f w adm 设立适当的防火墙转发和IP 伪装规则,在防火墙的控制下,局域网用户仍然可以透明地访问I nter net 。
具体来说,笔者使用的是如下的规则:
i pf wadm -F -i m as que r a de -P al l -S I NN E T -D 0/0
其中,IN NET 是内部局域网使用的网络地址,可以使用如表1所示地址空间中的任何一部分。
该规则的含义就是:从内部子网到任何一个I nter net 网络,防火墙都将进行I P 伪装。
也就是说,局域网的所有主机都可以访问Internet ,对被访问的I nternet 主机而言,相当于正在被局域网的防火墙主机访问。
(3)防火墙还可以为局域网指定一个“透明代理服务器”,在对外部提供W WW 、FT P 等公共服务的同时,屏蔽其他可能被恶意入侵者利用的信息,保障局域网数据的安全。
此时,需要为整个局域网(包括防火墙和服务器)申请Internet 上的I P 地址,对于来自Internet 的任何WW W 、FT P 等公共服务的请求,防火墙可以根据来访者的I P 地址、被访问的端口和业务,有选择地将访问请求转发给内部局域网上的服务器,但其他如RL O GIN 、T EL NET 等易于导致安全性问题的服务,对子网外部完全关闭。
以WW W (使用80端口)服务为例,防火墙规则可以使用:
p f w a dm -F -a ac ce pt -P t cp -S I NT E RN E T -D SE R V -R —I f F y S I N T R N T D S R V R —
I P
(4)统计整个局域网的计费网络流量。
首先统计总的对外网络流量:
pf w ad m -A -a -P al l -S NE T -D FI R E W A L L —I P -W ne t —dev
然后,对于所有免费网络中的每一个网络地址NET ,使用如下规则:
i p f w a dm -A -a -P a l l -S N ET -D FI R E W A L L —I P -W ne t —dev
最后,要在系统中使用数值统计程序,定时地读取网络流量统计结果,用总的对外网络流量,依次减去每个免费网络的流量,得到对计费网络的访问流量统计。
采用这种“减法”策略,是因为免费网络的网络地址是已知的,而计费的网络,如Intern e t ,其网络地址包罗万象,不能一一列举出来。
(5)进行用户流量统计,并根据用户流量控制用户对计费网络的访问。
由于局域网上使用多种操作系统,除U nix 、W indow s NT 之外,其他系统中并不存在用户和用户安全的概念,面向用户的流量统计只能针对L inux /Un ix 用户进行。
这时,局域网用户对计费网络的访问只有两种选择:完全关闭,可以保证用户计费的准确性;完全开放,则不能对L inux 防火墙上的用户和局域网用户平等地计费。
我们选择的是前一种策略,因为我们的所有用户,都能熟练地使用L inux 系统的网络访问软件,关闭局域网对计费网络的访问,并不会带来使用上的不便。
所以,我们使用如下的规则。
清除转发防火墙的所有规则:
i p f w a dm -F -f
对每一个免费的网络NET ,依次使用以下规则,提供IP 伪装:
i p f w a dm -F -i m as q uer ad e -P al l -S I N NE T -D NE T
由于我们的局域网完全依靠IP 伪装来访问外部网络,对于计费的网络不提供I P 伪装,那么从局域网,就不能访问计费的网络。
对免费和计费的网络,设定不同的计费加权值:对每一个免费网络:
i p acc t ad d 网络地址m as k 子网屏蔽w e i gh t 0
对其他网络,使用缺省的加权值1:i p a c c t a dd de f a ul t w e i g ht 1然后,运行限额管理后台程序:i p a c c t d i pq uot a
在每月的第一天,为每个用户提供固定的限额:
i p add -s 用户名
限额值
对于无权访问计费网络的用户,禁止其计费网络访问用户名
网络IP 地址*起始范围IP 地址类型10.0.0.0/810.0.0.0~10.255.255.255一个完整的C 类地址172.16.0.0/12
172.16.0.0~172.31.255.25516个连续的B 类地址
192.168.0.0/16192.168.0.0~192.168.255.255
255个连续的C 类地址
7
E P po r t 80
p w a dm --a de n -P a l l -E E -E E :
i p acc t -d。