netsh ipsec命令行下配置IP篩選器(IPSec)

經過IPSec,不使用第三方軟件,只須要通過幾步設置,咱們就可以獲得一個功能強大的防火牆。他能精確控制某個IP對本機某個端口的訪問。對於某些要實現簡易阻止IP功能安全軟件,好比IIS防火牆,不必本身開發一防火牆驅動(根據本人經驗開發防火牆驅動難度很大,並且穩定性很難保障),徹底能夠經過配置本地的IPSec來實現。

配置一個IPSec策略須要通過以下幾步:
1)建立策略。
2)建立過濾器。
3)建立過濾動做。
4)建立規則(封裝策略)。
5)啓用和關閉策略。


從上面能夠看出配置步驟仍是比較繁瑣的。咱們能夠在Windows圖形界面工具中配置也可使用Windows提供的」netsh ipsec」命令。對於開發人員來講,要想在本身的程序中使用IPSec,確定更關心的是命令行下的配置方式。下面我經過一個實例說明整個配置過程。最後給出一個我封裝的IPSec的C++類,經過該類能夠很簡單的完成配置工做。你們能夠根據本身的須要修改這個類。


下面建立一個規則,拒絕本機與202.117.112.10(西電科大web服務器)之間的全部通訊。

一、建立策略:

命令:

netsh ipsec static add policy name=redice的安全策略description= redice的安全策略

圖形界面下查看命令結果:

21_012738_pmes1.JPG

二、建立過濾器:

命令:

netsh ipsec static add filter filterlist=本機與202.117.112.10的全部通訊 srcaddr=me srcport=0 dstaddr=202.117.112.10 dstport=0 protocol=anymirrored=yes srcmask=255.255.255.255 dstmask=255.255.255.255

注:
filterlist 過濾器名稱
srcaddr,dstaddr 源/目的IP地址 (me表示本機IP,any表示任意IP)
srcport,dstport 源/目的端口 (0表示任意端口)
protocol 協議 (ANY | ICMP | TCP | UDP | RAW | <integer>)
mirrored=yes 雙向

圖形界面下查看命令結果:

21_012754_gd6k2.JPG

三、建立過濾動做:

命令:

netsh ipsec static add filteraction name=阻止 action=block

注:這個命令就是建立堵塞數據包動做,並命名爲阻止
圖形界面下查看命令結果:

21_012810_pmes3.JPG

四、建立規則(封裝策略):
命令:

netsh ipsec static add rule name=阻止本機與202.117.112.10的全部通訊 policy= redice的安全策略 filterlist=本機與202.117.112.10的全部通訊 filteraction=阻止 desc=阻止本機與202.117.112.10的全部通訊

圖形界面下查看命令結果:

21_012820_if8l4.JPG

五、啓用和關閉策略:

命令:

netsh ipsec static set policy name= redice的安全策略assign=y


注:若是要關閉這條策略,那麼將"assign"的值改成"n"便可。

圖形界面下查看命令結果:

21_012836_pmes5.JPG

測試,訪問http://202.117.112.10 (西安電子科技大學主頁)

21_012850_he7k6.JPG


關於IPSec類:IPSec類及示例程序下載 (無版權歡迎二次開發使用,歡迎反饋意見 redice@163.com)

File: Click to Download

示例程序的說明:


IPSec.exe
Usage: ipsec.exe [-b] [-c] [-f filepath] [-?] ip

Options:
-? 顯示本幫助信息.
-b ip 阻止該IP與本機的一切通訊(默認爲-b).
-c ip 恢復該IP與本機的一切通訊.
-f filepath IP列表從指定配置文件中讀取.


在上面的IPSec類中,添加過濾器使用的是將多條"netsh ipsec static add filter ..."命令使用"&"鏈接起來,而後使用CreateProcess調用該命令實現的。這樣作事比較耗費時間的。通過我測試,每次執行45條添加命令,添加2000個ip大約要花費300s的時間。這太漫長了。後來,發現了netsh命令的"-f"參數,它後面能夠附加一個scriptfile(批處理)。因而我修改了IPSec類,讓其先將全部的添加命令("ipsec static add filter....")寫入到一個批處理文件中,而後使用CreateProcess調用"cmd.exe /c 批處理文件"。發現添加10000個ip居然只用了3.983s。
附上修改後的IPSec類:
File: Click to Downloadweb

相關文章
相關標籤/搜索