基于linux操作系统的防火墙技术及其具体实现计算机理论

上传人:xzh****18 文档编号:34640929 上传时间:2018-02-26 格式:DOC 页数:6 大小:35KB
返回 下载 相关 举报
基于linux操作系统的防火墙技术及其具体实现计算机理论_第1页
第1页 / 共6页
基于linux操作系统的防火墙技术及其具体实现计算机理论_第2页
第2页 / 共6页
基于linux操作系统的防火墙技术及其具体实现计算机理论_第3页
第3页 / 共6页
基于linux操作系统的防火墙技术及其具体实现计算机理论_第4页
第4页 / 共6页
基于linux操作系统的防火墙技术及其具体实现计算机理论_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《基于linux操作系统的防火墙技术及其具体实现计算机理论》由会员分享,可在线阅读,更多相关《基于linux操作系统的防火墙技术及其具体实现计算机理论(6页珍藏版)》请在金锄头文库上搜索。

1、基于 LINUX 操作系统的防火墙技术及其具体实现计算机理论论文摘要 本文介绍了 LINUX 下常用的防火墙规则配置软件 Ipchains;从实现原理、配置方法以及功能特点的角度描述了 LINUX 防火墙的三种功能;并给出了一个 LINUX 防火墙实例作为参考。关键字 LINUX 防火墙 ipchains 包过滤 代理 IP 伪装1 前言防火墙作为网络安全措施中的一个重要组成部分,一直受到人们的普遍关注。LINUX 是这几年一款异军突起的操作系统,以其公开的源代码、强大稳定的网络功能和大量的免费资源受到业界的普遍赞扬。LINUX 防火墙其实是操作系统本身所自带的一个功能模块。通过安装特定的防火

2、墙内核,LINUX 操作系统会对接收到的数据包按一定的策略进行处理。而用户所要做的,就是使用特定的配置软件(如 ipchains)去定制适合自己的“数据包处理策略”。2 LINUX 防火墙配置软件IpchainsIpchains 是 LINUX 2.1 及其以上版本中所带的一个防火墙规则管理程序。用户可以使用它来建立、编辑、删除系统的防火墙规则。但通常,需要自己创建一个防火墙规则脚本 /etc/rc.d/rc.firewall,并使系统启动时自动运行这个脚本。一个 LINUX 防火墙系统的安全机制是通过 Input、Output、Forward 这三个“防火链” 来实现的。而用户正是使用 ip

3、chains 在这三个“链”上分别创建一套“防火规则”,来完成对到来数据包层层限制的目的,其组织结构如图 1 所示。其中,每个链都包括一组由用户创建的过滤规则,数据包依次到达每个链,并比较其中的每条规则,直到找出匹配规则并执行相应策略(如通过、拒绝等),否则执行默认策略。实际中,数据包在到达 Input 链之前还要进行测试和正常性检查,在到路由表之前还要被判断是否被伪装,这些,在本图中都被省略了。Ipchains 经常使用的命令行格式如下:Ipchains A chain i interface p protocol ! -ys source-ip port -d destination-ip

4、 port j policy -l对各选项的说明如下表:-A 添加一规则到链尾。chain 可为 input、output 、forward。-i 指定本规则适用的网络接口。通常有 eth0、eth1、lo 、ppp0 等。-p 指定本规则适用的 IP 协议,如 tcp、udp、icmp 等。! y -y 表明 tcp 握手中的连接请求标志位 SYN; ! y 表示对该请求的响应。-s src-ip port 指明数据包的源 IP 地址,port 表示本规则适用的端口号。-d dst-ip port 指明数据包的目的 IP 地址及端口号。-j policy 指定本规则对匹配数据包的处理策略:A

5、CCEPT、DENY 或 REJECT。-l 在系统日志/var/log/messages 中记录与该规则匹配的数据包。3 LINUX 防火墙的几种常见功能由于每一个用户的要求和所处的环境都不一样,LINUX 防火墙会根据用户的设置实现各种不同的功能。但一般说来,以下三种功能是大多数用户最常用到的。3.1 包过滤对数据包进行过滤可以说是任何防火墙所具备的最基本的功能,而 LINUX 防火墙本身从某个角度也可以说是一种“包过滤防火墙”。在 LINUX 防火墙中,操作系统内核对到来的每一个数据包进行检查,从它们的包头中提取出所需要的信息,如源 IP 地址、目的 IP 地址、源端口号、目的端口号等,

6、再与已建立的防火规则逐条进行比较,并执行所匹配规则的策略,或执行默认策略,这个过程在图 1 中已经形象的表现出来。值得注意的是,在制定防火墙过滤规则时通常有两个基本的策略方法可供选择:一个是默认允许一切,即在接受所有数据包的基础上明确地禁止那些特殊的、不希望收到的数据包;还有一个策略就是默认禁止一切,即首先禁止所有的数据包通过,然后再根据所希望提供的服务去一项项允许需要的数据包通过。一般说来,前者使启动和运行防火墙变得更加容易,但却更容易为自己留下安全隐患。通过在防火墙外部接口处对进来的数据包进行过滤,可以有效地阻止绝大多数有意或无意地网络攻击,同时,对发出的数据包进行限制,可以明确地指定内部

7、网中哪些主机可以访问互联网,哪些主机只能享用哪些服务或登陆哪些站点,从而实现对内部主机的管理。可以说,在对一些小型内部局域网进行安全保护和网络管理时,包过滤确实是一种简单而有效的手段。3.2 代理LINUX 防火墙的代理功能是通过安装相应的代理软件实现的。它使那些不具备公共 IP 的内部主机也能访问互联网,并且很好地屏蔽了内部网,从而有效保障了内部主机的安全。为了清楚地描述这一重要功能的实现过程,特假设以下典型情况,如图 2 所示:steven 为内部网中一台 IP 是 192.168.0.2 的主机,其上安装有 IE5.0 浏览器,并配置为使用防火墙主机 192.168.0.1:8080 作

8、为代理。firewall 就是我们讨论的 LINUX 防火墙,有两个网络接口,分别是内部接口 eth1=192.168.0.1、外部接口 eth0=202.117.120.1。在 firewall主机上安装有 Web 代理软件“squid”,并配置其代理端口为 8080。 为 263 网站的 Web 服务器,IP 为 211.100.31.131,Web 服务端口 80。如果要从 steven 主机访问 263 的主页,其具体的通信过程如图中所示:(1)IE 通过 steven 的非专用端口 1110 (在 102465535 之间随机产生)与防火墙的代理端口 8080 建立连接,请求“htt

9、p:/” 页面。(2)squid 代理接收到请求后,先查找域名 “”,得到地址 211.100.31.131(该步骤图中省略),然后通过防火墙端口 1050 与该地址的 80 端口建立一个连接,请求页面。(3) 服务器接到请求后将页面传给 squid 代理。(4)防火墙代理得到页面后,把数据复制到(1)中所建立的连接上,IE 得到数据并将“”页面显示出来。通过以上描述,可以清楚地了解到内部主机、LINUX 代理防火墙以及外部服务器之间是如何进行数据传输的,那么,在 LINUX 防火墙内部,那些“防火链”又是如何工作的呢?其工作过程如图 3 所示:steven 主机发来的数据包经由内部接口 et

10、h1 进来后,首先接受 INPUT 链的“检查”:系统内核从包头中提取出信息,与 INPUT 链中所有适用于 eth1 接口的过滤规则逐个比较,直到匹配通过。之后,该数据包被转发给本地的代理进程。同样,代理进程发送给远程 Web服务器的数据包在从防火墙外部接口发送出去之前,也要经过 OUTPUT 链的“检查”,即与OUTPUT 链中所有适用于 eth0 接口的规则一一比较。返回的过程正好与上述相反,在此就不再赘述为了实现以上过程,我们必须在防火墙规则脚本中添加以下规则:ipchains A input i eth1 p tcp s 192.168.0.2 1110 d 192.168.0.1

11、8080 j ACCEPTipchains A output i eth0 p tcp s 202.117.120.1 1050 d 211.100.31.131 80 j ACCEPTipchains A input i eth0 p tcp !-y s 211.100.31.131 80 d 202.117.120.1 1050 j ACCEPTipchains A output i eth1 p tcp ! y s 192.168.0.1 8080 d 192.168.0.2 1110 j ACCEPT从上文对代理功能的原理和实现的叙述中,我们可以看出,LINUX 防火墙实际上扮演了一个

12、“代理网关” 的角色。内部主机和远程服务器分别都只与防火墙进行连接,而真正的“起点”和“终点 ”之间却毫无联系。3.3 IP 伪装IP 伪装(IP Masquerade)是 LINUX 操作系统自带的又一个重要功能。通过在系统内核增添相应的伪装模块,内核可以自动地对经过的数据包进行“伪装”,即修改包头中的源目的IP 信息,以使外部主机误认为该包是由防火墙主机发出来的。这样做,可以有效解决使用内部保留 IP 的主机不能访问互联网的问题,同时屏蔽了内部局域网。这一点,与前面所讲的代理所达到的目的是很类似的。关于 IP 伪装在 LINUX 防火墙内部的具体实现过程,请看图 4。仍以图 2 中所示的典

13、型情况为例,steven 主机的 IE 进程直接与远程的 Web 服务器建立一个连接。当数据包到达防火墙的内部接口后,照样要例行 INPUT 链的检查。之后,数据包被送到 FORWARD 链,接受系统内核的“ 伪装处理”,即将包头中的源 IP 地址改为防火墙外部接口 eth0 的地址,并在系统中做下记录,以便一会儿对其回应包的目的 IP 进行“恢复”。这样,当该数据包顺利从外部接口出来时,其包头中源 IP 已被改为 202.117.120.1。远程服务器会认为这是从防火墙的合法地址发来的,从而对其做出响应。当远程服务器返回的回应包到达防火墙时,先经过 INPUT 链,然后会根据系统关于 IP

14、伪装的记录对数据包的目的 IP 进行恢复,即将 202.117.120.1 改为 192.168.0.2,最后再经过 OUTPUT 链返回到steven 主机。为了实现这个过程,我们必须在防火墙规则脚本中添加以下规则:ipchains A input i eth1 p tcp s 192.168.0.2 1110 d 211.100.31.131 80 j ACCEPTipchains A output i eth0 p tcp s 202.117.120.1 1050 d 211.100.31.131 80 j ACCEPTipchains A input i eth0 p tcp !-y

15、s 211.100.31.131 80 d 202.117.120.1 1050 j ACCEPTipchains A output i eth1 p tcp ! y s 211.100.31.131 80 d 192.168.0.2 1110 j ACCEPTipchains A forward i eth0 s 192.168.0.2 1110 d 211.100.31.131 80 j MASQ与代理功能比较而言,IP 伪装不需要安装相应的代理软件,数据包的伪装对用户来说都是“透明”的,并且整个过程都是在 IP 层实现,因此实现速度较快。缺点是不能对经过的数据包作详细的记录。以上介绍了 LINUX 防火墙在实际的设置中常用到的三种功能。但一般说来,用户在创建自己的防火墙规则脚本时,可以根据自己的需要将这三种功能组合起来实现。4 一个 LINUX 防火墙实例以下是我前一段时间为某办公室搭建的 LINUX 防火墙的实际配置,给出以供参考。该室网络拓扑图如图 5:有两个局域网,LAN1 地址: 202.117.120.65/255.255.255.248为公共网络 IP,LAN2 地址为 192.168.0.0/255.255.255.0,为内部保留地址。LINUX 防火墙有两个内部接口:202.117.120.70

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号