栏目导航: 首页 > 操作系统 > Windows > 内容

命令行下IPSec封锁端口的方法详解

www.hx99.net    时间: 2015-03-11    阅读: 次     整理: 华西安全网

 IPSec

IPSec和TCP/IP筛选是不同的东西。TCP/IP筛选的功能十分有限,远不如IPSec灵活和强大。
 
本文主要介绍,如何在命令行下控制IPSec。
 
XP系统用ipseccmd。
 
2000下用ipsecpol。
 
WIN2003下直接就是IPSEC命令。遗憾的是,它们都不是系统自带的。ipseccmd在xp系统安装盘的SUPPORT\TOOLS\ SUPPORT.CAB中,ipsecpol在2000 Resource Kit里。而且,要使用ipsecpol还必须带上另外两个文件: ipsecutil.dll和text2pol.dll。三个文件一共119KB。
 
winxp命令行下ipsec屏蔽不安全的端口 点此下载IPSECCMD
 
IPSec叫做Internet协议安全。主要的作用是通过设置IPsec规则,提供网络数据包的加密和认证。不过这样高级的功能我无缘消受,只是用到了筛选功能罢了。通过设置规则进行数据包的筛选器,可以屏蔽不安全的端口连接。
 
可以运行gpedit.msc,在Windows设置>>计算机设置>>IP安全设置中进行手工设置。更加简单的方法是使用ipseccmd命令。
 
ipseccmd在WindowsXP中没有默认安装,他在XP系统安装盘的
 
SUPPORT\TOOLS\SUPPORT.CAB中。在Windows2000 中它的名字叫做ipsecpol,默认应该也没有安装,自己找找看吧。使用ipseccmd设置筛选,它的主要作用是设置的筛选规则,为它指定一个名称,同时指定一个策略名称,所谓策略不过是一组筛选规则的集合而已。比如要封闭TCP135端口的数据双向收发,使用命令:
 
 
复制代码 代码示例:
ipseccmd -w REG -p "Block default ports" -r "Block TCP/135" -f *+0:135:TCP -n BLOCK -x
这里我们使用的是静态模式,常用的参数如下:
 
-w reg 表明将配置写入注册表,重启后仍有效。
 
-p 指定策略名称,如果名称存在,则将该规则加入此策略,否则创建一个。
 
-r 指定规则名称。
 
-n 指定操作,可以是BLOCK、PASS或者INPASS,必须大写。
 
-x 激活该策略。
 
-y 使之无效。
 
-o 删除-p指定的策略。
 
其中最关键的是-f。它用来设置的过滤规则,格式为:
A.B.C.D/mask:port=A.B.C.D/mask:port:protocol。其中=前面的是源地址,后面是目的地址。如果使用+,则表明此规则是双向的。IP地址中用*代表任何IP地址,0代表我自己的IP地址。还可以使用通配符,比如144.92.*.* 等效于 144.92.0.0/255.255.0.0。使用ipseccmd /?可以获得它的帮助。
 
如果希望将规则删除,需要先使用-y使之无效,否则删除后它还会持续一段时间。
 
好了,这样就可以使用ipsec根据自己的需要方便得自己定制的筛选规则了。
 
如果有不安全的端口,或者不太喜欢的IP地址,就可以把它们封锁在的大门之外。
 
现在,的机器本身已经基本比较安全了,不必再一接上网线就提心吊胆了。
 
 
复制代码 代码示例:
@ echo off
rem
rem blockport.bat
rem Spirituel@SMTH
rem
 
rem This file use the IPsec filters to block default ports of Windows.
 
rem It can work on Windows 2003 and Windows XP system if there is ipseccmd command on it.
 
rem It can also work on Windows2000, if you chang "ipseccmd" to "ipsecpol" when ipsecpol command could work well.
 
rem You can customize your own policy easily.
 
rem please refer to README.txt for more details.
 
rem NOTICE: NO WARRANTY totally. Please use it carefully.
 
rem
 
rem
 
rem
 
echo [Usage] blockport [ -o or -y ]
 
echo set policy of filter rules and and enable them without parameter.
 
echo -y parameter to make the policy inactive.
 
echo -o parameter to disable and delete the policy.
 
if "%1"=="-y" goto :inactive
 
if "%1"=="-o" goto :delete
 
 @ echo on
 
ipseccmd -w REG -p "Block default ports" -y
 
ipseccmd -w REG -p "Block default ports" -o
 
ipseccmd -w REG -p "Block default ports" -r "Block TCP/135" -f *+0:135:TCP -n BLOCK
 
ipseccmd -w REG -p "Block default ports" -r "Block TCP/139" -f *+0:139:TCP -n BLOCK
 
ipseccmd -w REG -p "Block default ports" -r "Block TCP/445" -f *+0:445:TCP -n BLOCK
 
ipseccmd -w REG -p "Block default ports" -r "Block UDP/123" -f *+0:123:UDP -n BLOCK
 
ipseccmd -w REG -p "Block default ports" -r "Block UDP/135" -f *+0:135:UDP -n BLOCK
 
ipseccmd -w REG -p "Block default ports" -r "Block UDP/137" -f *+0:137:UDP -n BLOCK
 
ipseccmd -w REG -p "Block default ports" -r "Block UDP/138" -f *+0:138:UDP -n BLOCK
 
ipseccmd -w REG -p "Block default ports" -r "Block UDP/139" -f *+0:139:UDP -n BLOCK
 
ipseccmd -w REG -p "Block default ports" -r "Block UDP/445" -f *+0:445:UDP -n BLOCK
 
@ rem ipseccmd -w REG -p "Block default ports" -r "Block ping" -f 0+*::ICMP -n BLOCK
 
ipseccmd -w REG -p "Block default ports" -x
 
@ goto :end
 
∶inactive
 
@ echo on
 
ipseccmd -w REG -p "Block default ports" -y
 
@ goto :end
 
∶delete
 
 @ echo on
 
ipseccmd -w REG -p "Block default ports" -y
 
ipseccmd -w REG -p "Block default ports" -o
 
∶end
 
@ echo off
 
pause
 
IPSec可以通过组策略来控制,但我找遍MSDN,也没有找到相应的安全模板的语法。已经配置好的IPSec策略也不能被导出为模板。所以,组策略这条路走不通。IPSec的设置保存在注册表中(HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\IPSec\Policy\Local),理论上可以通过修改注册表来配置IPSec。但很多信息以二进制形式存放,读取和修改都很困难。相比之下,上传命令行工具更方便。
 
2000下 ipsecpol实例
 
关于ipsecpol和ipseccmd的资料,网上可以找到很多,因此本文就不细说了,只是列举一些实用的例子。
 
在设置IPSec策略方面,ipseccmd命令的语法和ipsecpol几乎完全一样,所以只以ipsecpol为例:
 
1,防御rpc-dcom攻击
 
 
复制代码 代码示例:
ipsecpol -p myfirewall -r rpc-dcom -f *+0:135:tcp *+0:135:udp *+0:137:udp *+0:138:udp *+0:139:tcp *+0:445:tcp *+0:445:udp -n BLOCK -w reg -x
关闭了本地主机的TCP135,139,445和udp135,137,138,445端口。
 
具体含义如下:
-p myfirewall 指定策略名为myfirewall
-r rpc-dcom 指定规则名为rpc-dcom
-f …… 建立7个筛选器。*表示任何地址(源);0表示本机地址(目标);+表示镜像(双向)筛选。详细语法见ipsecpol -?
-n BLOCK 指定筛选x作是“阻塞”。注意,BLOCK必须是大写。
-w reg 将配置写入注册表,重启后仍有效。
-x 立刻激活该策略。
 
2,防止被ping
 
 
复制代码 代码示例:
ipsecpol -p myfirewall -r antiping -f *+0::icmp -n BLOCK -w reg -x
如果名为myfirewall的策略已存在,则antiping规则将添加至其中。
 
注意,该规则同时也阻止了该主机ping别人。
 
3,对后门进行IP限制
假设,在某主机上安装了DameWare Mini Remote Control。
为了保护它不被别人暴破密码或溢出,应该限制对其服务端口6129的访问。
 
 
复制代码 代码示例:
ipsecpol -p myfw -r dwmrc_block_all -f *+0:6129:tcp -n BLOCK -w reg
ipsecpol -p myfw -r dwmrc_pass_me -f 123.45.67.89+0:6129:tcp -n PASS -w reg -x
这样就只有123.45.67.89可以访问该主机的6129端口了。
 
如果是动态IP,应该根据IP分配的范围设置规则。比如:
 
 
复制代码 代码示例:
ipsecpol -p myfw -r dwmrc_block_all -f *+0:6129:tcp -n BLOCK -w reg
ipsecpol -p myfw -r dwmrc_pass_me -f 123.45.67.*+0:6129:tcp -n PASS -w reg -x
这样就允许123.45.67.1至123.45.67.254的IP访问6129端口。
 
在写规则时,应该特别小心,不要把自己也阻塞了。
如果不确定某个规则的效果是否和预想的一样,可以先用计划任务“留下后路”。例如:
 
 
复制代码 代码示例:
c:\>net start schedule
Task Scheduler 服务正在启动 ..
Task Scheduler 服务已经启动成功。
c:\>time /t
12:34
c:\>at 12:39 ipsecpol -p myfw -y -w reg
新加了一项作业,其作业 ID = 1
 
然后,有5分钟时间设置一个myfw策略并测试它。5分钟后计划任务将停止该策略。
 
如果测试结果不理想,就删除该策略。
 
 
复制代码 代码示例:
c:\>ipsecpol -p myfw -o -w reg
注意,删除策略前必须先确保它已停止。不停止它的话,即使删除也会在一段时间内继续生效。持续时间取决于策略的刷新时间,默认是180分钟。
 
如果测试通过,那么就启用它。
 
 
复制代码 代码示例:
c:\>ipsecpol -p myfw -x -w reg
最后说一下查看IPSec策略的办法。
 
对于XP很简单,一条命令搞定——ipseccmd show filters
 
而ipsecpol没有查询的功能。需要再用一个命令行工具netdiag。
它位于2000系统安装盘的SUPPORT\TOOLS\SUPPORT.CAB中。
 
netdiag需要RemoteRegistry服务的支持。所以先启动该服务:
 
 
复制代码 代码示例:
net start remoteregistry
不启动RemoteRegistry就会得到一个错误:
 
 
复制代码 代码示例:
[FATAL] Failed to get system information of this machine.
netdiag这个工具功能十分强大,与网络有关的信息都可以获取!不过,输出的信息有时过于详细,超过命令行控制台cmd.exe的输出缓存,而不是每个远程cmd shell都可以用more命令来分页的。
 
查看ipsec策略的命令是:
 
 
复制代码 代码示例:
netdiag /debug /test:ipsec
然后是一长串输出信息。IPSec策略位于最后。
 
就介绍这些吧,有关ipsec的相关内容,还是很有用的,可以结合防火墙一起使用,效果更佳。
本文来源:华西安全网[http://www.hx99.net]
发表评论】【告诉QQ好友】【错误报告】【加入收藏】【关闭