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

相关文章
相关标签/搜索