登录社区:用户名: 密码: 忘记密码 网页功能:加入收藏 设为首页 网站搜索  

文档

下载

图书

论坛

安全

源码

硬件

游戏
首页 信息 空间 VB VC Delphi Java Flash 补丁 控件 安全 黑客 电子书 笔记本 手机 MP3 杀毒 QQ群 产品库 分类信息 编程网站
 内容搜索 网页 下载 源代码
热点文章
  Postfix + Cyrus-IMAP + Cyr..
  AIX常见问题整理
  用OpenSWAN做Linux下的IPSec..
  打造Linux下超级安全的LAMP服..
  让你的Linux桌面更安全
  DHCP服务器的安装及正确配置
  DHCP服务器的安装及正确配置
  windows消息大全
  windows消息大全
  实现电子邮件身份验证的迫切..
  Windows服务端口大全
  Windows非法操作祥解
本站原创
最新招聘信息

您现在的位置:立华软件园->安全防线->安全配制
FREEBSD中使用IPFW来过滤ICMP服务
发表日期:2003-08-12作者:[] 出处:  

FREEBSD中可以使用IPFW来停止PING的响应,即可以调制内核和使用IPFW来拒绝

ICMP服务,这样别人用PING就看不到任何信息了。

先介绍下IPFW:在专用路由器系统开始流行之前,Internet上的路由器大部分

是基于Unix的软件路由器,其中多数是BSD Unix。显然这是由于BSD Unix在

Internet上占据的重要地位决定的,即便是在专用硬件路由器流行的今天,

当由于价格等因素不能考虑硬件路由器时,BSD系统仍然是用作软件路由器的

首选系统。

  由于路由器处于网络之间,所有网络间需要交换的数据包都要通过它转发,

因此就可以进行一定的限制,即按照预定义的一定规则处理每个数据包,符合

要求的允许通过,不符合要求的就进行丢弃。这样路由器就能用作一个简单的

防火墙系统,保护内部计算机。BSD系统中最早使用ipfw过滤器来定义不同的

过滤规则,随后ipfw也被移植到其他平台上,并根据开发者的理解不同而独立

发展。当前不同系统上的ipfw已经大不相同了,并出现了具备相同功能的其他过

滤器, FreeBSD下的ipfw也经过了不断发展,具备了更强的过滤能力,尤其是

它能和natd守护进程相结合,提供网络地址转换能力,具备更完善的防火墙能力。

FreeBSD的包过滤能力是在内核中实现的,这样才具备最高的效率和性能。因此

为了在FreeBSD上使用这个防火墙功能,需要在编译内核时打开下面选项重新定

制内核。

这文章里需要你在内核编制中打开下面的选项:

IPFIREWALL

IPFIREWALL_VERBOSE

"IPFIREWALL_VERBOSE_LIMIT=100"

options IPFIREWALL_DEFAULT_TO_ACCEPT

IPFILTER

IPFILTER_LOG

其中第一项设置IPFIREWALL是用于打开基本的包过滤支持的,只有使用它才能在

内核中支持包过滤。IPFIREWALL_VERBOSE 和IPFIREWALL_VERBOSE_LIMIT设置记

录过滤日志,及日志记录的限制。IPFIREWALL_DEFAULT_TO_ACCEPT是设置

IPFIREWALL的缺省行为,在数据包不符合所有的过滤规则的情况下进行转发,

显然这是一种宽松的限制,此时系统主要用于屏蔽特定地址和特定服务,而提

供其他的缺省网络能力。如果没有定义这个选项,系统就只能允许符合已定义

规则的数据包通过,而屏蔽其他任何数据包,这样在没有定义过滤规则的情况

下,系统不能和其他计算机相互通信。而IPFILTER是通知内核支持ipfilter,

IPFILTER_LOG是进行ipfilter LOG记录。

OK,再经过内核重新编译(内核编译请参看其他文章),还需要设置内核具备

数据包的转发能力。需要在rc.conf中设置gateway_enable 的值为YES,这样

就能在系统启动时自动打开包转发能力。也可以直接执行下面命令来打开内

核包转发能力。

好了,下面主要描述我们来拒绝ICMP的服务规则,因为测试所用,所以你可以建立

一个文件如(myfile)并增加下面的条目:

ip="你的IP地址"

ipfw -f flush #Forces your current firewall to be flushed!

ipfw add pass log icmp from $ip to any icmp 8

ipfw add pass log icmp from not $ip to $ip icmp 0

把文件保存后,并使用chmod +x myfile设置文件属性,并运行文件。

其中第一条是设置你的IP为一变量;

第二条是flush表示强制清楚你当前防火墙的所有规则;

对于第三,第四条,我们先来看看具体指令的意义:

add是增加规则,而pass指令是这条规则的处理指令,类似allow,而log

是记录指令,这个指令和其他指令不同,其他指令是对数据包进行处理的

指令,而log只是记录这个数据包,而数据包本身还将继续受到其他过滤

规则的处理,而icmp栏本身是过滤规则中规定数据包的协议类型,指定规

则是用于处理哪种数据包的,FreeBSD可以处理TCP,UCP,ICMP 类型的数据,

以及在/etc/protocols文件中定义的其他数据包的类型,上例中指定类型

是ICMP,因为我们要对ICMP进行处理,而from $ip to any是规定过滤规则

适用的地址范围,这可以通过指定源和目的计算机的IP地址范围或数据包

通过的网络界面来进行指定:

--用from规定数据包的来源地址,可以是主机地址或网络;

--用to规定数据包的目的地址,可以是主机地址或网络;

--用in或out规定数据包是流向本机,还是向外发送的;

所以第三条的规则意思是允许你使用到任何地址使用icmptype 8,echo-request,

而第四条是你获得icmptype 0,echo-reponse信息,但阻止你发送echo-reponse.

这上面的示例能比较好的阻止一些端口扫描器的扫描,因为多数端口一般开始使用

ping来查看是否主机在线,但上面我们的traceroute就不能工作了,traceroute

先发送UDP信息包并等待icmp包返回,因此下面的规则是阻止入站的icmp type 8,

但允许所需要的icmp类型入站来进行traceroute的tracing(追踪):

  参照下面的列表:

  0 echo-reply ping

  3 destination-unreachable Any TCP/UDP traffic. (目标主机不可达)

  5 redirect routing if not running routing daemon (如没有有运行routing

              守护程序重定向routing)

  8 echo-request ping

  11 time-exceeded traceroute (traceroute超时)

  当然icmp还有其他类型,请参看Request for Comments: 792

1,  ipfw add pass log udp from $ip to any

2,  ipfw add pass log icmp from $ip to any icmp 8

3,  ipfw add pass log icmp from not $ip to any icmp 0

4,  ipfw add pass log icmp from not $ip to any icmp 11

5,  ipfw add pass log icmp from not $ip to any icmp 3

上面的规则4是接受icmp type 11但拒绝你发送,规则5是接受icmp type 3,但

拒绝你发送icmp type 3的信息。

按照上面的规则并进行测试,你可以traceroutes和ping目标主机防火墙规则能

接受它们的回应,而你可以让你朋友traceroute/ping你的目标主机,但他讲不会

得到任何回应或者出现超时错。

总结:icmp和其他协议不同之处是icmp过滤使用类型而不使用端口,一般应用程序

可以使用端口来增加过滤功能,但icmp是用类型类规定进出站的信息,如"echo-request"

是入站信息而"echo-response"是出站信息,这样就可以对信息进行过滤。

具体一般协议的规则使用方法是在目标和源地址后面进行端口规定,如:

ipfw add pass tcp from any [要规则处理的端口] to $ip [要规则处理的端口]

而ICMP是定义要规则处理的协议,如:

ipfw add pass icmp from any to $ip [要规则处理的协议]

最后如果你有其他规则加入此文件增加过滤能力,你如果要在FREEBSD启动时候

加入这些规则,FREEBSD有rc.firewall文件进行启动处理,只要把这些规则加入

rc.firewall后就能自动进行处理。

我来说两句】 【发送给朋友】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 FREEBSD中使用IPFW来过滤ICMP服务
关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放 / 友情链接

Copyright ©2001-2003 Allrights reserved
e_mail:站长:webmaster(at)lihuasoft.net
网站编程QQ群  
京ICP备05001064号

页面生成时间:0.00696