采用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的时候必须要分步进行。规则由筛选器列表和筛选器操作构成,而且存放在策略里,策略器由策略器列表来存储。这样就决定了一个步骤:
建立空的安全策略 -> 建立筛选器列表 -> 建立筛选器操作 -> 指派策略
看一下下面的例子就明白了,这是我从别人博客上拿过来的例子:
大家可以根据这个例子在命令行里面尝试,同时你也可以在命令行下查看命令参数的说明,很方便。
有了前面的这些做铺垫,后面的程序就好写了。我要实现的功能很简单,可以指定单个IP地址、单个IP地址和端口号或存有IP地址信息的文件(每行可以是单个IP地址或者单个IP地址和端口号)为输入。如果地址没有给定端口号,将该地址屏蔽;如果地址给定了端口号,屏蔽该地址对应端口的TCP和UDP协议。
在实现程序前,编写了两个批处理脚本用来支撑本程序的运行:备份本地安全策略.bat和还原本地安全策略.bat。简而言之就是在程序运行前先备份,必要时还原即可。
ip.txt
本文是采用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
相关文章推荐
- windos 采用IPSec策略编程实现屏蔽IP功能
- Ipsec:ip安全行策略来实现数据库加密.二十
- Cookie编程,实现自动登录功能
- 艾伟:基于.NET平台的Windows编程实战(六)—— 题目管理功能的实现
- C#实现指纹识别功能编程
- C#实现ip 地址过滤功能
- 设备中如何实现类似gopro给iphone分配ip但是不修改dns的功能
- 木马编程DIY第12篇之文件传输 2功能实现
- Android下的应用编程——用HTTP协议实现文件上传功能
- nginx 配置geoip 屏蔽地区城市,实现判断国家IP跳转
- Android编程使用Service实现Notification定时发送功能示例
- C#实现更改IP功能源码
- 屏蔽FLEX右键菜单以及实现自定义的FLEX右键功能
- C#实现更改IP功能源码
- Android编程滑动效果之Gallery+GridView实现图片预览功能(附demo源码下载)
- Qt中采用多线程实现Socket编程-跨线程调用问题
- IP XFRM配置:利用linux kernel自带的IPSec实现,手动配置IPSec
- java Web项目中,利用其过滤功能,实现访问者每次访问服务器时,记录访问者的IP,访问时间,Url等信息,并保存到文件的操作
- Android编程实现添加低电流提醒功能的方法