IPSec
IPSec和TCP/IP筛选是不同的东西。TCP/IP筛选的功能十分有限,远不如IPSec灵活和强大。
本文主要介绍,如何在命令行下控制IPSec。
XP系统用ipseccmd。
2000下用ipsecpol。
WIN2003下直接就是IPSEC命令。遗憾的是,它们都不是系统自带的。ipseccmd在xp系统安装盘的SUPPORTTOOLS 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系统安装盘的
SUPPORTTOOLSSUPPORT.CAB中。在Windows2000 中它的名字叫做ipsecpol,默认应该也没有安装,自己找找看吧。使用ipseccmd设置筛选,它的主要作用是设置的筛选规则,为它指定一个名称,同时指定一个策略名称,所谓策略不过是一组筛选规则的集合而已。比如要封闭TCP135端口的数据双向收发,使用命令:
这里我们使用的是静态模式,常用的参数如下:
-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_MACHINESOFTWAREPoliciesMicrosoftWindowsIPSecPolicyLocal),理论上可以通过修改注册表来配置IPSec。但很多信息以二进制形式存放,读取和修改都很困难。相比之下,上传命令行工具更方便。