Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2520734
  • 博文数量: 867
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 9800
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-27 14:44
文章分类

全部博文(867)

文章存档

2007年(6)

2006年(861)

我的朋友

分类:

2006-07-31 23:26:34

作者:  发表于:2006-04-27 16:27:27

# svcs -a |grep network |egrep "pfil|ipf"
disable         4:36:25 svc:/network/pfil:default
online         23:41:33 svc:/network/ipfilter:default
(查看IP Filter服务是否启动)

# ifconfig -a inet
lo0: flags=2001000849 mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
pcn0: flags=1000843 mtu 1500 index 3
        inet 10.4.128.226 netmask ffffff00 broadcast 10.4.128.25
(查看网卡设备名)

#vi /etc/ipf/pfil.ap
.......
#dnet   -1      0       pfil
#pcelx  -1      0       pfil
#spwr   -1      0       pfil
pcn     -1      0       pfil
.......
(将网卡设备名前注释去掉)

#vi /etc/ipf/ipf.conf
block in log quick proto tcp from 10.4.128.0/24 to any port = ftp
(编辑防火墙规则)

#svcadm enable svc:/network/ipfilter:default
(启动服务)

#svcs -a |grep -i ipf
(再次查看服务是否启动)

#autopush -f /etc/ipf/pfil.ap
(生效pfil.ap配置,此步骤只需要做一次,以后更改防火墙规则就不需要再做)

#ifconfig pcn0 down unplumb
(禁用网卡)

#ifconfig pcn0 plumb 10.4.128.226 netmask 255.255.255.0 broadcast 10.4.128.255 up
(启用网卡)

这时候防火墙已经生效,大家可以试着FTP配置好的服务器,若以后需要更改规则请参照以下步骤:
#vi /etc/ipf/ipf.conf
block in log proto tcp from 10.4.128.0/24 to any port = ftp
block in log proto tcp from 10.4.128.0/24 to any port = telnet

#ipf -Fa -f /etc/ipf/ipf.conf
#ipfstat -io
#ipfstat
#ipmon

更改完以后可以再次试着FTP。

大家可能比较迷茫的就是规则方面了,其实它的规则很好懂,配置起来也很简单:
禁止就是block
通过就是pass
进来就是in
出去就是out

那么配合起来使用就行了,再加上可以指定在哪个网卡上使用,也就是再加个on pcn0,另外还有一个关键字就是all,这是匹配(禁止或者通过)所有的包,组合起来的例子就是:
block in on pcn0 all
(禁止所有的包进入)

还可以针对网段、IP以及端口的配置,就是在包的后面加如from .... to .... port = ..就可以,等号的地方可以改成其他运算符,如<、> 
网段:block in log proto tcp from 10.4.128.0/24 to any port = ftp
地址:block in log proto tcp from 10.4.128.163/32 to any port = ftp

对于协议的控制,它一样可以做的很好。协议的关键字有4种(icmp、tcp、udp、tcp/udp),启用对协议的控制就是在协议的关键字前加proto关键字如:
block in on pcn0 proto icmp from any to any

在使用ICMP协议控制的时候,可以使用icmp-type关键字来指定ICMP协议的类型,类型的值有4种:
ICMP                     Type               Value Keyword
Echo reply                 0                  echorep
Echo request               8                  echo
Router advertisement       9                 routerad
Router solicitation       10                 routersol

例如:
block out quick proto icmp from any to 10.4.128.163/32 icmp-type 0
(禁止对PING的响应)

在这里要解释一下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也是不明智的,因为它毕竟不会产生日志。
阅读(991) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~