Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1612094
  • 博文数量: 104
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4631
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-11 10:57
个人简介

欢迎关注:https://zhangdd.com

文章分类

全部博文(104)

文章存档

2018年(9)

2016年(4)

2015年(23)

2014年(54)

2013年(14)

分类: 系统运维

2014-03-03 11:18:19

一、Solaris包过滤防火墙IPFilter
      IPFilter是目前比较流行的包过滤防火墙软件,它目前拥有多种平台的版本,安装配置相对比较简单。可以用它来构建功能强大的软件防火墙,下面就其的安装以及一些典型的配置作一下说明。 IP Filter 软件可以提供网络地址转换(NAT)或者防火墙服务。简单的说就是一个软件的防火墙,并且这个软件是开源免费的。当前的版本是4.1.15,目前支持 FreeBSD、NetBSD、Solaris、AIX 等操作系统平台。IPFilter是它是一个在引导时配置的可加载到内核的模块。这使得它十分安全,因为已不能由用户应用程序篡改。
二.Solaris防火墙ipfilter配置
1.查看IPFilter包过滤防火墙运行情况
Solaris IP 过滤防火墙随 Solaris 操作系统一起安装。但是,缺省情况下不启用包过滤。使用以下过程可以激活 Solaris IP 过滤器。使用命令“svcs -a |grep network |egrep "pfil|ipf"”查看。IP Filter 有两个服务ipfilter 和pfil,默认情况下ipfilter 是关闭的,而pfil 是打开的。
# svcs -a |grep network |egrep "pfil|ipf"
disabled       14:57:14 svc:/network/ipfilter:default
online         17:40:45 svc:/network/pfil:default
2.查看网卡接口,此处网卡名称e1000g0
lo0: flags=2001000849 mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
e1000g0: flags=1000843 mtu 1500 index 2
        inet 10.0.0.2 netmask ffffff80 broadcast 10.0.0.255   ether 0:c:29:0:1:92
3.编辑防火墙规则,修改文件/etc/ipf/ipf.conf,配置防火墙规则
典型的防火墙设置有两个网卡:一个流入,一个流出。IPFfilter读取流入和流出数据包的报头,将它们与规则集(Ruleset)相比较,将可接受的数据包从一个网卡转发至另一个网卡,对被拒绝的数据包,可以丢弃或按照所定义的方式来处理。 通过向防火墙提供有关对来自某个源地址、到某个目的地或具有特定协议类型的信息包要做些什么的指令,规则控制信息包的过滤。通过使用IPFfilter系统提供的特殊命令建立这些规则,并将其添加到内核空间特定信息包过滤表内的链中。关于添加、去除、编辑规则的命令,一般语法如下:
 
  action [in|out] option keyword, keyword...
 
  参数说明:
 
  1. 每个规则都以操作开头。如果包与规则匹配,则 Solaris IP 过滤器将操作应用于该包。以下列表包括应用于包的常用操作。
 
  block :阻止包通过过滤器。
 
  pass :允许包通过过滤器。
 
  log :记录包但不确定是阻止包还是传递包。使用 ipmon 命令可查看日志。
 
  count :将包包括在过滤器统计信息中。使用 ipfstat 命令可查看统计信息。
 
  skip number :使过滤器跳过 number 个过滤规则。
 
  auth :请求由验证包信息的用户程序执行包验证。该程序会确定是传递包还是阻止包。
 
  preauth :请求过滤器查看预先验证的列表以确定如何处理包。
 
  2. 操作后面的下一个单词必须是 in 或 out。您的选择将确定是将包过滤规则应用于传入包还是应用于传出包。
 
  3. 接下来,可以从选项列表中进行选择。如果使用多个选项,则这些选项必须采用此处显示的顺序。
 
  log :如果规则是最后一个匹配规则,则记录包。使用 ipmon 命令可查看日志。
 
  quick :如果存在匹配的包,则执行包含 quick 选项的规则。所有进一步的规则检查都将停止。
 
  on interface-name :仅当包移入或移出指定接口时才应用规则。
 
  dup-to interface-name:复制包并将 interface-name 上的副本向外发送到选择指定的 IP 地址。
 
  to interface-name :将包移动到 interface-name 上的外发队列。
 
  4. 指定选项后,可以从确定包是否与规则匹配的各关键字中进行选择。必须按此处显示的顺序使用以下关键字。
 
  tos :基于表示为十六进制或十进制整数的服务类型值,对包进行过滤。
 
  ttl :基于包的生存时间值与包匹配。在包中存储的生存时间值指明了包在被废弃之前可在网络中存在的时间长度。
 
  proto :与特定协议匹配。可以使用在 /etc/protocols 文件中指定的任何协议名称,或者使用十进制数来表示协议。关键字 tcp/udp 可以用于与 TCP 包或 UDP 包匹配。
 
  from/to/all/any :与以下任一项或所有项匹配:源 IP 地址、目标 IP 地址和端口号。all 关键字用于接受来自所有源和发往所有目标的包。
 
  with :与和包关联的指定属性匹配。在关键字前面插入 not 或 no 一词,以便仅当选项不存在时才与包匹配。
 
  flags :供 TCP 用来基于已设置的 TCP 标志进行过滤。
 
  icmp-type :根据 ICMP 类型进行过滤。仅当 proto 选项设置为 icmp 时才使用此关键字;如果使用 flags 选项,则不使用此关键字。
 
  keep keep-options :确定为包保留的信息。可用的 keep-options 包括 state 选项和 frags 选项。state 选项会保留有关会话的信息,并可以保留在 TCP、UDP 和 ICMP 包中。frags 选项可保留有关包片段的信息,并将该信息应用于后续片段。keep-options 允许匹配包通过,而不会查询访问控制列表。
 
  head number :为过滤规则创建一个新组,该组由数字 number 表示。
 
  group number :将规则添加到编号为 number 的组而不是缺省组。如果未指定其他组,则将所有过滤规则放置在组 0 中

在创建IPFilter包过滤防火墙规则的第一步是与用户咨询确定一个可接受的服务列表。许多公司会有 —个可接受的使用策略,该策略会控制哪些端口应当可用和应当赋予用户启动的服务的权限。在你确定了开放的流入端口和外出的端口需求之后,最好是编写一条规则:首先拒绝全部数据包,然后编写另外的规则:允许使用的端口。你还必须设置两个方向启用允许的服务。例如.用户同时接收和发送电子邮件通常是必要的,于是你需要对sendmail(端口25)包括一条入站和出站规则。
 
4.IPFilter包过滤防火墙规则编写方法
  1、方法1
 
  要阻止从 IP 地址 192.168.1.0/16 传入的流量,需要在规则列表中包括以下规则:
 
  block in quick from 192.168.1.0/16 to any
 
  下面的例子阻止来自b类网络148.126.0.0的任何数据包:
 
  block in quick from 148.126.0.0/16 to any
 
  2、方法2
 
  通俗来说就是:禁止是block ,通过是pass ,进入流量是in,出去流量是out 。然后配合起来使用就行了,再加上可以指定在哪个网卡上使用,也就是再加个on pcn0,另外还有一个关键字就是all,这是匹配(禁止或者通过)所有的包。基于IP地址和防火墙接口的基本过滤方式:
 
  block in quick on hme0 from 192.168.0.14 to any
 
  block in quick on hme0 from 132.16.0.0/16 to any
 
  pass in all
 
  应用此规则将阻止通过hme0口来自于192.168.0.14和132.16.0.0网段的所有包的进入,但是允许其他网段的包进入到防火墙,同时对出去的包不作任何限制。
 
  3、方法3:
 
      基于IP地址和防火墙接口的完全双向过滤方式:
 
  block out quick on hme0 from any to 192.168.0.0/24
 
  block out quick on hme0 from any to 172.16.0.0/16
 
  block in quick on hme0 from 192.168.0.0/24 to any
 
  block in quick on hme0 from 172.16.0.0/16 to any
 
  pass in all
 
  应用此规则后将阻止通过hme0口来自于192.168.0.0和172.16.0.0网段的所有包的进入和外出,但是允许其他网段的包进入到防火墙,同时对出去的包不作任何限制。

4、方法4
 
  使用“port”关键字对TCP和UDP的端口进行过滤:
 
  block in log quick on hme0 proto tcp from any to 192.168.0.0/24 port = 513
 
  block in log quick on hme0 proto tcp from any to 192.168.0.0/24 port = 8080
 
  block in log quick on hme0 proto tcp from any to 192.168.0.0/24 port = 23
 
  pass in all
 
  应用此规则后将阻止从192.168.0.0网段通过8080和23端口对防火墙内的数据通信,但是允许其他网段的包进入到防火墙,同时对出去的包不作任何限制。
 
  5、方法5
 
  quick关键字使用提示:假如你的防火墙有100条规则,最有用的可能只有前10条,那么quick是非常有必要的。
 
  pass in log quick proto tcp from 10.4.128.163/32 to any port = telnet
 
  block in log all from any to any
 
  假如你希望禁止服务器的所有包而只希望一个IP只能够telnet的话,那么就可以加上quick关键字,quick的作用是当包符合这条规则以后,就不再向下进行遍历了。如果没有quick的情况下,每一个包都要遍历整个规则表,这样的开销是十分大的,但是如果滥用quick也是不明智的,因为它毕竟不会产生日志。



阅读(6107) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~