天天看點

如何使用 IPSec 阻止特定網絡協定和端口

IPSec

首先需要指出的是,IPSec和TCP/IP篩選是不同的東西,大家不要混淆了。TCP/IP篩選的功能十分有限,遠不如IPSec靈活和強大。下面就說說如何在指令行下控制IPSec。

XP系統用ipseccmd,2000下用ipsecpol。遺憾的是,它們都不是系統自帶的。ipseccmd在xp系統安裝盤的SUPPORT\TOOLS\SUPPORT.CAB中,ipsecpol在2000 Resource Kit裡。而且,要使用ipsecpol還必須帶上另外兩個檔案:ipsecutil.dll和text2pol.dll。三個檔案一共119KB。

IPSec可以通過組政策來控制,但我找遍MSDN,也沒有找到相應的安全模闆的文法。已經配置好的IPSec政策也不能被導出為模闆。是以,組政策這條路走不通。IPSec的設定儲存在系統資料庫中(HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\IPSec\Policy\Local),理論上可以通過修改系統資料庫來配置IPSec。但很多資訊以二進制形式存放,讀取和修改都很困難。相比之下,上傳指令行工具更友善。

關于ipsecpol和ipseccmd的資料,網上可以找到很多,是以本文就不細說了,隻是列舉一些實用的例子。

在設定IPSec政策方面,ipseccmd指令的文法和ipsecpol幾乎完全一樣,是以隻以ipsecpol為例:

1,防禦rpc-dcom攻擊

ipsecpol -p myfirewall -r rpc-dcom -f *+0:135:tcp *+0:135:udp *+0:137:udp *+0:138:udp *+0:139:tcp *+0:445:tcp *+0:445:udp -n BLOCK -w reg -x

這條指令關閉了本地主機的TCP135,139,445和udp135,137,138,445端口。

具體含義如下:

-p myfirewall 指定政策名為myfirewall

-r rpc-dcom 指定規則名為rpc-dcom

-f ...... 建立7個篩選器。*表示任何位址(源);0表示本機位址(目标);+表示鏡像(雙向)篩選。詳細文法見ipsecpol -?

-n BLOCK 指定篩選操作是"阻塞"。注意,BLOCK必須是大寫。

-w reg 将配置寫入系統資料庫,重新開機後仍有效。

-x 立刻激活該政策。

2,防止被ping

ipsecpol -p myfirewall -r antiping -f *+0::icmp -n BLOCK -w reg -x

如果名為myfirewall的政策已存在,則antiping規則将添加至其中。

注意,該規則同時也阻止了該主機ping别人。

3,對後門進行IP限制

假設你在某主機上安裝了DameWare Mini Remote Control。為了保護它不被别人暴破密碼或溢出,應該限制對其服務端口6129的通路。

ipsecpol -p myfw -r dwmrc_block_all -f *+0:6129:tcp -n BLOCK -w reg

ipsecpol -p myfw -r dwmrc_pass_me -f 123.45.67.89+0:6129:tcp -n PASS -w reg -x

這樣就隻有123.45.67.89可以通路該主機的6129端口了。

如果你是動态IP,應該根據IP配置設定的範圍設定規則。比如:

ipsecpol -p myfw -r dwmrc_pass_me -f 123.45.67.*+0:6129:tcp -n PASS -w reg -x

這樣就允許123.45.67.1至123.45.67.254的IP通路6129端口。

在寫規則的時候,應該特别小心,不要把自己也阻塞了。如果你不确定某個規則的效果是否和預想的一樣,可以先用計劃任務"留下後路"。例如:

c:\>net start schedule

Task Scheduler 服務正在啟動 ..

Task Scheduler 服務已經啟動成功。

c:\>time /t

12:34

c:\>at 12:39 ipsecpol -p myfw -y -w reg

新加了一項作業,其作業 ID = 1

然後,你有5分鐘時間設定一個myfw政策并測試它。5分鐘後計劃任務将停止該政策。

如果測試結果不理想,就删除該政策。

c:\>ipsecpol -p myfw -o -w reg

注意,删除政策前必須先確定它已停止。不停止它的話,即使删除也會在一段時間内繼續生效。持續時間取決于政策的重新整理時間,預設是180分鐘。

如果測試通過,那麼就啟用它。

c:\>ipsecpol -p myfw -x -w reg

最後說一下檢視IPSec政策的辦法。

對于XP很簡單,一條指令搞定--ipseccmd show filters

而ipsecpol沒有查詢的功能。需要再用一個指令行工具netdiag。它位于2000系統安裝盤的SUPPORT\TOOLS\SUPPORT.CAB中。(已經上傳了三個檔案,也就不在乎多一個了。^_^)

netdiag需要RemoteRegistry服務的支援。是以先啟動該服務:

net start remoteregistry

不啟動RemoteRegistry就會得到一個錯誤:

[FATAL] Failed to get system information of this machine.

netdiag這個工具功能十分強大,與網絡有關的資訊都可以擷取!不過,輸出的資訊有時過于詳細,超過指令行控制台cmd.exe的輸出緩存,而不是每個遠端cmd shell都可以用more指令來分頁的。

檢視ipsec政策的指令是:

netdiag /debug /test:ipsec

然後是一長串輸出資訊。IPSec政策位于最後。

本文轉自 qinling_bai 51CTO部落格,原文連結:http://blog.51cto.com/22494/16365,如需轉載請自行聯系原作者