基于LINUX操作系统的防火墙技术及其具体实现_第1页
基于LINUX操作系统的防火墙技术及其具体实现_第2页
基于LINUX操作系统的防火墙技术及其具体实现_第3页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于LINUX操作系统的防火墙技术及其具体实现

摘要本文介绍了LINUX下常用的防火墙规则配置软件Ipchains;从实现原理、配置方法以及功能特点的角度描述了LINUX防火墙的三种功能;并给出了一个LINUX防火墙实例作为参考。关键字

LINUX防火墙ipchains包过滤代理IP伪装1

前言防火墙作为网络安全措施中的一个重要组成部分,一直受到人们的普遍关注。LINUX是这几年一款异军突起的操作系统,以其公开的源代码、强大稳定的网络功能和大量的免费资源受到业界的普遍赞扬。LINUX防火墙其实是操作系统本身所自带的一个功能模块。通过安装特定的防火墙内核,LINUX操作系统会对接收到的数据包按一定的策略进行处理。而用户所要做的,就是使用特定的配置软件(如ipchains)去定制适合自己的“数据包处理策略”。2

LINUX防火墙配置软件—IpchainsIpchains是LINUX2.1及其以上版本中所带的一个防火墙规则管理程序。用户可以使用它来建立、编辑、删除系统的防火墙规则。但通常,需要自己创建一个防火墙规则脚本/etc/rc.d/rc.firewall,并使系统启动时自动运行这个脚本。一个LINUX防火墙系统的安全机制是通过Input、Output、Forward这三个“防火链”来实现的。而用户正是使用ipchains在这三个“链”上分别创建一套“防火规则”,来完成对到来数据包层层限制的目的,其组织结构如图1所示。

其中,每个链都包括一组由用户创建的过滤规则,数据包依次到达每个链,并比较其中的每条规则,直到找出匹配规则并执行相应策略(如通过、拒绝等),否则执行默认策略。实际中,数据包在到达Input链之前还要进行测试和正常性检查,在到路由表之前还要被判断是否被伪装,这些,在本图中都被省略了。Ipchains经常使用的命令行格式如下:Ipchains–Achain[–iinterface][–pprotocol][[!]-y][–ssource-ip[port]][-ddestination-ip[port]]–jpolicy[-l]对各选项的说明如下表:-A<chain>

添加一规则到链尾。chain可为input、output、forward。-i<interface>

指定本规则适用的网络接口。通常有eth0、eth1、lo、ppp0等。-p<protocol>

指定本规则适用的IP协议,如tcp、udp、icmp等。[!]–y

-y表明tcp握手中的连接请求标志位SYN;!–y表示对该请求的响应。-ssrc-ip[port]

指明数据包的源IP地址,port表示本规则适用的端口号。-ddst-ip[port]

指明数据包的目的IP地址及端口号。-jpolicy

指定本规则对匹配数据包的处理策略:ACCEPT、DENY或REJECT。-l

在系统日志/var/log/messages中记录与该规则匹配的数据包。3

LINUX防火墙的几种常见功能由于每一个用户的要求和所处的环境都不一样,LINUX防火墙会根据用户的设置实现各种不同的功能。但一般说来,以下三种功能是大多数用户最常用到的。3.1包过滤对数据包进行过滤可以说是任何防火墙所具备的最基本的功能,而LINUX防火墙本身从某个角度也可以说是一种“包过滤防火墙”。在LINUX防火墙中,操作系统内核对到来的每一个数据包进行检查,从它们的包头中提取出所需要的信息,如源IP地址、目的IP地址、源端口号、目的端口号等,再与已建立的防火规则逐条进行比较,并执行所匹配规则的策略,或执行默认策略,这个过程在图1中已经形象的表现出来。值得注意的是,在制定防火墙过滤规则时通常有两个基本的策略方法可供选择:一个是默认允许一切,即在接受所有数据包的基础上明确地禁止那些特殊的、不希望收到的数据包;还有一个策略就是默认禁止一切,即首先禁止所有的数据包通过,然后再根据所希望提供的服务去一项项允许需要的数据包通过。一般说来,前者使启动和运行防火墙变得更加容易,但却更容易为自己留下安全隐患。通过在防火墙外部接口处对进来的数据包进行过滤,可以有效地阻止绝大多数有意或无意地网络攻击,同时,对发出的数据包进行限制,可以明确地指定内部网中哪些主机可以访问互联网,哪些主机只能享用哪些服务或登陆哪些站点,从而实现对内部主机的管理。可以说,在对一些小型内部局域网进行安全保护和网络管理时,包过滤确实是一种简单而有效的手段。3.2代理LINUX防火墙的代理功能是通过安装相应的代理软件实现的。它使那些不具备公共IP的内部主机也能访问互联网,并且很好地屏蔽了内部网,从而有效保障了内部主机的安全。为了清楚地描述这一重要功能的实现过程,特假设以下典型情况,如图2所示:

steven为内部网中一台IP是的主机,其上安装有IE5.0浏览器,并配置为使用防火墙主机:8080作为代理。firewall就是我们讨论的LINUX防火墙,有两个网络接口,分别是内部接口eth1=、外部接口eth0=。在firewall主机上安装有Web代理软件“squid”,并配置其代理端口为8080。为263网站的Web服务器,IP为31,Web服务端口80。如果要从steven主机访问263的主页,其具体的通信过程如图中所示:(1)IE通过steven的非专用端口1110(在1024~65535之间随机产生)与防火墙的代理端口8080建立连接,请求“”页面。(2)squid代理接收到请求后,先查找域名“”,得到地址31(该步骤图中省略),然后通过防火墙端口1050与该地址的80端口建立一个连接,请求页面。(3)服务器接到请求后将页面传给squid代理。(4)防火墙代理得到页面后,把数据复制到(1)中所建立的连接上,IE得到数据并将“”页面显示出来。

通过以上描述,可以清楚地了解到内部主机、LINUX代理防火墙以及外部服务器之间是如何进行数据传输的,那么,在LINUX防火墙内部,那些“防火链”又是如何工作的呢?其工作过程如图3所示:

steven主机发来的数据包经由内部接口eth1进来后,首先接受INPUT链的“检查”:系统内核从包头中提取出信息,与INPUT链中所有适用于eth1接口的过滤规则逐个比较,直到匹配通过。之后,该数据包被转发给本地的代理进程。同样,代理进程发送给远程Web服务器的数据包在从防火墙外部接口发送出去之前,也要经过OUTPUT链的“检查”,即与OUTPUT链中所有适用于eth0接口的规则一一比较。返回的过程正好与上述相反,在此就不再赘述为了实现以上过程,我们必须在防火墙规则脚本中添加以下规则:ipchains–Ainput–ieth1–ptcp–s1110–d8080–jACCEPTipchains–Aoutput–ieth0–ptcp–s1050–d3180–jACCEPTipchains–Ainput–ieth0–ptcp!-y–s3180–d1050–jACCEPTipchains–Aoutput–ieth1–ptcp!–y–s8080–d1110–jACCEPT

从上文对代理功能的原理和实现的叙述中,我们可以看出,LINUX防火墙实际上扮演了一个“代理网关”的角色。内部主机和远程服务器分别都只与防火墙进行连接,而真正的“起点”和“终点”之间却毫无联系。3.3IP伪装IP伪装(IPMasquerade)是LINUX操作系统自带的又一个重要功能。通过在系统内核增添相应的伪装模块,内核可以自动地对经过的数据包进行“伪装”,即修改包头中的源目的IP信息,以使外部主机误认为该包是由防火墙主机发出来的。这样做,可以有效解决使用内部保留IP的主机不能访问互联网的问题,同时屏蔽了内部局域网。这一点,与前面所讲的代理所达到的目的是很类似的。关于IP伪装在LINUX防火墙内部的具体实现过程,请看图4。仍以图2中所示的典型情况为例,steven主机的IE进程直接与远程的Web服务器建立一个连接。当数据包到达防火墙的内部接口后,照样要例行INPUT链的检查。之后,数据包被送到FORWARD链,接受系统内核的“伪装处理”,即将包头中的源IP地址改为防火墙外部接口eth0的地址,并在系统中做下记录,以便一会儿对其回应包的目的IP进行“恢复”。这样,当该数据包顺利从外部接口出来时,其包头中源IP已被改为。远程服务器会认为这是从防火墙的合法地址发来的,从而对其做出响应。当远程服务器返回的回应包到达防火墙时,先经过INPUT链,然后会根据系统关于IP伪装的记录对数据包的目的IP进行恢复,即将改为,最后再经过OUTPUT链返回到steven主机。

为了实现这个过程,我们必须在防火墙规则脚本中添加以下规则:ipchains–Ainput–ieth1–ptcp–s1110–d3180–jACCEPTipchains–Aoutput–ieth0–ptcp–s1050–d3180–jACCEPTipchains–Ainput–ieth0–ptcp!-y–s3180–d1050–jACCEPTipchains–Aoutput–ieth1–ptcp!–y–s3180–d1110–jACCEPTipchains–Aforward–ieth0–s1110–d3180–jMASQ

与代理功能比较而言,IP伪装不需要安装相应的代理软件,数据包的伪装对用户来说都是“透明”的,并且整个过程都是在IP层实现,因此实现速度较快。缺点是不能对经过的数据包作详细的记录。以上介绍了LINUX防火墙在实际的设置中常用到的三种功能。但一般说来,用户在创建自己的防火墙规则脚本时,可以根据自己的需要将这三种功能组合起来实现。4

一个LINUX防火墙实例以下是我前一段时间为某办公室搭建的LINUX防火墙的实际配置,给出以供参考。

该室网络拓扑图如图5:

有两个局域网,LAN1地址:5/48为公共网络IP,LAN2地址为/,为内部保留地址。LINUX防火墙有两个内部接口:0接LAN1;接LAN2。现对防火墙进行配置,使LAN2的主机通过IP伪装访问互联网,但只允许使用外部Web代理服务器4的1252端口。LAN1中的主机被限制使用几种常用的互联网服务(DNS、SMTP、POP3、HTTP和FTP)。下面就是创建的防火墙规则脚本:#/etc/rc.d/rc.firewall#!/bin/sh#eth0External_interface#eth1LAN1_interface#eth2LAN2_interfaceecho"Startingfirewalling..."#Flushanyexistingrulesfromallchainsipchains-F#Setthedefaultpolicytodenyipchains-PinputDENYipchains-PoutputREJECTipchains-PforwardREJECT#Enabletrafficontheloopbackinterfaceipchains-Ainput-ilo-jACCEPTipchains-Aoutput-ilo-jACCEPT#Enablethetrafficontheeth1ipchains-Ainput-ieth1-jACCEPTipchains-Aoutput-ieth1-jACCEPT#thetrafficontheeth2onlyenabllingusingtheWEBPROXYipchains-Ainput-ieth2-ptcp-s/241024:65535-d41252-jACCEPTipchains-Aoutput-ieth2-ptcp!-y-s41252-d/241024:65535-jACCEPT#Forwardingrulesipchains-Aforward-ieth0-s4/29-jACCEPTipchains-Aforward-ieth0-s/24-jMASQipchains-Aforward-ieth1-d4/29-jACCEPT#EnableoutgoingthepacketsfromLANontheExternal_Interfaceipchains-Aoutput-ieth0-jACCEPT#EnableincomingsomeICMPmessagesoneth#1.Dest_Unreachable,Service_Unavailableipchains-Ainput-ieth0-picmp-sany/03-d4/29-jACCEPT#2.Time_Exceededipchains-Ainput-ieth0-picmp-sany/011-d4/29-jACCEPT#3.Allowoutgoingpingstoanywhereipchains-Ainput-ieth0-picmp-sany/00-d4/29-jACCEPT#EnableProxyof4:1252ipchains-Ainput-ieth0-ptcp!-y-s41252-jACCEPT#DNS(53)(DNS:)—clientmodesipchains-Ainput-ieth0-pudp-s53-d4/291024:65535-jACCEPTipchains-Ainput-ieth0-ptcp!-y-s53-d4/291024:65535-jACCEPT#SMTP(25)EnablesendingmailthrougharemoteSMTPgatewayipchains-Ainput-ieth0-ptcp!-y-sany/025-d4/291024:65535-jAC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论