查看單個文章
舊 2004-03-09, 01:09 AM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 IPSec Filter (IP安全策略)

IPSec Filer過濾服務在網路棧中最先處理分組,對於那些不符合過濾原則的分組一律簡單丟棄。和TCP/IP Filter相比,IPSec Filer可以應用於單個連接頭,可以恰當的阻塞ICMP。而且IPSec Filer不需要重起就生效。他主要用於服務器的解決方案,而不是個人防火牆技術,因為它和TCP/IP Filter一樣,也會阻塞合法外出連接的入端服務(除非所有高連接阜均允許通過)。

新建IPSec Filer可以使用管理工具》本地安全策略(sepol.msc)。可以在GUI界面中,右擊左側"IP安全策略,在本地機器"結點,然後選「管理IP篩選器表和篩選器操作」(本文不介紹GUI界面)。

我們更喜歡用ipsecpol.exe命令行工具管理IPSec過濾服務。他便於腳本編寫,比IPSec策略管理器好用多了。ipsecpol.exe可以從win2000reskit包中找到的。

下面例子就是只允許80連接阜是可以訪問的:

ipsecpol\\computername -w REG -p "Web" -o)
ipsecpol\\computername -x -w REG -p "Web" -r "BlockAll" -n BLOCK -f 0+*
ipsecpol\\computername -x -w REG -p "Web" -r "OkHTTP" -n PASS -f
0:80+*::TCP

後兩條命令新建了一條叫「WEB」的IPCSec策略,包含兩條過濾規則,一是「BlockAll」,即禁止所有協議進出此主機;第二條是"OkHTTP",允許80連接阜的服務進出此主機。如果還允許ping或ICMP(建議不開啟),你可以新增下面規則:

ipsecpol\\computername -x -w REG -p "Web" -r "OkICMP" -n PASS -f 0+*::ICMP

上述例子是一個對所有地址均可用的策略,你可以用-f開關來指定單個ip地址,從而實現具體的連接頭的過濾。對按上述例子配置的服務器進行連接阜掃瞄的時候可以看到的只要80連接阜。當此策略不啟動時,所有連接阜又都是可以訪問的。

上例中的每個參數見下表:
對windows2000主機進行過濾的ipsecpol參數表:
-------------------------------------
-w REG ipsecpol設為靜態模式(static mode),此模式將策略寫入指定的
存儲地方(不同於預設值的動態模式,該模式下只要策略帶來服務器
是啟動的,策略就生效,重起才去除)。REG參數指定策略寫入
Registry,這對於單獨的WEB服務器來說是合適的(定一個選擇是DS
,即寫入目錄)。
-p 為策略指定任意一個名字(比如WEB),如果已有同名的策略存在,
則本規則會新增其後,比如例子中的第三行OkHTTP規則將新增於WEB
策略中
-r 為規則這指定名字,他將替代策略中已有的同名規則
-n 在靜態模式中,NegotiationPolicyList選項可以指定3個項:
BLOCK、PASS以及INPASS。
BLOCK 忽略NegotiationPolicyList中的其他策略,使過濾服務阻塞或丟棄
所有分組;這與IPSec管理界面中選中BLOCK單選按鈕的效果一樣。
PASS 忽略NegotiationPolicyList中的其他策略,允許所有分組通過過濾
器。這與IPSec管理界面中選中Permit單選按鈕的效果一樣。
-f 過濾表(FilterList),一個或多個空格分開的IPSec Filer。過濾
規則將此格式稱為filterspec(過濾規範):
A.B.C.D /maskort=A.B.C.D /maskort:IP protocol
其中「=」左邊是源地址目標地址在右邊,如果用「+」代替「=」
,則新建了2個映像的過濾器,兩個方向均可。掩碼和連接阜是可選的
,如果省略的話,則掩碼為255.255.255.255,連接阜為「Any」。A.
B.C.D /mask可用下面的方式代替:
0 表示本地系統地址
* 表示任何地址
DNS 名字(注意:多重解釋將被忽略)
IP協議(比如:ICMP)是可選項:如果省略,則假定為「Any」IP協
議。如果指定了一個IP協議,則其前面應該有連接阜號或是"::"。.
-x 可選項,在LOCAK註冊時啟動策略(注意我們在第一條規則時使用它
以啟動www策略,此開關似乎只在策略的第一個過濾器新建時起作
用)。
-y 可選項,在LOCAL註冊時使策略失活(inactive)。
-o 可選項,將刪除由-p指定的策略(注意:它將刪除指定策略的各個
方面,如果你有其他策略指向該策略中的對象時不要使用)
-------------------------------------

我們還應當注意到,IPSec過濾器不會阻擋連接阜500(UDP)以及windows2000域控制器上的連接阜88(TCP/IP),因為他們可能用來執行IPSec認證服務(88是Kerberos ,500是IKE:Internet Key Exchange)。不過修正檔1中包含了一個新註冊設置,允許通過關閉IPSec驅動程式免除規則來禁止Kerberos連接阜,其設置為:

HKLM\SYSTEM\CurrentControlSet\Services\IPSEC\NoDefaultExempt
Type: DWORD
Max: 1
Min: 0
Default: 0

IKE分組總是免除檢查的,不受註冊設置影響,Kerberos和RSVP分組在此註冊設置為1時將不在被免除檢查。

由於ipsecpol健壯的命令行語法,他顯得比較苛刻。在上面例子中過濾規則時從頂向下解析的,簡單改變順序會導致過濾的不正確。而且語法中,源或目的地址的連接阜範圍也似乎沒辦法指定,因此,使用起來要格外小心,以免阻塞了必要的連接阜。下面是一些小技巧:

1 如果想刪除一個策略,則在用-o開關刪除之前或之後,用-y開關禁止該策略。否則還起作用。
2 在修改策略時,要麼用命令行工具ipsecpol.exe,要麼用GUI圖形界面。當我們用ipsecpol.exe新建策略,而用GUI進行編輯的時候,就產生了衝突,並留下了一些重要的安全漏洞。
3 一定要刪除那些沒有用的過濾規則,以防止產生衝突。這可是一個重要的查點對像哦。
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次