您的位置:首页 > 编程语言

采用IPSec策略编程实现屏蔽IP功能

2013-04-08 20:56 267 查看
Windows下实现屏蔽IP的功能,很多人可能会联想到使用一些复杂的技术来解决,比如NDIS中间层驱动,甚至NDIS钩子驱动。但这些技术太过深奥,只有精通Windows编程的人才玩得转。如果你对Windows编程不是特别了解又没有太多时间,或者你根本一窍不通,那么你可以试试采用Windows网络配置命令netsh来解决这些问题。

本文是采用IPSec策略来实现此功能。Windows 2000/XP/2003平台最早就提供了这个工具,考虑到兼容性的问题Windows之后的版本同样也提供了,只是在此基础上还增加了新的功能advfirewall(本文不予探讨,有兴趣的可以点击链接查看)。

IPSec策略的配置有两种方法,前提是IPSec服务已经启动

运行secpol.msc,进入IP安全策略再进一步定制安全策略,这里不详述。

进入命令行下执行netsh ipsec命令,配置IPSec策略。PS:netsh ipsec命令不是很复杂,尽管官方文档特别长,看起来有点吓人。

先介绍一下IPSec策略的基本组成:


一个IPSec策略通常由一个或者多个规则组成;每个规则由一个IP筛选器列表和一个对应的筛选器操作组成;这个筛选器列表和筛选器可以是系统本身所没有的,如果没有则需要自行建立,而一个筛选器又由一个或多个筛选器组成。


因此配置IPSec的时候必须要分步进行。规则由筛选器列表和筛选器操作构成,而且存放在策略里,策略器由策略器列表来存储。这样就决定了一个步骤:


建立空的安全策略 -> 建立筛选器列表 -> 建立筛选器操作 -> 指派策略


看一下下面的例子就明白了,这是我从别人博客上拿过来的例子:

'建立一个名字叫XBLUE的安全策略先
netsh ipsec static add policy name=XBLUE

'建立一个ip筛选器,指定192.168.1.2
netsh ipsec static add filterlist name=denyip
netsh ipsec static add filter filterlist=denyip srcaddr=192.168.1.2 dstaddr=Me dstport=3389 protocol=TCP

'建立一个筛选器操作
netsh ipsec static add filteraction name=denyact action=block

'加入规则到安全策略XBLUE
netsh ipsec static add rule name=kill3389 policy=XBLUE filterlist=denyip filteraction=denyact

'激活这个策略
netsh ipsec static set policy name=XBLUE assign=y

'把安全策略导出
netsh ipsec static exportpolicy d:\ip.ipsec

'删除所有安全策略
netsh ipsec static del all

'把安全策略导入
netsh ipsec static importpolicy d:\ip.ipsec

'激活这个策略
netsh ipsec static set policy name=策略名称 assign=y


大家可以根据这个例子在命令行里面尝试,同时你也可以在命令行下查看命令参数的说明,很方便。

有了前面的这些做铺垫,后面的程序就好写了。我要实现的功能很简单,可以指定单个IP地址、单个IP地址和端口号或存有IP地址信息的文件(每行可以是单个IP地址或者单个IP地址和端口号)为输入。如果地址没有给定端口号,将该地址屏蔽;如果地址给定了端口号,屏蔽该地址对应端口的TCP和UDP协议。

在实现程序前,编写了两个批处理脚本用来支撑本程序的运行:备份本地安全策略.bat和还原本地安全策略.bat。简而言之就是在程序运行前先备份,必要时还原即可。

ip.txt

118.166.7.250:11638
75.40.16.53
117.30.189.209:19122


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: