知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

Solaris 10 IP Filter技术详解

发布时间:2014-09-05 14:08:36作者:知识屋

Solaris 10 IP Filter技术详解
 
Solaris 10集成了许许多多的开源软件,IP Filter就是其中之一,该软件包直接替换了原来SUN screen 防火墙软件包。IP Filter软件包其功能也完全替代sun screen,功能包括状态性包过滤和网络地址转换(NAT),同样提供非状态包过滤以及创建和管理地址池的能力。
 
包过滤是防止基于网络攻击最直接有效的保护方法,Solaris IP Filter可以根据不同需求,可通过IP地址、端口、协议、网卡对网络包加载过滤功能。Solaris IP Filter也可以通过私有的源IP地址和目标IP地址 ,或者一个IP地址范围,再或者一个IP池来进行网络包的过滤。就是说其定制的策略是非常灵活的。
 
Solaris IP Filter配置文件介绍
Solaris IP Filter软件包提供防火墙和网络地址转换(NAT)两种功能,而起配置信息都可以使用相应的配置文件来提供。Solaris IP Filter配置文件都放在/etc/ipf目录下,包括ipf.conf,ipf.nat以及ippool.conf等文件。这些文件在系统boot过程中被自动读取,只要这些文件存放在/etc/ipf目录下。
 
Solaris IP Filter包过滤特征介绍
通过使用包过滤规则集可以十分轻松设置防火墙功能,命令ipf是用来配合这些规则集进行功能设置。这些规则集既可以使用命令行进行设置,也可以使用编写配置文件的方法来进行设置。/etc/ipf/ipf.conf配置文件里面放置了所有包过滤规则集,在系统boot过程中被ipfilter服务所读取。如果ipf.conf文件不放在/etc/ipf/目录下,这些规则集就不会被读取,但是可以在启动完成后,使用命令来动态读取。
Solaris IP Filter同时维护着两份规则集,一个为激活使用的(在kernel中),一个为非激活的规则集。IP Filter在进行包过滤的时候是从规则集的开始一直到最后一行进行处理,并设置着一个标志,根据这个标志,IP Filter决定是否转发或者拦截网络包。
以上从头到尾的遍历处理方式有两个例外情况,一个是规则中含有quick关键字,另外一个就是含有group关键字。如果规则中含有quick关键字,规则合规处理就为处理完所在规则行后,将不再往下读取其他规则了。如果规则中含有group关键字,那么只有带有group标志的网络包才被处理。
 
Solaris IP Filter语法通解
在/etc/ipf/ipf.conf文件中每一行的语法都如以下所示来描述一个规则:
action [in|out] option keyword, keyword...
1.       action  每个规则必须使用的开始部分
这些action为其后规则被匹配时所采用的动作,具体如下:
block                  阻止网络包
pass                     允许网络报文通过
log                        记录所有被通过和阻止的网络包,使用ipmon命令查看
count                 统计计算网络报文数,使用ipfstat查看统计信息
skip number      过滤处理时跳过规则的个数
auth                     通过用户程序验证网络报信息,需要进行包授权请求
preauth             过滤器查看预授权表请求,决定网络包如何处理
2.       action后面必须为in或者out
in为进来的网络包,out是出去的网络包
3.       第三部分为规则的一些选项
如果以下选项都被使用的话,必须按顺序写入规则集
log             最后一个规则被匹配时,网络包将被记录
quick                    如果网络包被匹配时的规则行包含quick选项,将按该规则处理,后面的规则不在被读取
on interface-name            只有进出指定网卡的网络包才能适用该规则
dup-to interface-name      在指定网卡上,拷贝包然后发送拷贝的包到指定的IP上
to interface-name              将网络包在改网卡上顺序移动
4.       第四部分为网络包的匹配原则
tos              根据服务类型进行包过滤,为一个十六进制或者十进制的整型数来表达
ttl                根据包的存活值time-to-live进行匹配,该值存放在数据包头上
proto        根据指定的协议来匹配,可以使用任何在/etc/protocols文件中命名的协
议,比如tcp/udp用来匹配TCP或者UDP数据包
       from/to/all/any           匹配以下任何一个或者全部数据包:源IP地址、目标IP地址
以及端口号
with             匹配与指定属性相关联的数据包,如果插入not或者no,是为了只
                     有选项没有表达情况才匹配
flags            用于TCP数据包,基于TCP 标志位被设置的情况
icmp-type  根据ICMP类型进行过滤
keep keep-options      检测被保留的数据包的相关信息,keep-optons 包含在state选项
                                        中才有效
head number               为过滤规则创建一个新的组,用number数字来标注
group number             增加一规则用组数number来替代缺省的组
配置文件的编写,以及规则示例后面章节将加以详细介绍。
Solaris IP Filter网络地址转换NAT特征介绍
网络地址转换NAT是一组映射规则的设置,它担负着将源IP地址和目标IP地址映射成其他的IP地址或者INTERNET网络地址。这些规则修改数据包里的源IP地址和目标IP地址,使得这些数据包能够发送到正确的地址上去。NAT也可以将数据包从一个端口发送到另一个端口上。
 
可以使用ipnat命令来维护制定NAT的列表,也可以使用配置文件来维护和制定此列表,这些列表都可以写在ipnat.conf文件里面。跟IP Filter包过滤配置文件一样,如果需要在boot的时候读取调用的话,就将ipnat.conf文件放置在/etc/ipf目录下,如果不需要这样,就可以放在任意指定的目录中,使用命令读取。
配置NAT列表
按以下的语法进行编制:
command interface-name parameters
1.       每个规则必须以以下关键字开始
map            一个IP地址或者网络映射到另一个IP地址或者网络
rdr                从一个IP地址和端口的配对重定向到另一个IP地址和端口配对
bimap        在外部IP地址和内部IP地址之间建立一个双向的NAT
map-block 建立静态IP地址翻译
2.       第二部就是网卡的名字
3.       第三部是以下一些参数
ipmask       指明网络掩码
dstipmask 指明ipmask翻译到网络的地址
mapport     指定TCP,udp,或者TCP/UDP端口,或者一个端口号范围
Solaris IP Filter IP地址池特征介绍
IP地址池创建了一个参考标准,用来命名一个地址/端口配对组,这样带来的好处就是大大减小了用规则来匹配IP的时间,提高了处理效率。
 
IP地址池配置规则放置在ippool.conf文件中,和前面的FILTER和NAT一样,如果需要在引导系统就load进kernel的话,就将该文件放在/etc/ipf/目录下。
配置IP地址池
配置IP地址池可以使用以下语法:
table role = role-name type = storage-format number = reference-number
table         为多个地址定义了一个参考表
role           指定这个池在Solaris IP Filter中的角色
type            指定池的存储格式
number    指定一个参考数被过滤过滤规则使用
使用pfil STREAMS模块激活IP Filter
激活Solaris IP Filter必须使用到pfil STREAMS模块,Solaris IP Filter不提供自动机制来为每个接口(比如网卡)调用模块,其替代方法就是pfil STRAMS模块使用SMF svc:/network/pfil机制来管理。为网卡激活网络包过滤功能,需要为网卡配置pfil.ap配置文件并激活svc:/network/pfil,这样pfil STRAMS模块就能为每个网卡服务了。enable 该模块,必须用以下两种方法来实现,一个是reboot系统,另外一个就是将所涉及的网卡 unplumb,在plumb起来,手动配置网口。
 
Solaris IP Filter配置指南
1.         Enable IP Filter
Solaris IP Filter软件在solaris 10版本及以后版本已经集成,缺省情况下是不启用这个服务的,以下为打开该服务的步骤:
a.  使用IP Filter角色用户登陆系统或者直接使用root用户
b.  创建Filter规则配置文件/etc/ipf/ipf.conf
c.  Enable系统的Filter功能svcadm enable network/ipfilter
以下步骤是完成指定网卡设置的Filter功能
a.    创建关于网卡的文件pfil.ap
这个文件包含了需要包过滤的网卡,只要写入该网卡的名字即可
例如:bge -1 0 pfil
b.    重启进程以读取该文件内容
scvadm restart network/pfil
c.    激活对网卡包过滤的规则策略的另种方法
l  # sync;sync;sync; init 6系统
l  # ifconfig bge0 unplumb;
# ifconfig bge0 plumb 192.168.0.199/24 up
手工停启用网卡,配置网络IP等
2.         Re-Enable IP filter
修改了配置文件后必须是的进程重新读取文件内容,才能使得新修订的包过滤规则生效:
#ipf –D停止Filter
#ipf –E 启用Filter
#ipf –f /etc/ipf/ipf.conf重新读取ipf.conf文件内容
Solaris IP Filter配置文件内容示例
以下内容为配置内容详解,主要为制定一些包过滤规则策略提供参考:
1.       缺省情况下记录所有的进出网卡nxge0的数据包
pass in log on nxge0 all
pass out log on nxge0 all
 
2.       阻止,但是不记录进入其他保留地址的数据包
block in quick on nxgel0 from 10.0.0.0/8 to any
block in quick on nxgel0 from 172.16.0.0/12 to any
其中quick选项,在读取配置文件时,只要数据包匹配了该行规则,就不再读取后续的规则行
3.       阻止并记录不可信任内部IP的所有数据包,192.168.100.100/32为运行IP filter的机器
block in log quick from 192.168.0.15 to 192.168.100.100/32
4.       阻止并记录X11(port 600)协议所有数据包,以及RPC和portmapper(port 111),192.168.100.100/32为运行IP filter的机器
block in log quick on nxge0 proto tcp from any to 192.168.100.100/32 port = 6000 keep state
block in log quick on nxge0 proto tcp/udp from any to192.168.100.100/32 port = 111 keep state
 
5.       灵活运用quick示例
pass in quick on nxgel0 from 192.168.0.101/32 to any
pass out quick on nxgel0 from 192.168.0.101/32 to any
pass in quick on nxgel0 from 192.168.0.200/32 to any
pass out quick on nxgel0 from 192.168.0.200/32 to any
block in quick on nxgel0 from 192.168.0.0/24 to any
block out quick on nxgel0 from 192.168.0.0/24 to any
该例子阻止了192.168.0.0网段所有进出的数据包,但是该网段192.168.0.101和192.168.0.200两台主机所有的数据包还是能够正常发送和接受的。这是quick灵活运用的例子,quick表示在规则被匹配后,后续的规则不再读取,这样就能屏蔽掉后面的包含该规则的其他行。
 
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜