当前位置: 主页 > 日志 > 其它 >

netsh ipsec命令行下配置IP筛选器(IPSec)

// 转发请注明出处: http://www.redicecn.cn   redice@163.com
// by redice 2009.3.20

   通过IPSec,不使用第三方软件,只需要经过几步设置,我们就能够得到一个功能强大的防火墙。他能精确控制某个IP对本机某个端口的访问。对于某些要实现简易阻止IP功能安全软件,比如IIS防火墙,没必要自己开发一防火墙驱动(根据本人经验开发防火墙驱动难度很大,而且稳定性很难保障),完全可以通过配置本地的IPSec来实现。

   配置一个IPSec策略需要经过如下几步:
  

1)创建策略。 
2)创建过滤器。 
3)创建过滤动作。  
4)创建规则(封装策略)。  
5)启用和关闭策略。


   从上面可以看出配置步骤还是比较繁琐的。我们可以在Windows图形界面工具中配置也可以使用Windows提供的”netsh ipsec”命令。对于开发人员来说,要想在自己的程序中使用IPSec,肯定更关心的是命令行下的配置方式。下面我通过一个实例说明整个配置过程。最后给出一个我封装的IPSec的C++类,通过该类可以很简单的完成配置工作。大家可以根据自己的需要修改这个类。


下面创建一个规则,拒绝本机与202.117.112.10(西电科大web服务器)之间的所有通信。

1、创建策略:

命令:

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

图形界面下查看命令结果:



2、创建过滤器:

命令:

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 双向

图形界面下查看命令结果:



3、创建过滤动作:

命令:

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

注:这个命令就是创建堵塞数据包动作,并命名为阻止
图形界面下查看命令结果:



4、创建规则(封装策略):
命令:

netsh ipsec static add rule name=阻止本机与202.117.112.10的所有通信 policy= redice的安全策略 filterlist=本机与202.117.112.10的所有通信 filteraction=阻止 desc=阻止本机与202.117.112.10的所有通信

图形界面下查看命令结果:



5、启用和关闭策略:

命令:

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


注:如果要关闭这条策略,那么将"assign"的值改为"n"即可。

图形界面下查看命令结果:



测试,访问http://202.117.112.10 (西安电子科技大学主页)




关于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列表从指定配置文件中读取.


[2009-3-23附加]
    在上面的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 Download

[日志信息]

该日志于 2009-03-21 01:23 由 redice 发表在 redice's Blog ,你除了可以发表评论外,还可以转载 “netsh ipsec命令行下配置IP筛选器(IPSec)” 日志到你的网站或博客,但是请保留源地址及作者信息,谢谢!!    (尊重他人劳动,你我共同努力)
   
验证(必填):   点击我更换验证码

redice's Blog  is powered by DedeCms |  Theme by Monkeii.Lee |  网站地图 |  本服务器由西安鲲之鹏网络信息技术有限公司友情提供

返回顶部