热心冰块
作者热心冰块·2010-08-27 16:16
项目经理·浪潮INSPUR

IP-Filter设置方法及具体示例【转】

字数 8586阅读 1861评论 0赞 0

摘要:IP-Filter是目前比较流行的防火墙软件,他目前拥有多种平台的版本(包括:FreeBSDNetBSDSolarisIRIXHP-UXLinuxOpenBSD等版本),并且功能强大,安装设置相对比较简单。能用他来构建功能强大的软件防火墙,下面就其的安装及一些典型的设置作一下说明。

 

IP-Filter的安装

IP-Filter的下载地址:

ftp://coombs.anu.edu.au/pub/net/ip-filter/ip-fil3.4.17.tar.gz

最新版本号:

3.4.17

安装步骤:

  1. 将下载的
  2. IP-Filter的源码文件ip-fil3.4.17.tar.gz放到/tmp目录下,执行

    gzip -d ip-fil3.4.17.tar.gz

    tar ?xvf ip-fil3.4.17.tar

    cd ip_fil3.4.17

    make sunos5

    对下载的源码包进行编译。当IP Filter编译成功之后,安装过程使用的是solaris常用的打包的方式进行的,他会在/var/spool/pkg目录下创建相应的package文件。

  3. 在安装目录下输入
  4. make solaris来编译所有需要的二进制文件,注意不能使用GNU make来编译。
  5. 进入到安装目录的
  6. SunOS5目录下,执行make package命令,此命令会在SunOS5//root目录下创建一个名为“ipf.pkg”的打包文件,同时自动启动pkgadd进程,如果通过手动启动打包进程则需键入:pkgadd -d ipf.pkg来进行。
  7. 安装结束后会将
  8. IP Filter安装到/opt/ipf目录下,同时在/etc/opt/ipf创建一个名为“ipf.conf”的过滤设置文件,初始时该文件为空的。
  9. IP Filter
  10. 的启动方式是通过运行/etc/init.d/ipfboot来启动的,执行ipfboot start启动IP Filter
  11. 建立
  12. IP Filter的设置文件,/opt/ipf/bin/mkfilters能产生基本的设置文件。产生方法是通过执行下面的命令:

    /opt/ipf/bin/mkfilters > /etc/opt/ipf/ipf.conf

  13. 每次添加或修改
  14. ipf.conf文件后都需要重新启动一遍ipfboot,来重新读入设置文件,具体方法如下:/etc/init.d/ipfboot reload

 

IP-Filter的典型设置:

分为两个部分进行介绍,第一部分是IP-Filter防火墙的基本规则策略设置;第二部分为IP-Filter防火墙的高级规则策略设置。注意:以下所有的设置语句都能添加到/etc/opt/ipf/ipf.conf文件中,不过需要重新启动一遍ipfboot来使设置生效。

IP-Filter对规则的处理是采用自顶向下的方式,在IP-Filter中如果关键字quick被添加到所有一条规则中,能加快该规则的匹配速度。

IP-Filter防火墙的基本规则策略设置:

基于IP地址的基本过滤方式:

block in quick from 192.168.0.0/24 to any

pass in all

应用此规则将阻止来自于192.168.0.0网段的所有包的进入,不过允许其他网段的包进入到防火墙,同时对出去的包不作所有限制。

基于IP地址和防火墙接口的基本过滤方式:

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.0172.16.0.0网段的所有包的进入,不过允许其他网段的包进入到防火墙,同时对出去的包不作所有限制。

使用“out”关键字对出包进行过滤:

pass out quick on hme0 from 192.168.0.0/24 to any

block out quick on hme0 from any to any

应用此规则将使所有从192.168.0.0网段来的包通过防火墙出去,不过所有从其他网段来的包将被阻断在防火墙内,不允许出去。

使用“log”关键字对包的过滤情况进行记录:

block in quick on hme0 from 192.168.0.0/24 to any

block in log quick on hme0 from 172.16.0.0/16 to any

pass in all

应用此规则后将阻止通过hme0口来自于192.168.0.0172.16.0.0网段的所有包的进入,同时对172.16.0.0网段的所有包的过滤情况进行记录,不过允许其他网段的包进入到防火墙,同时对出去的包不作所有限制。

基于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.0172.16.0.0网段的所有包的进入和外出,不过允许其他网段的包进入到防火墙,同时对出去的包不作所有限制。

使用“proto”关键字来控制一些需特别指定的协议:

block in log quick on hme0 proto icmp from any to 192.168.0.40/32

应用此规则后阻止所有ping192.168.0.40icmp包。

过滤ICMP包使用“icmp-type”关键字,合并规则集。

pass in quick on hme0 proto icmp from any to 192.168.0.0/24 icmp-type 0
pass in quick on hme0 proto icmp from any to 192.168.0.0/24 icmp-type 11

block in log quick on hme0 proto icmp from any to any

应用此规则后将只允许ICMP协议的类型011type0&type11)的包通过hme0口进入到防火墙内,同时阻止所有想通过hme0口进入的ICMP协议,并将匹配此规则的包记入日志中。

使用“port”关键字对TCPUDP的端口进行过滤:

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网段通过808023端口对防火墙内的数据通信,不过允许其他网段的包进入到防火墙,同时对出去的包不作所有限制。

 

IP-Filter防火墙的高级规则策略设置:

使用“keep state”关键字建立默许规则

block in quick on hme0 all
pass out quick on hme0 proto tcp from 20.20.20.1/32 to any keep state

应用此规则将首先阻止从hme0口进入的数据包,

 

通过使用规则组(Rule Groups)来增强防火墙的性能

能通过增加更多更复杂的规则来扩展防火墙的性能,以下的示例将会修改接口名称和网络号,假设此防火墙有三个接口,分别为xl0xl1xl2

xl0连接的外网20.20.20.0/26

xl1连接的为DMZ20.20.20.0/26

xl2连接的为受保护网段20.20.20.128/25

应用于此防火墙的规则如下:

block in quick on xl0 all head 1
block in quick on xl0 from 192.168.0.0/16 to any group 1
block in quick on xl0 from 172.16.0.0/12 to any group 1
block in quick on xl0 from 10.0.0.0/8 to any group 1
block in quick on xl0 from 127.0.0.0/8 to any group 1
block in quick on xl0 from 0.0.0.0/8 to any group 1
block in quick on xl0 from 169.254.0.0/16 to any group 1
block in quick on xl0 from 192.0.2.0/24 to any group 1
block in quick on xl0 from 204.152.64.0/23 to any group 1
block in quick on xl0 from 224.0.0.0/3 to any group 1
block in log quick on xl0 from 20.20.20.0/24 to any group 1
block in log quick on xl0 from any to 20.20.20.0/32 group 1
block in log quick on xl0 from any to 20.20.20.63/32 group 1
block in log quick on xl0 from any to 20.20.20.64/32 group 1
block in log quick on xl0 from any to 20.20.20.127/32 group 1
block in log quick on xl0 from any to 20.20.20.128/32 group 1
block in log quick on xl0 from any to 20.20.20.255/32 group 1
pass in on xl0 all group 1
pass out on xl0 all
block out quick on xl1 all head 10
pass out quick on xl1 proto tcp from any to 20.20.20.64/26 port = 80 flags S keep state group 10
pass out quick on xl1 proto tcp from any to 20.20.20.64/26 port = 21 flags S keep state group 10
pass out quick on xl1 proto tcp from any to 20.20.20.64/26 port = 20 flags S keep state group 10
pass out quick on xl1 proto tcp from any to 20.20.20.65/32 port = 53 flags S keep state group 10
pass out quick on xl1 proto udp from any to 20.20.20.65/32 port = 53 keep state group 10
pass out quick on xl1 proto tcp from any to 20.20.20.66/32 port = 53 flags S keep state
pass out quick on xl1 proto udp from any to 20.20.20.66/32 port = 53 keep state group 10
pass in quick on xl1 proto tcp/udp from 20.20.20.64/26 to any keep state
block out on xl2 all
pass in quick on xl2 proto tcp/udp from 20.20.20.128/25 to any keep state

应用此规则之后会使防火墙完成如下的功能:

  1. xl0口上阻止从192.168.0.0/16172.16.0.0/1210.0.0.0/8127.0.0.0/80.0.0.0/8169.254.0.0/16 192.0.2.0/24204.152.64.0/231224.0.0.0/320.20.20.0/2420.20.20.0/3220.20.20.63/32 20.20.20.64/32 20.20.20.127/3220.20.20.128/3220.20.20.255/32、等网段的数据包的进入,同时此规则的编写是通过将这些规则绑定成为一个组的方式来进行的。同时对所有从Xl0口通过的外出包不作限制。
  2. DMZ区的20.20.20.64/26网段内的机器允许其使用wwwftp服务,对于IP地址为20.20.20.65/32机器允许其对外提供DNS服务。
  3. 对于内网安全区则应用了更为严格的安全规则,只允许
  4. 20.20.20.128/25网段的机器对内网进行访问,同时阻止所有其他网段的机器对内网的访问。

关于NATIP-Filter上的应用

首先需要打开Solarisip_forwarding开关,通过输入命令:

ndd -get /dev/tcp ip_forwarding 能查询ip_forwarding是否处于打开的状态。如果为0,则表示ip_forwarding处于关闭状态,能输入:

ndd -set /dev/tcp ip_forwarding 1来打开他。

以下为NAT的规则示例:

map hme0 192.168.100.0/24 ->0/32 proxy port ftp ftp/tcp

map hme0 192.168.100.0/24 ->0/32 portmap tcp/udp 10000:40000

map hme0 192.168.100.0/24 ->0/32

应用以上规则后能实现如下功能:

  1. 第一条规则允许内网的所有主机通过
  2. hme0口的FTP访问Internet
  3. 第二条规则映射了高端端口
  4. 1000040000,允许一些网络服务通过这一段端口范围进行访问。
  5. 最后一条规则映射了一些通用的
  6. TCP流量能进出网络。

对于在IP-Filter上应用NAT规则,能使用ipnat命令进行启动,此时NAT规则能被存储于所有文件中,不过典型情况下规则文件还是被存储于/etc/ipnat.rules

/usr/local/etc/ipnat.rules

/etc/opt/ipf/ipnat.rules,中,能使用-r参数将已添加到规则集中的NAT规则去除掉。对于NAT规则集的检测通过-l参数执行。最简便的装载NAT规则的方法是:

ipnat -CF -f /etc/ipnat.rules

 

IP-Filter的监视和调试:

ipfstat工具的属性及使用:

ipfstat会显示你防火墙所过滤的数据的列表,诸如:有多少包通过防火墙的过滤、有多少包被阻塞、是否启用了日志功能等等。下面是ipfstat的运行后所输出的信息:

# ipfstat
input packets: blocked 99286 passed 1255609 nomatch 14686 counted 0
output packets: blocked 4200 passed 1284345 nomatch 14687 counted 0
input packets logged: blocked 99286 passed 0
output packets logged: blocked 0 passed 0
packets logged: input 0 output 0
log failures: input 3898 output 0
fragment state(in): kept 0 lost 0
fragment state(out): kept 0 lost 0
packet state(in): kept 169364 lost 0
packet state(out): kept 431395 lost 0
ICMP replies: 0 TCP RSTs sent: 0
Result cache hits(in): 1215208 (out): 1098963
IN Pullups succeeded: 2 failed: 0
OUT Pullups succeeded: 0 failed: 0
Fastroute successes: 0 failures: 0
TCP cksum fails(in): 0 (out): 0
Packet log flags set: (0)
none

能使用-I-o参数来显示目前所装载的输入和输出规则。

Ipmon工具的属性及应用:

Ipmon是个收集系统快照的一个工具,ipmon能直接观看通过规则中的“log”关键字所生成的包的日志。此工具既能运行于前台又能以日志deamon的方式运行能使用下面的命令启动ipmon

# ipmon -o S
01/08/1999 15:58:57.836053 STATE:NEW 100.100.100.1,53 -> 20.20.20.15,53 PR udp
01/08/1999 15:58:58.030815 STATE:NEW 20.20.20.15,123 -> 128.167.1.69,123 PR udp
01/08/1999 15:59:18.032174 STATE:NEW 20.20.20.15,123 -> 128.173.14.71,123 PR udp
01/08/1999 15:59:24.570107 STATE:EXPIRE 100.100.100.1,53 -> 20.20.20.15,53 PR udp Pkts 4 Bytes 356
01/08/1999 16:03:51.754867 STATE:NEW 20.20.20.13,1019 -> 100.100.100.10,22 PR tcp
01/08/1999 16:04:03.070127 STATE:EXPIRE 20.20.20.13,1019 -> 100.100.100.10,22 PR tcp Pkts 63 Bytes 4604

Solaris内核参数的一些调整:

  1. Ip
  2. 转发部分:

    ndd -set /dev/ip ip_forwarding 1

  3. 端口调整部分:
  4. ndd -set /dev/tcp tcp_smallest_anon_port 25000
    ndd -set /dev/tcp tcp_largest_anon_port 65535

  5. 其他一些有用的参数:

ndd -set /dev/ip ip_forward_directed_broadcasts 0
ndd -set /dev/ip ip_forward_src_routed 0
ndd -set /dev/ip ip_respond_to_echo_broadcast 0

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

X社区推广