探讨基于Linux操作系统下的防火墙技术与应用

摘要:文章阐述了防火墙的基本原理、特点和功能,并通过实例实现基于Linux系统环境下,使用防火墙的方法。

关键词:防火墙;包过滤;网络地址转换;代理服务器

中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)34-1623-04

Discussion Based on the Linux Operating System and Application Firewall Technology

YUAN Min

(Hefei University of Technology Institute of Computer and Information, Hefei 230069, China)

Abstract: The article describes the basic principles of the firewall, the features and functionality, and through examples of systems based on Linux environment, the use of firewalls.

Key words: firewall; packe filtering; nat; proxy service

随着Inetnet的普及,它与人们日常工作的关系越来越紧密,因而越来越多的局域网创建了Internet代理上网服务。但当一个局域网的内部接上Internet之后,其内部资源就像代卖的羔羊一样,面临任人宰割的危险,因而除了考虑计算机病毒、系统的健壮性等内部原因之外,更主要的是防止非法用户通过Internet的入侵,目前这种防范措施主要是靠防火墙的技术完成。

1 防火墙原理

防火墙(Firewall)是指隔离在本地网络与外界网络之间的一道防御系统,是此类防范措施的总称。在互联网上防火墙是一种非常有效的网络安全模型,通过它可以隔离风险区域(即Internet或有一定风险的网络)与安全区域(本地局域网)的连接,同时不会妨碍人们对风险区域的访问。

防火墙不是一段单独的计算机程序或一件设备。防火墙是一种非常有效的网络安全模型。在逻辑上,它是过滤器、限制器和分析器,在物理上,它是被放在两个网络边界上的用于加强访问控制(阻隔非法访问)的一组硬件设备(如路由器、主机),或者是各种系统组件的网络组合(包括路由器、主机和配有的相关软件)。

目前的防火墙从结构上讲,可分为两种:

1) 代理主机结构(如图1 所示)

图1

2) 路由器加过滤器结构(如图2 所示)

图2

所有的Internet通信都是通过独立数据包的变换来完成的。每个包由源主机向目标主机传输。包是Internet上信息传输的基本单位,虽常说电脑之间的“连接”,但这连接实际上是由被连接的两台电脑之间传送的独立数据包组成的。实质上,它们“同意”相互之间的连接,并各自向发送者发出应答包,让发送者知道数据被接收。

到达了目的地──不论两台计算机相距有多远,每个Internet数据包都必须包含一个目标地址和端口号,和源主机的IP地址及端口号,以便接受者知道了是谁发出了这个包。也就是说,每一个在Internet上传送的包,都必须含有Internet源地址和目标地址。一个IP地址总是指向Internet上的一台单独机器,而端口号则和机器上的某种服务或会话向关联。

既然防火墙检查每个到达你的计算机的数据包,那么,在这个包被运行的任何软件看到之前,防火墙有完全的否决权,可以禁止你的计算机接收Internet上的任何东西。

当第一个请求建立连接的包被你的计算机回应后,一个TCP/IP被端口打开。如果到达的包不被受理,这个端口就会迅速地从Internet上消失,谁也别想和它连上。

但防火墙真正的目的于选择哪些包该拦截,哪些包该放行。既然每个到达的包都含有正确的发送者的IP地址(以便接收者发送回应包),那么,基于源主机IP地址及端口号和目标主机IP 地址及端口号的一些组合,防火墙可以过滤掉一些到达的包。

2 防火墙的特点

防火墙具备以下特点:

1) 广泛的服务支持:通过将动态的、应用层的过滤能力和认证相结合,可实现WEB浏览器、HTTP服务器、FTP等。

2) 对私有数据的加密支持:保证通过Internet进行虚拟私人网络和商务活动不受损坏。

3) 客户端认证只允许制定的用户访问内部网络或选择服务:局域网内部分支机构用户之间安全通信的附加部分。

4) 反欺骗:欺骗是从外部获取访问权的常用手段,它使数据包好似来自网络内部。防火墙能监视这样的数据包并并能扔掉它们。

5) C/S模式和跨平台支持:能使运行在一个平台的管理模块控制运行在另一个平台的监视模块。

3 防火墙的功能

1) 防火墙是阻塞点。它可以强迫所有进出的信息都通过这唯一的、狭窄的检查点,这样就可以集中实施安全策略,而不是对每台主机都进行单独的保护,显然集中式管理要比分散式管理高效且经济。

2) 防火墙可以实施强制的安全策略。可以允许某些服务通过防火墙,而禁止其它服务通过,这样可以有效地保护内部网络,不让入侵者利用那些存在严重安全缺陷的服务。这种安全策略可以随情况的不同而变化,具有很大的灵活性。

3) 防火墙可以记录网络上的活动情况。这样,管理员可以通过检查日志来跟踪和发现入侵者。

4) 使用内部防火墙可以防止一个网段的问题向另一个网段传播。

4 防火墙的分类

1) 包过滤(Packet Filtering)防火墙:拒绝接受从未授权的主机发送的数据包,并拒绝接受使用未授权服务的连接请求。

2) 网络地址翻译(Network Address Translation,NAT)防火墙:翻译内部主机的IP地址而使外部检测器无法探测到它们。

3) 代理服务器(Proxy Service)防火墙:代理内部主机进行高层应用连接,完全中断内部主机和外部主机的网络层连接。

5 防火墙的实现

该文主要介绍通过包过滤方法的实例,来实现Linux系统环境下的防火墙。

5.1 包过滤防火墙的工作层次

包过滤防火墙示意图如3所示。包过滤器是一种内置于Linux内核路由功能之上的防火墙类型,其防火墙工作在网络层。

5.2 包过滤防火墙的工作原理

5.2.1 使用过滤器

数据包过滤器在内部主机和外部主机之间,过滤系统是一台路由器或是一台主机。过滤系统根据过滤规则来决定是否让数据包通过。数据包过滤是通过对数据包的IP头和TCP或UDP头的检查来实现的,主要信息有:

1) IP源地址

① IP目标地址

② 协议(TCP包、UDP包和ICMP包)

③ TCP或UDP包的源端口

④ TCP或UDP包的目标端口

⑤ ICMP消息类型

⑥ TCP包中的ACK位

⑦ 数据包到达的端口

⑧ 数据包出去的端口

在TCP/IP中,存在着一些标准的服务端口号,例如HTTP的端口号为80。通过屏蔽特点的端口就可以禁止特定的服务。包过滤系统可以阻塞内部主机和外部主机或另外一个网络的连接,例如,可以阻塞一些被视为是有敌意的或不可信的主机或网络连接到内部网络中。

5.2.2 过滤器的实现

数据包过滤一般使用过滤路由器来实现,这种路由器与普通的路由器有所不同。

普通路由器只检查数据包的目标地址,并选择一个到达目的地址的最佳路径。它处理数据包是以目标地址为基础的,存在者两种可能性:若路由器可以找到一个路径到达目标地址则发送出去;若路由器不知道如何发送数据包则通知数据包的发送者“数据不可达”。

过滤路由器会更加仔细检查数据包,除了确定是否有到达目标地址的路径外,还要确定是否应该发送数据包,“应该与否”是由路由器的过滤策略确定并强行执行的。

路由器的过滤策略主要有:

1) 拒绝来自某主机或网段的所有连接。

2) 允许来自某主机或网段的所有连接。

3) 拒绝来自某主机或网段的指定端口的连接。

4) 允许来自某主机或网段的指定端口的连接。

5) 拒绝本地主机或本地网络与其它主机或其它网络的所有连接。

6) 允许本地主机或本地网络与其它主机或其它网络的所有连接。

7) 拒绝本地主机或本地网络与其它主机或其它网络的指定端口的连接。

8) 允许本地主机或本地网络与其它主机或其它网络的指定端口的连接。

5.2.3 包过滤器操作的基本过程

下面给出包过滤器的操作流程图,如图4所示。

几乎所有现有的包过滤器都遵循上述流程所示的工作过程,下面做个简单的叙述:

1) 包过滤规则必须被包过滤设备端口存储起来。

2) 当包到达端口时,对包报头进行语法分析。大多数包过滤设备只检查IP、TCP或UDP报头中的字段。

3) 包过滤规则以特殊的方式存储。应用于包的规则的顺序与包过滤器规则存储顺序必须相同。

4) 若一条规则阻止包传输或接收,则此包便不被允许。

5) 若一条规则允许包传输或接收,则此包便可以被继续处理。

6) 若包不满足任何一条规则,则此包便被阻塞。

5.2.4 包过滤技术的优缺点

1) 优点

① 对于一个小型的、不太复杂的站点,包过滤比较容易实现。

② 因为过滤路由器工作在IP层和TCP层,所以处理包的速度比代理服务器快。

③ 过滤路由器为用户提供了一种透明的服务,用户不需要改变客户端的任何应用程序,也不需要用户学习任何新的东西。因为过滤路由器工作在IP层和TCP层,而IP层和TCP层与应用层的问题毫不相关。所以,过滤路由器有时也被称为“包过滤网关”或“透明网关”,之所以被称为网关,是因为包过滤路由器和传统的路由器不同,它涉及到了传输层。

④ 过滤路由器在价格上比代理服务器便宜。

2) 缺点

① 一些包过滤网关不支持有效的用户认证。

② 规则表很快会变得很大而且复杂,规则很难测试。随着表的增大和复杂性的增加,规则结构出现漏洞的可能性也会增加。

③ 这种防火墙最大的缺陷是它依赖一个单一的部件来保护系统。如果这个部件出现了问题,会使得网络大门敞开,而用户甚至可能还不知道。

④ 在一般情况下,如果外部用户被允许访问内部主机,则他就可以访问内部网上的任何主机。

⑤ 包过滤防火墙只能阻止一种类型的IP欺骗,即外部主机伪装内部主机的IP,对于外部主机伪装外部主机的IP欺骗却不可能被阻止,而且它不能防止DNS欺骗。

虽然,包过滤防火墙有如上所述的缺点,但是在管理良好的小规模网络上,它能够正常的发挥其作用。

5.2.5 建立包过滤防火墙

1) 网络结构

这个网络结构是内部网有有效的Internet地址。为了将内部网段192.168.27.2/24与Internet隔离,在内部网络和Internet之间使用了包过滤防火墙,防火墙的内网接口是eth1(192.168.27.250),防火墙的Internet接口是eth0(222.195.7.201)。另外,内部网中有两台服务器对外提供服务。分别是:WWW服务器,IP地址是192.168.27.251;FTP服务器,IP地址是192.168.27.252。

2) 防火墙的建立过程

本例主要是对内部的各种服务器提供保护。下面采用编辑并执行可执行脚本的方法建立此防火墙。具体过程如下:

//首先在/etc/rc.d/目录下生成空的脚本文件,并添加可执行权限

#touch /etc/rc.d/filter-firewall

#chmod u+x /etc/rc.d/filter-firewall

//编辑/etv/rc.d/rc.local文件,使脚本能在系统启动时自动执行

#echo “/etc/rc.d/filter-firewall”>>/etc/rc.d/rc.local

//接下来使用文本编辑器编辑/etc/rc.d/filter-firewall

#vi /etc/rc.d/filter-firewall

//插入以下内容:

#!/bin/bash

echo “Starting iptables reles….”

Echo “1” >/proc/sys/net/ipv4/ip_forward

IPT=/sbin/iptables

WWW-SERVER=192.168.27.251

FTP-SERVER=192.168.27.252

IP_RANGE=”192.168.27.2/24”

$IPT –F

$IPT –F FORWARD DROP

//WWW服务

//服务器端口为80,采用Tcp或Udp协议

//规则为:eth0()=>允许目的为内部网WWW服务器的包

$IPT –A FORWARD –p tcp –d $WWW-SERVER –dport www –I eth0 –j ACCEPT

//FTP服务

//服务器端口为:命令端口21,数据端口20

//FTP服务采用tcp协议

//规则为:eth0=>仅允许目的为内部网fto服务器的包

$IPT –A FORWARD –p tcp –d $FTP-SERVER –dport ftp –I eth0 –j ACCEPT

//允许Intranet客户采用被动模式访问Internet的FTP服务器

$IPT –A FORWARD –p tcp –s 0/0 –sport ftp –data –d $IP_PANGE –I etho

–j ACCEPT

//接收来自Internet的非连接请求tcp包

$IPT –A FORWARD –p tcp –d 192.168.27.2/24 ! –syn –I eth0 –j ACCEPT

$IPT –A FORWARD –p udp –d 192.168.27.2/24–I eth0 –j ACCEPT

//接收来自整个Intranet的数据包过滤,且定义如下规则

$IPT –A FORWARD –s 192.168.27.2/24 –I eth0 –j ACCEPT

//处理IP碎片

//Ip碎片数量进行限制,允许通过100/秒个IP碎片,以防止IP碎片攻击

$IPT –A FORWARD –f –m limit –limit 100/s –limit –burst 100 –j ACCEPT

//设置icmp包过滤

//icmp包通常用于网络测试,但黑客常常采用icmp进行攻击,所以采用limit匹配扩//展加以限制,不管来自哪里的tcmp包,允许通过1/秒个包

$IPT –A FORWARD –p icmp -m limit –limit 1/s –limit –burst 10 –j ACCEPT

//编辑完毕存盘退出vi

//执行脚本,使之立刻起作用

通过执行上面的脚本,建立了一个相对完整的防火墙。该防火墙只对外开放了有限的几个端口,同时提供了客户对Internet的无缝访问,并且对ip碎片攻击和icmp包提供了有效的防护手段。

6 结束语

目前,防火墙技术已经引起了人们的注意,随着新技术的发展,混合使用包过滤技术、代理服务技术和其它一些新技术的防火墙正向我们走来。

参考文献:

[1] 王少华.用Linux构建Intranet[M].北京:清华大学出版社,2001.

[2] 李蔚泽.Red Hat Linux9 架站实务[M].北京:机械工业出版社,2005.

推荐访问:防火墙 探讨 操作系统 技术 Linux