IPsec封鎖端口

IPSec

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

  XP系統用ipseccmd。

  2000下用ipsecpol。

  WIN2003下直接就是IPSEC命令。遺憾的是,它們都不是系統自帶的。ipseccmd在xp系統安裝盤的SUPPORT\TOOLS\SUPPORT.CAB中,ipsecpol在2000 Resource Kit裏。而且,要使用ipsecpol還必須帶上另外兩個文件:ipsecutil.dll和text2pol.dll。三個文件一共119KB。

  winxp命令行下ipsec屏蔽不安全的端口 點此下載IPSECCMD

  IPSec叫做Internet協議安全。主要的作用是通過設置IPsec規則,提供網絡數據包的加密和認證。不過這樣高級的功能我無緣消受,只是用到了篩選功能罷了。通過設置規則進行數據包的篩選器,可以屏蔽不安全的端口連接。

  你可以運行gpedit.msc,在Windows設置>>計算機設置>>IP安全設置中進行手工設置。更加簡單的方法是使用ipseccmd命令。

  ipseccmd在WindowsXP中沒有默認安裝,他在XP系統安裝盤的

  SUPPORT\TOOLS\SUPPORT.CAB中。在Windows2000中它的名字叫做ipsecpol,默認應該也沒有安裝,你自己找找看吧。使用ipseccmd設置篩選,它的主要作用是設置你的篩選規則,爲它指定一個名稱,同時指定一個策略名稱,所謂策略不過是一組篩選規則的集合而已。比如你要封閉TCP135端口的數據雙向收發,使用命令:

  ipseccmd -w REG -p "Block default ports" -r "Block TCP/135" -f *+0:135:TCP -n BLOCK -x

  這裏我們使用的是靜態模式,常用的參數如下:

  -w reg 表明將配置寫入註冊表,重啓後仍有效。

  -p 指定策略名稱,如果名稱存在,則將該規則加入此策略,否則創建一個。

  -r 指定規則名稱。

  -n 指定操作,可以是BLOCK、PASS或者INPASS,必須大寫。

  -x 激活該策略。

  -y 使之無效。

  -o 刪除-p指定的策略。

  其中最關鍵的是-f。它用來設置你的過濾規則,格式爲

  A.B.C.D/mask:port=A.B.C.D/mask:port:protocol。其中=前面的是源地址,後面是目的地址。如果使用+,則表明此規則是雙向的。IP地址中用*代表任何IP地址,0代表我自己的IP地址。還可以使用通配符,比如144.92.*.* 等效於144.92.0.0/255.255.0.0。使用ipseccmd /?可以獲得它的幫助。

  如果希望將規則刪除,需要先使用-y使之無效,否則刪除後它還會持續一段時間。
 好了,這樣你就可以使用ipsec根據自己的需要方便得自己定製你的篩選規則了。

  如果有不安全的端口,或者你不太喜歡的IP地址,你就可以把它們封鎖在你的大門之外。

  現在,你的機器本身已經基本比較安全了,不必再一接上網線就提心吊膽了。今天天氣還不錯,趕快放心大膽的去網上衝浪去吧,海岸上有漂亮的貝殼,不要忘了撿幾顆送給我哦。

  [代碼清單]

  @ echo off

  rem

  rem blockport.bat

  rem Spirituel@SMTH

  rem

  rem This file use the IPsec filters to block default ports of Windows.

  rem It can work on Windows 2003 and Windows XP system if there is ipseccmd command on it.

  rem It can also work on Windows2000, if you chang "ipseccmd" to "ipsecpol" when ipsecpol command could work well.

  rem You can customize your own policy easily.

  rem please refer to README.txt for more details.

  rem NOTICE: NO WARRANTY totally. Please use it carefully.

  rem

  rem

  rem

  echo [Usage] blockport [ -o or -y ]

  echo set policy of filter rules and and enable them without parameter.

  echo -y parameter to make the policy inactive.

  echo -o parameter to disable and delete the policy.

  if "%1"=="-y" goto :inactive

  if "%1"=="-o" goto :delete

  @ echo on

  ipseccmd -w REG -p "Block default ports" -y

  ipseccmd -w REG -p "Block default ports" -o

  ipseccmd -w REG -p "Block default ports" -r "Block TCP/135" -f *+0:135:TCP -n BLOCK

  ipseccmd -w REG -p "Block default ports" -r "Block TCP/139" -f *+0:139:TCP -n BLOCK

  ipseccmd -w REG -p "Block default ports" -r "Block TCP/445" -f *+0:445:TCP -n BLOCK

  ipseccmd -w REG -p "Block default ports" -r "Block UDP/123" -f *+0:123:UDP -n BLOCK

  ipseccmd -w REG -p "Block default ports" -r "Block UDP/135" -f *+0:135:UDP -n BLOCK

  ipseccmd -w REG -p "Block default ports" -r "Block UDP/137" -f *+0:137:UDP -n BLOCK

  ipseccmd -w REG -p "Block default ports" -r "Block UDP/138" -f *+0:138:UDP -n BLOCK

  ipseccmd -w REG -p "Block default ports" -r "Block UDP/139" -f *+0:139:UDP -n BLOCK

  ipseccmd -w REG -p "Block default ports" -r "Block UDP/445" -f *+0:445:UDP -n BLOCK

  @ rem ipseccmd -w REG -p "Block default ports" -r "Block ping" -f 0+*::ICMP -n BLOCK

  ipseccmd -w REG -p "Block default ports" -x

  @ goto :end

  ∶inactive

  @ echo on

  ipseccmd -w REG -p "Block default ports" -y

  @ goto :end

  ∶delete

  @ echo on

  ipseccmd -w REG -p "Block default ports" -y

  ipseccmd -w REG -p "Block default ports" -o

  ∶end

  @ echo off

  pause

  IPSec可以通過組策略來控制,但我找遍MSDN,也沒有找到相應的安全模板的語法。已經配置好的IPSec策略也不能被導出爲模板。所以,組策略這條路走不通。IPSec的設置保存在註冊表中(HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\IPSec\Policy\Local),理論上可以通過修改註冊表來配置IPSec。但很多信息以二進制形式存放,讀取和修改都很困難。相比之下,上傳命令行工具更方便。

  2000下 ipsecpol實例

  關於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 指定篩選x作是“阻塞”。注意,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_block_all -f *+0:6129:tcp -n BLOCK -w reg

  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策略位於最後。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章