|
|
作者: NetFlow 出自: |
20080509 # 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 #ifconfig pcn0 plumb 192.168.0.6 netmask 255.255.255.0 broadcast 192.168.0.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也是不明智的,因为它毕竟不会产生日志。 | |
阅读(928) | 评论(0) | 转发(0) |