Solaris 的防火牆ipfilter配置
阿新 • • 發佈:2019-01-25
[email protected] 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<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
pcn0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> 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也是不明智的,
因為它畢竟不會產生日誌。
# 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<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
pcn0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> 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也是不明智的,
因為它畢竟不會產生日誌。