没有合适的资源?快使用搜索试试~ 我知道了~
首页ipfilter的防火墙HowTo(中文)
IP Filter Based Firewalls HOWTO<br><br><br>xiaojl <zhiyouxjl@sina.com><br><br>Brendan Conoboy<br>Erik Fichtner<br>$FreeBSD: src/share/examples/ipfilter/ipf-howto.txt,v 1.1.2.1 2002/04/27 20:04:18 darrenr Exp $<br><br>摘要:本文档向初学者介绍IP Filter防火墙软件,同时介绍一些设计防火墙的基本方法。<br><br>1.1声明<br><br>作者对因该文档所造成的破坏概不负责,该文档只是介绍基于ipfilter的防火墙。如果你觉得你采取的行动不太合适的话,你应该停止阅读该文档,请有资格的安全专家为你安装防火墙。<br><br>1.2 版权<br><br>除非其它情况,该文档版权属于每一个作者。部分或全部文档可以以各种介质复制和重新发布,只要你在所有的拷贝中保存版权声明。任何商业性质的发布应该通知文档的作者。<br>所有的翻译文档及其它衍生文档应该保留版权声明。<br><br>1.3 哪里可以获得重要文档<br><br>ipf官方网站:http://coombs.anu.edu.au/~avalon/ip-filter.html<br>文档的最新版本可以在这找到:http://www.obfuscation.org/ipf/
资源详情
资源评论
资源推荐

IP Filter Based Firewalls HOWTO - China FreeBSD User Group file:///D:/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9...
第1页 共36页 2007-8-12 14:43
IP Filter Based Firewalls HOWTO
xiaojl <zhiyouxjl@sina.com>
Brendan Conoboy
Erik Fichtner
$FreeBSD: src/share/examples/ipfilter/ipf-howto.txt,v 1.1.2.1 2002/04/27 20:04:18 darrenr Exp $
摘要:本文档向初学者介绍IP Filter防火墙软件,同时介绍一些设计防火墙的基本方法。
1.1声明
作者对因该文档所造成的破坏概不负责,该文档只是介绍基于ipfilter的防火墙。如果你觉得你采取的行
动不太合适的话,你应该停止阅读该文档,请有资格的安全专家为你安装防火墙。
1.2 版权
除非其它情况,该文档版权属于每一个作者。部分或全部文档可以以各种介质复制和重新发布,只要你
在所有的拷贝中保存版权声明。任何商业性质的发布应该通知文档的作者。
所有的翻译文档及其它衍生文档应该保留版权声明。
1.3 哪里可以获得重要文档
ipf官方网站:http://coombs.anu.edu.au/~avalon/ip-filter.html
文档的最新版本可以在这找到:http://www.obfuscation.org/ipf/
2. 基本防火墙
基本防火墙基本防火墙
基本防火墙
这部分将使您对ipfilter的语法及防火墙原理有个总体的了解。这里讨论的防火墙特点都可以在任何好的
防火墙软件中找到。这部分将使您更容易的阅读和理解后面的高级部分。必须提一下的是,这一部分不
足以让你建立一个好的防火墙,如果您想建立一个有效率的安全系统您应该阅读高级部分。
2.1 文件的结构,顺序及优先级
ipf 有一个配置文件(或者说是一些一次运行的命令)。这个文件沿袭unix风格:每行一条规则,“#”表
示注释,多余的空格将被忽略,我们鼓励保持规则文件的可读性。
2.2 基本的规则处理
每条规则从上到下顺序执行。这意味着如果你的配置文件是这样的:
block in all
pass in all
计算机将视它视为

IP Filter Based Firewalls HOWTO - China FreeBSD User Group file:///D:/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9...
第2页 共36页 2007-8-12 14:43
block in all
pass in all
就是说,当有一个包进来,第一条规则起作用:
block in all
接下来ipf将包传给下一条规则,第二条规则将起作用:
pass in all
这个时候你也许会问ipf将执行第二条规则吗?如果你熟悉ipfwadm或者ipfw,你也许就不会问这个
问题了。也许您将会对包的走向感到困惑,很多包过滤软件只要包符合一条规则,它将不会往下匹
配,但是ipf不属于这种类型。
不像其它包过滤器,ipf会为每个包做一个标记,不管这个包通过与否。ipf将遍历整个规则集,除非
你打断它的遍历,然后ipf根据最后一条规则决定是通过还是抛弃这个包。当一个包进入一个接口
(如rl0,tun0),ipf就开始工作,他先检查这个包然后再检查第一条规则:
block in all
ipf说:“我现在应该阻止这个包”。它又看看第二条规则:
pass in all
“我现在应该通过这个包”。它又看看第三条规则,没有第三条规则,所以这个包根据最后一条规
则,向前传递这个包。
现在应该指出的是,即使你的规则是这样的:
block in all
block in all
block in all
block in all
pass in all
这个包依然通过。规则没有累加作用的。最后一条匹配规则总是优先的。
2.3 控制规则的执行
如果你有使用其它包过滤器的经验,你也许会发现这种设计令人困惑,会觉得这样匹配速度会有些
问题。想象一下如果你有
100条规则,而最有用的是前10条,每个包都通过这100条规则是一种很
可怕的开销。幸运的是,你可以加一个关键字到任意一条规则里面,只要匹配这条规则,这条规则

IP Filter Based Firewalls HOWTO - China FreeBSD User Group file:///D:/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9...
第3页 共36页 2007-8-12 14:43
将马上起作用,而不用跑到最后一条规则。这个关键字是quick。这是一个修改过的规则集,加入了
quick:
block in quick all
pass in all
这种情况下,ipf检查第一条规则:
block in quick all
报匹配这条规则并且遍历结束.这个包就被抛弃,没有任何提示、记录。那么下一条规则呢?
pass in all
这条规则绝不会被检查,就像不在配置文件里面。all非常广泛而且quick马上起作用将使后面的规则
不起作用。
在这里ipf就像它所配置的那样阻止包的通过,ipf也可以让一些包通过,我们可以稍微改一下规则组
来实现。
2.4 基于ip地址的过滤
ipf可以在很多方面过滤数据包,我们最熟悉的一种是ip地址,有一些ip地址空间我们是绝对不会与
之通信的,(假设)其中一块就是无路由网络,192.168.0.0/16(/16 是子网掩码,ipf也可以使用
255.255.0.0)。如果你想阻止192.168.0.0/16,你可以这样:
block in quick from 192.168.0.0/16 to any
pass in all
现在我们有了一个较不严格的规则集,它确实能为我们做些事情。当一个来自1.2.3.4的包进来,查
询第一条规则:
block in quick from 192.168.0.0/16 to any
这个包不是来自192.168.*.*,所以不匹配。查询第二条规则:
pass in all
这个包匹配,这个包被传到它的目的地。
另一方面,假设我们有一个包来自
192.168.1.2,第一条规则被执行:
block in quick from 192.168.0.0/16 to any

IP Filter Based Firewalls HOWTO - China FreeBSD User Group file:///D:/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9...
第4页 共36页 2007-8-12 14:43
匹配,包被丢弃,结束(不执行下一条规则),因为第一条规则包含quick关键字。
现在你可以通过或者阻止相当广泛的地址的数据包,我们在上面的例子中阻止了进入我们防火墙的
私有地址的数据包,让我们看看其它的规则:
block in quick from 192.168.0.0/16 to any
block in quick from 172.16.0.0/12 to any
block in quick from 10.0.0.0/8 to any
pass in all
前面的3块ip地址属于私有的ip地址空间。
2.5 控制接口
很多公司在它们连入外部网之前就有内部网了。事实上,防火墙的最早应用的地方就是在这里,连
接外网和内往之间的机器就是路由器,它与其它机器的差别在于它拥有多个接口。所有你接收到的
包以及所有你发出的包都经过网络接口。假设你有3个接口,lo0(loopback),xl0(3com ethernet),
tun0(FreeBSD中ppp通常使用的接口),你不需要数据包进入你的tun0接口。
block in quick on tun0 all
pass in all
在这,关键字"on"说明数据是针对tun0接口的。当一个包进入tun0,第一条规则匹配并丢弃这个
包,当一个数据包进入lo0或者xl0,第一条规则不匹配,第二条规则匹配,数据报通过。
2.6 联合ip地址和接口
一个防火墙匹配的规则标准(如ip,port,接口)越多,防火墙越严谨,也许你需要通过tun0传输数
据,但是不想让来自192.168.0.0/16的数据包通过。以下规则是一个防火墙的开始:
block in quick on tun0 from 192.168.0.0/16 to any
pass in all
根据上面的规则,我们用tun0来阻止通过tun0接口的数据包,当一个来自192.168.0.0/16的数据包
到达xl0,它将会通过。现在我们可以根据接口建立一个阻止或者允许大范围地址通过的防火墙:
block in quick on tun0 from 192.168.0.0/16 to any
block in quick on tun0 from 172.16.0.0/12 to any
block in quick on tun0 from 10.0.0.0/8 to any
block in quick on tun0 from 127.0.0.0/8 to any
block in quick on tun0 from 0.0.0.0/8 to any
block in quick on tun0 from 169.254.0.0/16 to any
block in quick on tun0 from 192.0.2.0/24 to any

IP Filter Based Firewalls HOWTO - China FreeBSD User Group file:///D:/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9...
第5页 共36页 2007-8-12 14:43
block in quick on tun0 from 204.152.64.0/23 to any
block in quick on tun0 from 224.0.0.0/3 to any
pass in all
你已经了解前3块地址地址空间,第4块是回路地址(浪费了大块的A类网络地址),很多软件通过
127.0.0.1与本机进行通信,所以应该阻止源地址是外部地址的数据包。第五块地址0.0.0.0/8,不应
该出现在因特网上,大部分的ip堆栈把0.0.0.0/32当作默认网关,其它的0.*.*.*,不同的系统有不同
的奇怪的处理方法。169.254.0.0/16由IANA分配给那些通过DHCP未能获得ip地址的机器作为自动
获得的ip地址。特别是windows操作系统经常使用该ip地址段,当它们是通过DHCP获得ip地址,但
是未能找到DHCP服务器。192.0.2.0/24是作者用来举例的ip地址段,同样它也是预留地址。
20.20.20.4/24,204.152.64.0/23是sun公司预留的ip地址,是否阻止由你自己决定。224.0.0.0/3主要
用于多播地址,几乎包括了D类,E类地址,其它的D类地址可以查找RFC1166。
包过滤有一个非常重要的原则,就是刚才提过的阻止私有地址的通过(除非你确信有跟私有地址进行
通信),当你知道某种类型的数据的源地址,你应该建立只允许来自这个地址的数据通过。例如非路
由地址,源地址是10.0.0.0/8的数据包是不应该到达tun0的,因为你没办法对这个数据包进行回
复,这是一个非法的数据包,127.0.0.0/8也是这种类型。
很多软件根据数据包的原始地址进行认证,当你有一个内部网20.20.20.0/24,只有内部数据的交
换,但是有数据包想要离开内部网,例如有个源地址是20.20.20.0/24想通过ppp拨号,这个时候你
有理由抛弃它,这种类型的数据包是不应该到达它的目的地址的,你可以简单的用ipf来实现。规则
是这样的:
block in quick on tun0 from 192.168.0.0/16 to any
block in quick on tun0 from 172.16.0.0/12 to any
block in quick on tun0 from 10.0.0.0/8 to any
block in quick on tun0 from 127.0.0.0/8 to any
block in quick on tun0 from 0.0.0.0/8 to any
block in quick on tun0 from 169.254.0.0/16 to any
block in quick on tun0 from 192.0.2.0/24 to any
block in quick on tun0 from 204.152.64.0/23 to any
block in quick on tun0 from 224.0.0.0/3 to any
block in quick on tun0 from 20.20.20.0/24 to any
pass in all
2.7 双向过滤,关键字“out”
到现在我们已经通过或者阻止进入防火墙的数据包,必须说明的是,进入的数据包到达的是防火墙
的任意一个接口。相反,出去的数据包离开防火墙的任意一个接口(不管是本地产生的还是仅仅是通
过防火墙的数据包),这就是说我们可以过滤进入防火墙的数据包也可以过滤离开防火墙的数据包。
现在我们知道可以像过滤进入的数据包那样过滤离开的数据包,我们可以想到的一个用处就是可以
阻止伪装的数据包离开我们自己的网络。如果外部有些机器想通过ipf路由一个目的地址是
192.168.0.0/16的数据包,我们干嘛不抛弃它呢,最坏的情况只是浪费一些带宽:
block out quick on tun0 from any to 192.168.0.0/16
剩余35页未读,继续阅读



安全验证
文档复制为VIP权益,开通VIP直接复制

评论1