// 转发请注明出处: 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
netsh ipsec命令行下配置IP筛选器(IPSec)
[日志分享]
[日志信息]
该日志于 2009-03-21 01:23 由 redice 发表在 redice's Blog ,你除了可以发表评论外,还可以转载 “netsh ipsec命令行下配置IP筛选器(IPSec)” 日志到你的网站或博客,但是请保留源地址及作者信息,谢谢!! (尊重他人劳动,你我共同努力)
呵呵,谢谢
VaTG790i.最好的<a href=http://www.kyfei.com>网站推广软件</a>,
非常好
....................
;ui;普i;uighur;ui;ui;个
在unix网络编程中看到了关于TCP/IP的一些内容,我感觉还是写的不够。正在下载中,一定
下载地址呢