分享
 
 
 

防火墙实例-理解防火墙的第二部分

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

这是理解防火墙文章的第二部分,这一部分将通过实例ipfilter 软件的介绍来进一步讨论关于防火墙的

几个方面的内容,从而深化读者对防火墙的认识和理解。第一部分中的一些基本概念在这里可以对照来看,

以便更好的理解。

一:哪些环节需要考虑?

在开始讲述ipfilter 以前,有个问题是值得思索的:在防火墙的整个实现过程中,管理员都有哪些环节

需要考虑?能够安装防火墙,并让防火墙正常运行起来其实绝非管理员的全部工作。在事关防火墙的全部

环节中,有下面几个应该加以考虑的要点:

a:防火墙的功能

这是防火墙实现的最基本的要求,包括两个方面:

首先,也是经常意义上的理解:就是说防火墙是不是提供了必需的功能,如协议分析,地址转换,流

量控制,vpn,过滤定制等,无需多讲;

其次,防火墙的关键功能是否被管理员全面认识:在很大意义上这将直接决定防火墙能否工作在一个

比较高的水平上。只有管理员能够站在一个比较高的层次上来认识,配置和管理防火墙,防火墙才可能发

挥最大的作用。

2:你的防火墙在做什么,测试它

包括四个方面:

a:一个经过仔细配置的的防火墙,可能并不一定会按照管理员的设想顺利工作,一方面可能管理员

认为非常完美的配置存在着不容易看出来的差错,另一个非常有可能的情况就是管理员完全错误的理解了

一些特定的内容,比如错误的访问控制列规则、first match 和last match 的不同、混淆了特殊的子网掩码写

法等等,这会直接导致和设计思路完全相悖的结果。

b:如有可能,管理员最好能够深入防火墙的内部,去观察和跟踪防火墙的工作状态,比如防火墙对

数据包是怎么处理的,防火墙所维护的状态表里面有什么内容,某些要求的功能是如何实现的,防火墙在

做这些工作的时候资源消耗情况都是如何等等。

c 第三,管理员必须仔细的考察正在使用,或者可能使用的功能模块,考察这些模块的工作原理,考

察这些模块是不是按照你理解和希望的方式工作。一个很好的例子就是:如果防火墙内嵌ids 模块,而且

ids 和防火墙的访问控制联动开关默认是自动打开的,那么一旦ids 不能够很好的实现“基于连接“的判断,

那么这个糟糕的默认功能会很容易被攻击者利用,通过发送伪造的攻击数据包来使防火墙扮演中断和正常

站点的连接的罪魁祸首。

d 第四,无论配置看起来多么简单明了,都要尽可能的去实际测试你的配置,常见的手段都是利用一

些特别的软硬件。但是如果对网络安全要求非常高,那么应该考虑将防火墙放置到与被保护网络类似的真

实网络环境中(对防火墙而言,看到的都是真实的数据流),然后在防火墙以外尝试对防火墙保护的系统攻

击-请注意,此时攻击的数据包是夹杂在真实的数据流中,看防火墙是否如预期的相应,个人认为尤其在配

置能够对高层协议和应用进行访问控制的防火墙时,这一点尤其重要。

3:防火墙的弱点

不要相信万无一失的防火墙,不要相信本身没有安全隐患的防火墙。有的时候,防火墙某些模块的工

作指标和销售告诉你的是不同的,但这可能也是正常的,作为系统管理员,你必须正视这一点。

具体到防火墙的选择上,checkpoint,netsceen,pix 等知名的商用产品当然不错,但是对资金有限的

中小型企业,个人用户,很可能这些价格不菲的产品根本无法考虑,怎么办?

对上面的这些用户而言,没有关系,我们还有open source 的软件可以使用,这种软件是无需付费的,

但是,如果使用得当,这些软件和昂贵的商用产品没有非常明显的差别,一个很好的例子就是本文讲的

ipfilter。

二:ipfilter 介绍

在本文的第一部分中我们定义了几个基本的防火墙类型,大家可以回忆一下基于状态的包过滤防火墙

的概念,ipfilter 就是属于基于状态的一类软件防火墙,它可以工作在freebsd、openbsd、hpunix、solaris、irix

等多种unix 平台上,ipfilter 的主页在网址http://coombs.anu.edu.au/~avalon/ip-filter.html,目前的正式版本是

3.4.31。

利用ipfilter,管理员可以通过定制多种访问控制规则来管理数据包的进出(基于状态的),此外它还

具有地址翻译、负载均衡、透明代理、支持ipv6 等等非常实用的功能。

在实际应用中,Ipfilter 可以被用于配置在多块网卡的主机上充当网关,对可信和非可信网络实行隔离;

此外,ipfilter 也可以充当单独的主机防火墙。

三:软件的安装

软件的安装非常简单,不花费太多的笔墨,读者可以根据软件包里面的readme 和install 文件的安装步骤做

就可以了,不过由于在solaris 上有些特殊,有两点需要讲一下,在编译的时候,如果编译64 位的包的话,

需要使用gcc 版本3.0 以上的编译器,否则会出现以下错误:

server# make solaris

if [ ! -f netinet/done ] ; then (cd netinet; ln -s ../*.h .; ln -s ../ip_*_pxy.c .; ); (cd netinet; ln -s ../ipsend/tcpip.h tcpip.h); touch netinet/done; fi

CC="gcc -Wstrict-prototypes -Wmissing-prototypes" ./buildsunos

Testing compiler gcc for 64 bit object file generation.

No 64 bit capable compiler was found

*** Error code 1

make: Fatal error: Command failed for target `solaris'

读者可以从sunfreeware.sun.com 上面下载3.0 以上的gcc 编译器来解决这个问题,目前的gcc3.2 就可以。

另外有一点要注意,执行完make package 后,在SunOS5 下面会生成一个ipf.pkg 文件,管理员需要使用

pkgadd 命令分别安装两个模块,如下

server# pkgadd -d ./ipf.pkg

The following packages are available:

1 ipf IP Filter

(sparc) 3.4.31

2 ipfx IP Filter (64-bit)

(sparc) 3.4.31

Select package(s) you wish to process (or 'all' to process

all packages). (default: all) [?,??,q]: 2

注意要先安装ipfx,然后再安装ipf,顺序不可以搞反。两个模块装好后,可以使用如下命令检查是否成功

载入内核:

server# modinfo | grep ipf

88 102b1e64 27f88 152 1 ipf (IP Filter: v3.4.31)

看到上述输出,这表示ipfilter 已经成功载入内核。

四:访问控制列

下面开始进一步的工作,配置访问控制列,访问控制列对一般的系统管理员而言,应该是不陌生的,

我们来看。

Ipfilter 可用的访问规则关键字主要包括:端口、源地址/目的地址、TOS、IP OPTION、icmp 的类型(type)

和代码(code),tcp flags 等,一般来说,这些关键字可以单独,也可以混合在一起使用从而完成不同的访

问控制功能。

具体的访问控制列是以命令行的方式写在一个配置文件内的,每条访问控制语句一行,以“#“符号

开头的表示是注释。配置文件的位置在不同的操作系统有些差别,今天我们所要讲到的solaris 环境中默认

ipfilter 是读取/etc/opt/ipf/目录下的ipf.conf 配置文件。

首先从最基本的规则开始:

block in all

容易理解,这个规则的意思是拒绝接受所有进入主机的数据包(关键字in,下面会讲到out,对应离开主机

的数据包),此时,系统和外界的联系是切断的。这里需要提一下,Ipfilter 处理数据包的关键字有两个:block

和pass,不象iptables,ipfilter 没有drop 这个关键字,但实际上block 就相当于drop,但配置block 时,ipfilter

对接收到的数据包悄无声息的丢弃了,而发送数据包的主机得不到任何回应。如果管理员希望给拒绝的主

机发送回应,可以在访问控制列内增加icmp error 和tcp reset 关键字,这个读者可以参考ipfilter 文档,不

仔细讲述了。

把上面的block 替换为pass:

pass in all

不用多说,这次允许所有的数据包进入主机。

容易理解是么? 看看这个规则,

pass in all

block in all

哦,这回有点犯难了,第一条规则允许所有的数据包进入主机,但是紧接着第二条规则又拒绝所有的数据

包进入主机,到底结果会是什么样的呢?在回答之前这就要牵涉到一个概念,last match,这是ipfilter 对访

问控制列处理的原则:如果通过ipfilter 的数据包同时符合多条访问控制规则,那么最后一条符合的规则有

效,前面符合要求的规则都会被丢弃。

由此,我们就明白了,上面的访问规则中最后一条有效,第一条形同虚设。关于这一点可以再举个极端的

例子:

pass in all

pass in all

pass in all

pass in all

block in all

虽然写了多条pass in all,但最后一条block in all 生效。

再看一个新的关键字quick,上面我们说了:如果通过ipfilter 的数据包同时符合多条访问控制规则,那么

最后一条符合的规则有效。这里我们还需要补充一点,如果通过ipfilter 的数据包同时符合多条访问控制规

则,同时这些访问控制规则中都使用了quick 关键字,那么对数据包的审核将在第一条使用了quick 的访

问控制规则处停止,不再继续向下。举例来说明:

pass in quick all

block in all

请注意,此时数据包到达防火墙后会在第一条访问控制规则处中止,永远不会去理会第二条。

上面举的都是比较极端的例子,实际的环境中,这种block/pass all 的防火墙是没有用处的,下面开始逐步

利用访问规则中可用的关键字来充实防火墙的访问控制列。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有