IPFILTER (IPF)防火墙
1.简介
Solaris 10 默认的防火墙软件是IPFilter 本文档将介绍IPFilter基础的配置语法和相关命令。结合VM实验来进行相关的基础配置的应用。
2.IPFilter配置文件
IPFilter有一个配置文件(与那些逐条执行命令的不同),在Unix下配置文件每条规则为一行,有“#”标志的表明是注释,规则与注释可以在同一行,并且允许空格存在,以增强可读性。
/etc/ipf目录中的f
注:可能是版本不同有的版本/etc/ipf目录中有pfil.ap这个文件按照如下方法设置即可
1.用ifconfig –a 到网卡的设备名称
2.vi /etc/ipf/pfil.ap 把相应的网卡名称前面的注释符#去掉
3.用命令autopush -f /etc/ipf/pfil.ap 加载pfil.ap (以后加载防火墙规则f时就不用再加载了)
3.IPFilter基本规则的处理
在配置规则文件f之前我们先了解下IPFilter的基本规则的处理过程所有规则都将被由上至下而执行。
例如:如果你的配置文件/etc/f如下:
block in all #阻止全部包通过
pass in all #允许全部包通过
IPFilter先看看包,再看看第一条规则:
block in all
IPFilter想:“到目前为止,我想应该禁止这个包,”然后它又看看第二条规则:
Pass in all
“到目前为止,我想应该让这个包通过,”IPFilter又看看第三条规则,已经没有规则了,以它让这个包通过了许多包过滤防火墙都是在执行到与规则匹配时就不再继续将包与规则进行比较了,但IPFilter不是这样。除非你强行中断,否则它会将包与所有规则进行比较,是否允许包通过取决于最后一条匹配的规则。
也就是说,没有累积效应,最后匹配的规则拥有优先权
即使规则配置文件如下:
pass in log all 或block in log all
pass in log all block in log all
block in log all pass in log all
最终都会按照最后的规则来执行(vm实验证明)
在IPFilter语法(在下面介绍)中可以用quick这个关键字让符合包过滤的规则立即执行,不再向下和其它规则比较。例如:
block in quick proto tcp from 192.168.1.25/32 to any port = ftp #阻止IP 192.168.1.25:21端口向任何地址通过发包pass in log all #允许全部包通过
这时如果包符合第一条规则将立即执行不会再执行后面的规则语句。
4.编写IPFfilter 规则
规则由关键字组成。这些关键字必须以一定的顺序,从左到右出现在一行上。接下来的文字中关键字将使用粗体表示。某些关键字可能提供了子选项,这些子选项本身可能也是关键字,而且可能会提供更多的子选项。下面的文字中,每种语法都使用粗体的小节标题呈现,并介绍了其上下文。(用颜字体来区分语法字段)
语法:
ACTION IN-OUT OPTIONS SELECTION STATEFUL PROTO SRC_ADDR,DST_ADDR OBJECT PORT_NUM TCP_FLAG STATEFUL
ACTION = block | pass
IN-OUT = in | out
OPTIONS = log | quick | on 网络接口的名字
SELECTION = proto 协议名称| 源/目的IP | port = 端口号| flags 标志值
PROTO
= tcp/udp | udp | tcp | icmp
SRC_ADD,DST_ADDR
= all | from 对象to 对象
OBJECT = IP地址| any
PORT_NUM = port 端口号
TCP_FLAG = S
STATEFUL = keep state
ACTION (动作)
动作对表示匹配规则的包应采取什么动作。每一个规则必须包含一个动作。可以使用下面两种动作之一:block 表示如果规则与包匹配,则丢弃包。
pass 表示如果规则与包匹配,则允许包通过防火墙。
IN-OUT
每个过滤器规则都必须明确地指定是流入还是流出的规则。下一个关键字必须要么是in,要么是out,否则将无法通过语法检查。telnet ip 端口号
in 表示规则应被应用于收到的数据包。
out 表示规则应被应用于即将发出的数据包。
OPTIONS 注意:这些选项必须按下面指定的顺序出现。
log 表示包头应被写入到ipl 日志如果它与规则匹配的话。
quick表示如果给出的参数与包匹配,则以这个规则为准,这使得能够"短路" 掉后面的规则。
on 表示将网络接口的名称作为筛选参数的一部分。接口的名字会在ifconfig的输出中显示。使用这个选项,则规则只会应用到某一个网络接口上的出入数据包上。
SELECTION
关键字可以用于所检察的包的属性。有一个关键字主题,以及一组子选项关键字,您必须从他们中选择一个。以下是一些通用的属性,它们必须按下面的顺序使用
PROTO 是一个主题关键字,它必须与某个相关的子选项关键字配合使用。这个值的作用是匹配某个特定的协议。
tcp/udp | udp | tcp | icmp或其他在/etc/services定义的协议。特殊的协议关键字tcp/udp可以用于匹配TCP 或UDP 包,引入这个关键字的作用是是避免大量的重复规则的麻烦。
SRC_ADDR/DST_ADDR
使用all关键词,基本上相当于“from any to any”在没有配合其他关键字的情形。
from src to dst:from和to关键字主要是用来匹配IP 地址。所有的规则都必须同时给出源和目的两个参数。any是一个可以用于匹配任意IP 地址的特殊关键字。
PORT
如果为源或目的指定了匹配端口,规则就只能应用于TCP 和UDP 包了。当编写端口比较规则时,可以指定/etc/services 中所定义的名字,也可以直接用端口号来指定。如果端口号出现在源对象一侧,则被认为是源端口号;反之,则被认为是目的端口号。要使用新式的规则处理逻辑,就必须与to 对象配合使用这个选项。使用的例子:from any to any port = 80
对单个端口的比较可以多种方式进行,并可使用不同的比较算符。此外,还可以指定端口的范围。
port "=" | "!=" | "<" | ">" | "<=" | ">=" | "eq" | "ne" | "lt" | "gt" | "le" | "ge".
要指定端口范围,可以使用"<>" | "><"。例如:3000 >< 5000
TCP_FLAG
标志只对TCP 过滤有用。这些字母用来表达TCP 包头的标志。
新式的规则处理逻辑使用flags S 参数来识别tcp 会话开始的请求。
STATEFUL
keep state 表示如果有一个包与规则匹配,则其筛选参数应激活有状态的过滤机制。
有状态过滤将网络流量当作一种双向的包交换来处理。如果激活它,keep-state 会动态地为每一个相关的包在双向会话交互过程中产生内部规则。它能够确认发起者和包的目的地之间的会话是有效的双向包交换过程的一部分.如果包与这些规则不符,则将自动地拒绝。
5.IPFilter 的启动和关闭
启动: svcadm enable svc:/network/ipfilter:default
关闭: svcadm disable svc:/network/ipfilter:default
重启: svcadm restart svc:/network/ipfilter:default
检查进程是否启动:svcs -a |grep network |egrep "pfil|ipf"
6.VM实验www、ftp、ssh、telnet 配置规则
首先现在vm里solaris 10 中启动apache 、ftpd、ssh、telnet
IPFilter规则配置要求:对指定网络IP (192.168.1.26)开放指定WWW、FTP、SSH、TELNET服务指定
端口
禁止icmp回应信息其它IP禁止访问
1.首先确认服务是否启动
2.根据IPFilter规则处理顺序(最后匹配的规则拥有优先权)及语法配置规则文件/etc/f
如下:
block in log on e1000g0 from any to any # 拒绝所有进站包这条一定要放在最上面
pass out log on lo0 all #loopback网络可以自由发送和接受数据包pass in log on lo0 all
block out log on e1000g0 proto icmp from any to 192.168.1.25/32 icmp-type 0 # 禁止ping回应pass in l
og on e1000g0 from 192.168.1.26/32 to any port = 80 keep state #允许指定ip 访问www pass in log on e1000g0 from 192.168.1.26/32 to any port = 22 keep state #允许指定ip 访问ssh
pass in log on e1000g0 from 192.168.1.26/32 to any port = 21 keep state #允许指定ip 访问ftp
pass in log on e1000g0 from 192.168.1.26/32 to any port = 20 keep state 21连接端口20 数据端口pass in log on e1000g0 from 192.168.1.26/32 to any port 30000 >< 60000 keep state#为了保障ftp 数据转发
pass in log from on e1000g0 192.168.1.26/32 to any port = 23 keep state #允许指定ip 访问telnet
如图:
当然我们也可以结合quick关键来写规则(相当于是倒顺)
如下图
3.启动IPFilter程序检查进程是否加载
4.IPF命令:命令可以用来加载您自己的规则文件
例如:#touch /etc/ipf/ipf.rules 建立自己的规则文件
然后用ipf命令加载
# ipf -Fa -f /etc/ipf.rules
-Fa 表示清除所有的内部规则表。
-f 用于指定将要被读取的规则定义文件。
这个功能使得您能够修改自定义的规则文件,通过运行上面的IPF 命令,,可以将正在运行的防火墙刷新为使用全新的规则集,,而不需要重新启动系统。这对于测试新的规则来说就很方便,因为您可以任意执行上面的命令
5.IPFSTAT 命令:获取并显示所有的IPFilter累积统计
如图

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。