经过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的安全策略
图形界面下查看命令结果:
二、建立过滤器:
命令:
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 双向
图形界面下查看命令结果:
三、建立过滤动做:
命令:
netsh ipsec static add filteraction name=阻止 action=block
注:这个命令就是建立堵塞数据包动做,并命名为阻止
图形界面下查看命令结果:
四、建立规则(封装策略):
命令:
netsh ipsec static add rule name=阻止本机与202.117.112.10的全部通讯 policy= redice的安全策略 filterlist=本机与202.117.112.10的全部通讯 filteraction=阻止 desc=阻止本机与202.117.112.10的全部通讯
图形界面下查看命令结果:
五、启用和关闭策略:
命令:
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列表从指定配置文件中读取.
在上面的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