如何使用 IPSec 阻止特定网络协议和端口
来源:小幽的博客家园
概要
IPSec
首先需要指出的是,IPSec和TCP/IP筛选是不同的东西,大家不要混淆了。TCP/IP筛选的功能十分有限,远不如IPSec灵活和强大。下面就说说如何在命令行下控制IPSec。
XP 系统用ipseccmd,2000下用ipsecpol。遗憾的是,它们都不是系统自带的。ipseccmd在xp系统安装盘的 SUPPORT\TOOLS\SUPPORT.CAB 中,ipsecpol在2000 Resource Kit里。而且,要使用ipsecpol还必须带上另外两个文件:ipsecutil.dll和text2pol.dll。三个文件一共119KB。
IPSec可以通过组策略来控制,但我找遍MSDN,也没有找到相应的安全模板的语法。已经配置好的IPSec策略也不能被导出为模板。所以,组策略这条路走不通。IPSec的设置保存在注册表中
(HKEY_LOCAL_MACHINE \SOFTWARE\Policies\Microsoft\Windows\IPSec\Policy\Local),理论上可以通过修改注册表来配置 IPSec。但很多信息以二进制形式存放,读取和修改都很困难。相比之下,上传命令行工具更方便。
关于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 策略
基于 Windows Server 2003 的计算机
基于 Windows XP 的计算机
基于 Windows 2000 的计算机
创建用于阻止通信的静态策略
基于 Windows Server 2003 和 Windows XP 的计算机
基于 Windows 2000 的计算机
为特定协议和端口添加阻止规则
基于 Windows Server 2003 和 Windows XP 的计算机
基于 Windows 2000 的计算机
为特定协议和端口添加动态阻止策略
基于 Windows Server 2003 和 Windows XP 的计算机
基于 Windows 2000 的计算机
IPSec 筛选规则和组策略
取消指定和删除 IPSec 策略
基于 Windows Server 2003 和 Windows XP 的计算机
基于 Windows 2000 的计算机
将您的新筛选规则应用到所有协议和端口
在计算机重新启动时应用 IPSec 筛选规则
————————————————————————————————————————————–
这篇文章中的信息适用于:
Internet 协议安全 (IPSec) 筛选规则可用于帮助保护基于 Windows 2000、Windows XP 和 Windows Server 2003 的计算机免遭病毒及蠕虫等威胁带来的基于网络的攻击。本文介绍如何为入站和出站网络通信筛选特定的协议和端口组合。本文还包括用于确定当前是否为基于 Windows 2000、Windows XP 或 Windows Server 2003 的计算机指定了 IPSec 策略的步骤、用于创建和指定新的 IPSec 策略的步骤以及用于取消指定和删除 IPSec 策略的步骤。
IPSec 策略可以在本地应用,也可以作为域的组策略的一部分应用于该域的成员。本地 IPSec 策略可以是静态 的(重新启动后一直有效)或动态的(易失效)。静态 IPSec 策略被写入本地注册表并在操作系统重新启动后一直有效。动态 IPSec 策略没有被永久性地写入注册表,并且在操作系统或 IPSec Policy Agent 服务重新启动后被删除。
重要说明:本文包含有关使用 Ipsecpol.exe 编辑注册表的信息。编辑注册表之前,一定要知道在发生问题时如何还原注册表。有关如何备份、还原和编辑注册表的信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986 ( http://support.microsoft.com/kb/256986/ ) Microsoft Windows 注册表说明
注意:IPSec 筛选规则会导致网络程序丢失数据和停止响应网络请求,包括无法对用户进行身份验证。只有当您清楚地了解阻止特定端口对您的环境具有的影响之后,才应将 IPSec 筛选规则作为一种迫不得已的防护措施加以采用。如果您按照本文列出的步骤创建的 IPSec 策略对您的网络程序有不利影响,请参阅本文稍后的“取消指定和删除 IPSec 策略”一节,了解有关如何立即禁用和删除该策略的说明。
确定是否指定了 IPSec 策略
基于 Windows Server 2003 的计算机
在为基于 Windows Server 2003 的计算机创建或指定任何新的 IPSec 策略之前,请确定是否有从本地注册表或通过组策略对象 (GPO) 应用的任何 IPSec 策略。为此,请按照下列步骤操作: 1. 运行 Windows Server 2003 CD 上的 Support\Tools 文件夹中的 Suptools.msi,安装 Netdiag.exe。
2. 打开命令提示符窗口,然后将工作文件夹设置为 C:\Program Files\Support Tools。
3. 运行以下命令以验证尚未为该计算机指定现有 IPSec 策略:
netdiag /test:ipsec
如果没有指定策略,您将收到以下消息:
IP 安全测试。. . . . . . . . : 传递的 IPSec 策略服务是活动的,但是没有指定策略。
基于 Windows XP 的计算机
在为基于 Windows XP 的计算机创建或指定任何新的 IPSec 策略之前,请确定是否有从本地注册表或通过 GPO 应用的任何 IPSec 策略。为此,请按照下列步骤操作: 1. 运行 Windows XP CD 上的 Support\Tools 文件夹中的 Setup.exe,安装 Netdiag.exe。
2. 打开命令提示符窗口,然后将工作文件夹设置为 C:\Program Files\Support Tools。
3. 运行以下命令以验证尚未为该计算机指定现有 IPSec 策略:
netdiag /test:ipsec
如果没有指定策略,您将收到以下消息:
IP 安全测试。. . . . . . . . : 传递的 IPSec 策略服务是活动的,但是没有指定策略。
基于 Windows 2000 的计算机
在为基于 Windows 2000 的计算机创建或指定任何新的 IPSec 策略之前,请确定是否有从本地注册表或通过 GPO 应用的任何 IPSec 策略。为此,请按照下列步骤操作: 1. 运行 Windows 2000 CD 上的 Support\Tools 文件夹中的 Setup.exe,安装 Netdiag.exe。
2. 打开命令提示符窗口,然后将工作文件夹设置为 C:\Program Files\Support Tools。
3. 运行以下命令以验证尚未为该计算机指定现有 IPSec 策略:
netdiag /test:ipsec
如果没有指定策略,您将收到以下消息:
IP 安全测试。. . . . . . . . : 传递的 IPSec 策略服务是活动的,但是没有指定策略。
创建用于阻止通信的静态策略
基于 Windows Server 2003 和 Windows XP 的计算机
对于没有启用本地定义的 IPSec 策略的系统,请创建一个新的本地静态策略,以阻止定向到 Windows Server 2003 和 Windows XP 计算机上的特定协议和特定端口的通信。为此,请按照下列步骤操作: 1. 验证 IPSec Policy Agent 服务已在“服务 MMC”管理单元中启用并启动。
2. 安装 IPSeccmd.exe。IPSeccmd.exe 是 Windows XP Service Pack 2 (SP2) 支持工具的一部分。
注意:IPSeccmd.exe 将在 Windows XP 和 Windows Server 2003 操作系统中运行,但仅有 Windows XP SP2 支持工具包中提供此工具。
有关下载和安装 Windows XP Service Pack 2 支持工具的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
838079 ( http://support.microsoft.com/kb/838079/ ) Windows XP Service Pack 2 支持工具
3. 打开命令提示符窗口,然后将工作文件夹设置为安装 Windows XP Service Pack 2 支持工具的文件夹。
注意:Windows XP SP2 支持工具的默认文件夹是 C:\Program Files\Support Tools。
4. 要创建一个新的本地 IPSec 策略和筛选规则,并将其应用于从任何 IP 地址发送到您要配置的 Windows Server 2003 或 Windows XP 计算机的 IP 地址的网络通信,请使用以下命令。
注意:在以下命令中,Protocol 和 PortNumber 是变量。
IPSeccmd.exe -w REG -p "Block ProtocolPortNumber Filter" -r "Block Inbound ProtocolPortNumber Rule" -f *=0ortNumberrotocol -n BLOCK –x
例如,要阻止从任何 IP 地址和任何源端口发往 Windows Server 2003 或 Windows XP 计算机上的目标端口 UDP 1434 的网络通信,请键入以下命令。此策略可以有效地保护运行 Microsoft SQL Server 2000 的计算机免遭“Slammer”蠕虫的攻击。
IPSeccmd.exe -w REG -p "Block UDP 1434 Filter" -r "Block Inbound UDP 1434 Rule" -f *=0:1434:UDP -n BLOCK -x
以下示例可阻止对 TCP 端口 80 的入站访问,但是仍然允许出站 TCP 80 访问。此策略可以有效地保护运行 Microsoft Internet 信息服务 (IIS) 5.0 的计算机免遭“Code Red”蠕虫和“Nimda”蠕虫的攻击。
IPSeccmd.exe -w REG -p "Block TCP 80 Filter" -r "Block Inbound TCP 80 Rule" -f *=0:80:TCP -n BLOCK -x
注意:-x 开关会立即指定该策略。如果您输入此命令,将取消指定“Block UDP 1434 Filter”策略,并指定“Block TCP 80 Filter”。要添加但不指定该策略,则在键入该命令时不要在结尾带 -x 开关。
5. 要向现有的“Block UDP 1434 Filter”策略(阻止从基于 Windows Server 2003 或 Windows XP 的计算机发往任何 IP 地址的网络通信)添加其他筛选规则,请使用以下命令。
注意:在此命令中,Protocol 和 PortNumber 是变量:
IPSeccmd.exe -w REG -p "Block ProtocolPortNumber Filter" -r "Block Outbound ProtocolPortNumber Rule" -f *0=ortNumber:Protocol -n BLOCK
例如,要阻止从基于 Windows Server 2003 或 Windows XP 的计算机发往任何其他主机上的 UDP 1434 的任何网络通信,请键入以下命令。此策略可以有效地阻止运行 SQL Server 2000 的计算机传播“Slammer”蠕虫。
IPSeccmd.exe -w REG -p "Block UDP 1434 Filter" -r "Block Outbound UDP 1434 Rule" -f 0=*:1434:UDP -n BLOCK
注意:您可以使用此命令向策略中添加任意数量的筛选规则。例如,可以使用此命令通过同一策略阻止多个端口。
6. 步骤 5 中的策略现在将生效,并且在每次重新启动计算机后都会生效。但是,如果以后为计算机指定了基于域的 IPSec 策略,此本地策略将被覆盖并将不再适用。
要验证您的筛选规则是否已成功指定,请在命令提示符下将工作文件夹设置为 C:\Program Files\Support Tools,然后键入以下命令:
netdiag /test:ipsec /debug
正如这些示例中所示,如果同时指定了用于入站通信和出站通信的策略,您将收到以下消息:
IP 安全测试。. . . . . . . . :
传递的本地 IPSec 策略活动:'Block UDP 1434 Filter' IP 安全策略路径:SOFTWARE\Policies\Microsoft\Windows\IPSec\Policy\Local\ ipsecPolicy{D239C599-F945-47A3-A4E3-B37BC12826B9}
有 2 个筛选
无名称
筛选 ID:{5EC1FD53-EA98-4C1B-A99F-6D2A0FF94592}
策略 ID:{509492EA-1214-4F50-BF43-9CAC2B538518}
源地址:0.0.0.0 源掩码:0.0.0.0
目标地址:192.168.1.1 目标掩码:255.255.255.255
隧道地址:0.0.0.0 源端口:0 目标端口:1434
协议:17 TunnelFilter:无
标记:入站阻止
无名称
筛选 ID:{9B4144A6-774F-4AE5-B23A-51331E67BAB2}
策略 ID:{2DEB01BD-9830-4067-B58A-AADFC8659BE5}
源地址:192.168.1.1 源掩码:255.255.255.255
目标地址:0.0.0.0 目标掩码:0.0.0.0
隧道地址:0.0.0.0 源端口:0 目标端口:1434
协议:17 TunnelFilter:无
标记:出站阻止
注意:根据是基于 Windows Server 2003 还是基于 Windows XP 的计算机,IP 地址和图形用户界面 (GUID) 号会有所不同。
基于 Windows 2000 的计算机
对于没有启用本地定义的 IPSec 策略的系统,请按照下列步骤创建一个新的本地静态策略,以阻止定向到未指定现有 IPSec 策略的 Windows 2000 计算机上的特定协议和端口的通信: 1. 验证 IPSec Policy Agent 服务已在“服务 MMC”管理单元中启用并启动。
2. 访问下面的 Microsoft 网站以下载并安装 Ipsecpol.exe:
http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/ipsecpol-o.asp
3. 打开命令提示符窗口,然后将工作文件夹设置为安装 Ipsecpol.exe 的文件夹。
注意:Ipsecpol.exe 的默认文件夹是 C:\Program Files\Resource Kit。
4. 要创建一个新的本地 IPSec 策略和筛选规则,并将其应用于从任何 IP 地址发送到您要配置的 Windows 2000 计算机的 IP 地址的网络通信,请使用以下命令,其中 Protocol 和 PortNumber 是变量:
ipsecpol -w REG -p "Block ProtocolPortNumber Filter" -r "Block Inbound ProtocolPortNumber Rule" -f *=0:PortNumber:Protocol -n BLOCK –x
例如,要阻止从任何 IP 地址和任何源端口发往基于 Windows 2000 的计算机上的目标端口 UDP 1434 的网络通信,请键入以下命令。此策略可以有效地保护运行 Microsoft SQL Server 2000 的计算机免遭“Slammer”蠕虫的攻击。
ipsecpol -w REG -p "Block UDP 1434 Filter" -r "Block Inbound UDP 1434 Rule" -f *=0:1434:UDP -n BLOCK -x
以下示例可阻止对 TCP 端口 80 的入站访问,但是仍然允许出站 TCP 80 访问。此策略可以有效地保护运行 Microsoft Internet 信息服务 (IIS) 5.0 的计算机免遭“Code Red”蠕虫和“Nimda”蠕虫的攻击。
ipsecpol -w REG -p "Block TCP 80 Filter" -r "Block Inbound TCP 80 Rule" -f *=0:80:TCP -n BLOCK -x
注意:-x 开关会立即指定该策略。如果您输入此命令,将取消指定“Block UDP 1434 Filter”策略,并指定“Block TCP 80 Filter”。要添加但不指定该策略,请在键入该命令时不在结尾带 -x 开关。
5. 要向阻止从 Windows 2000 计算机发往任何 IP 地址的网络通信的现有“Block UDP 1434 Filter”策略中添加其他筛选规则,请使用以下命令,其中 Protocol 和 PortNumber 是变量。
ipsecpol -w REG -p "Block ProtocolPortNumber Filter" -r "Block Outbound ProtocolPortNumber Rule" -f *0=:PortNumber:Protocol -n BLOCK
例如,要阻止从基于 Windows 2000 的计算机发往任何其他主机上的 UDP 1434 的任何网络通信,请键入以下命令。此策略可以有效地阻止运行 SQL Server 2000 的计算机传播“Slammer”蠕虫。
ipsecpol -w REG -p "Block UDP 1434 Filter" -r "Block Outbound UDP 1434 Rule" -f 0=*:1434:UDP -n BLOCK
注意:您可以使用此命令向策略中添加任意数量的筛选规则(例如,使用此命令通过同一策略阻止多个端口)。
6. 步骤 5 中的策略现在将生效,并将在每次重新启动计算机后都会生效。但是,如果以后为计算机指定了基于域的 IPSec 策略,此本地策略将被覆盖并将不再适用。要验证您的筛选规则是否已成功指定,请在命令提示符下将工作文件夹设置为 C:\Program Files\Support Tools,然后键入以下命令:
netdiag /test:ipsec /debug
如果同时指定了用于入站通信和出站通信的策略(如这些示例中所示),您将收到以下消息:
IP 安全测试。. . . . . . . . :
传递的本地 IPSec 策略活动:'Block UDP 1434 Filter' IP 安全策略路径:SOFTWARE\Policies\Microsoft\Windows\IPSec\Policy\Local\ ipsecPolicy{D239C599-F945-47A3-A4E3-B37BC12826B9}
有 2 个筛选
无名称
筛选 ID:{5EC1FD53-EA98-4C1B-A99F-6D2A0FF94592}
策略 ID:{509492EA-1214-4F50-BF43-9CAC2B538518}
源地址:0.0.0.0 源掩码:0.0.0.0
目标地址:192.168.1.1 目标掩码:255.255.255.255
隧道地址:0.0.0.0 源端口:0 目标端口:1434
协议:17 TunnelFilter:无
标记:入站阻止
无名称
筛选 ID:{9B4144A6-774F-4AE5-B23A-51331E67BAB2}
策略 ID:{2DEB01BD-9830-4067-B58A-AADFC8659BE5}
源地址:192.168.1.1 源掩码:255.255.255.255
目标地址:0.0.0.0 目标掩码:0.0.0.0
隧道地址:0.0.0.0 源端口:0 目标端口:1434
协议:17 TunnelFilter:无
标记:出站阻止
注意:IP 地址和图形用户界面 (GUID) 号将不同。它们将反映基于 Windows 2000 的计算机的相应内容。
为特定协议和端口添加阻止规则
基于 Windows Server 2003 和 Windows XP 的计算机
如果基于 Windows Server 2003 和 Windows XP 的计算机现有一个本地指定的静态 IPSec 策略,那么,要为该计算机上的特定协议和端口添加阻止规则,请按照下列步骤操作: 1. 安装 IPSeccmd.exe。IPSeccmd.exe 是 Windows XP SP2 支持工具的一部分。
有关下载和安装 Windows XP Service Pack 2 支持工具的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
838079 (http://support.microsoft.com/kb/838079/) Windows XP Service Pack 2 支持工具
2. 识别当前指定的 IPSec 策略的名称。为此,请在命令提示符下键入以下命令:
netdiag /test:ipsec
如果已指定策略,您将收到类似于以下内容的消息:
IP 安全测试。. . . . . . . . : 传递的
本地 IPSec 策略活动:'Block UDP 1434 Filter'
3. 如果已为计算机指定了 IPSec 策略(本地或域),请使用以下命令将其他 BLOCK 筛选规则添加到现有的 IPSec 策略中。
注意:在此命令中,Existing_IPSec_Policy_Name、Protocol 和 PortNumber 是变量。
IPSeccmd.exe -p "Existing_IPSec_Policy_Name" -w REG -r "Block ProtocolPortNumber Rule" -f *=0:PortNumber:Protocol -n BLOCK
例如,要向现有 Block UDP 1434 Filter 中添加一条筛选规则来阻止对 TCP 端口 80 进行的入站访问,请键入以下命令:
IPSeccmd.exe -p "Block UDP 1434 Filter" -w REG -r "Block Inbound TCP 80 Rule" -f *=0:80:TCP -n BLOCK
基于 Windows 2000 的计算机
如果基于 Windows 2000 的计算机现有一个本地指定的静态 IPSec 策略,那么,要为该计算机上的特定协议和端口添加阻止规则,请按照下列步骤操作: 1. 访问下面的 Microsoft 网站以下载并安装 Ipsecpol.exe:
http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/ipsecpol-o.asp
2. 识别当前指定的 IPSec 策略的名称。为此,请在命令提示符下键入以下命令:
netdiag /test:ipsec
如果已指定策略,您将收到类似于以下内容的消息:
IP 安全测试。. . . . . . . . : 传递的
本地 IPSec 策略活动:'Block UDP 1434 Filter'
3. 如果已为计算机指定了 IPSec 策略(本地或域),请使用以下命令将其他 BLOCK 筛选规则添加到现有 IPSec 策略中,其中 Existing_IPSec_Policy_Name、Protocol 和 PortNumber 是变量:
ipsecpol -p "Existing_IPSec_Policy_Name" -w REG -r "Block ProtocolPortNumber Rule" -f *=0:PortNumber:Protocol -n BLOCK
例如,要向现有 Block UDP 1434 Filter 中添加一条筛选规则来阻止对 TCP 端口 80 进行的入站访问,请键入以下命令:
ipsecpol -p "Block UDP 1434 Filter" -w REG -r "Block Inbound TCP 80 Rule" -f *=0:80:TCP -n BLOCK
为特定协议和端口添加动态阻止策略
基于 Windows Server 2003 和 Windows XP 的计算机
有时您可能需要暂时阻止对特定端口的访问。例如,在可以安装修复程序之前,或者在已经为计算机指定基于域的 IPSec 策略时,您就可能需要阻止特定的端口。要使用 IPSec 策略暂时阻止对 Windows Server 2003 或 Windows XP 计算机上的某个端口的访问,请按照下列步骤操作: 1. 安装 IPSeccmd.exe。IPSeccmd.exe 是 Windows XP Service Pack 2 支持工具的一部分。
注意:IPSeccmd.exe 将在 Windows XP 和 Windows Server 2003 操作系统中运行,但仅有 Windows XP SP2 支持工具包中提供此工具。
有关如何下载和安装 Windows XP Service Pack 2 支持工具的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
838079 ( http://support.microsoft.com/kb/838079/ ) Windows XP Service Pack 2 支持工具
2. 要添加一个动态 BLOCK 筛选以阻止从任何 IP 地址发往您系统的 IP 地址和目标端口的所有数据包,请在命令提示符下键入以下命令。
注意:在以下命令中,Protocol 和 PortNumber 是变量。
IPSeccmd.exe -f [*=0:PortNumber:Protocol]
注意:此命令可动态创建阻止筛选。只要 IPSec Policy Agent 服务在运行,该策略就会保持指定状态。如果重新启动 IPSec Policy Agent 服务或重新启动计算机,此策略将丢失。如果要在每次重新启动系统时动态重新指定 IPSec 筛选规则,请创建一个启动脚本以重新应用该筛选规则。如果您要永久性地应用此筛选,请将该筛选配置为静态 IPSec 策略。“IPSec 策略管理 MMC”管理单元提供用于管理 IPSec 策略配置的图形用户界面。如果已应用基于域的 IPSec 策略,netdiag /test:ipsec /debug 命令仅在由具有域管理员凭据的用户执行时才会显示筛选详细信息。
基于 Windows 2000 的计算机
有时您可能需要暂时阻止特定端口(例如,在可以安装修复程序之前,或者在已经为计算机指定基于域的 IPSec 策略时)。要使用 IPSec 策略暂时阻止对 Windows 2000 计算机上的某个端口的访问,请按照下列步骤操作: 1. 访问下面的 Microsoft 网站以下载并安装 Ipsecpol.exe:
http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/ipsecpol-o.asp
2. 要添加一个动态 BLOCK 筛选以阻止从任何 IP 地址发往您系统的 IP 地址和目标端口的所有数据包,请在命令提示符下键入以下命令,其中 Protocol 和 PortNumber 是变量:
ipsecpol -f [*=0:PortNumber:Protocol]
注意:此命令可动态创建阻止筛选,并且只要 IPSec Policy Agent 服务在运行,该策略就会保持指定状态。如果重新启动 IPSec 服务或重新启动计算机,此设置将丢失。如果要在每次重新启动系统时动态重新指定 IPSec 筛选规则,请创建一个启动脚本以重新应用该筛选规则。如果您要永久性地应用此筛选,请将该筛选配置为静态 IPSec 策略。“IPSec 策略管理 MMC”管理单元提供用于管理 IPSec 策略配置的图形用户界面。如果已应用基于域的 IPSec 策略,则 netdiag /test:ipsec /debug 命令可能仅在由具有域管理员凭据的用户执行时才会显示筛选详细信息。Netdiag.exe 的更新版本将在 Windows 2000 Service Pack 4 中提供,本地管理员可以使用它来查看基于域的 IPSec 策略。
IPSec 筛选规则和组策略
对于通过组策略设置来指定 IPSec 策略的环境,必须更新整个域的策略才能阻止特定的协议和端口。在成功配置组策略 IPSec 设置后,您必须强制刷新域中所有基于 Windows Server 2003、Windows XP 和 Windows 2000 的计算机上的组策略设置。为此,请使用以下命令:
secedit /refreshpolicy machine_policy
IPSec 策略更改将在两个不同轮询间隔之一的间隔内检测到。对于一个新指定的、应用于 GPO 的 IPSec 策略,该 IPSec 策略将在为组策略轮询间隔设置的时间内应用于客户端,或者当在客户机上运行 secedit /refreshpolicy machine_policy 命令时应用于客户端。如果已为 GPO 指定了 IPSec 策略并且正在将新的 IPSec 筛选或规则添加到现有策略中,secedit 命令将不会使 IPSec 识别发生更改。在这种情况下,系统将在基于 GPO 的现有 IPSec 策略自己的轮询间隔内检测到对该 IPSec 策略的修改。此时间间隔是在该 IPSec 策略的常规选项卡上指定的。您还可以通过重新启动 IPSec Policy Agent 服务来强制刷新 IPSec 策略设置。如果 IPSec 服务停止或重新启动,由 IPSec 保护的通讯将中断并将需要几秒钟的时间才能恢复。这可能导致程序连接被断开,对于主动传输大量数据的连接更是如此。当 IPSec 策略只应用于本地计算机时,您不必重新启动该服务。
取消指定和删除 IPSec 策略
基于 Windows Server 2003 和 Windows XP 的计算机
? 具有本地定义的静态策略的计算机 1. 打开命令提示符窗口,然后将工作文件夹设置为安装 Ipsecpol.exe 的文件夹。
2. 要取消指定您以前创建的筛选,请使用以下命令:
IPSeccmd.exe -w REG -p "Block ProtocolPortNumber Filter" –y
例如,要取消指定以前创建的 Block UDP 1434 Filter,请使用以下命令:
IPSeccmd.exe -w REG -p "Block UDP 1434 Filter" -y
3. 要删除您创建的筛选,请使用以下命令:
IPSeccmd.exe -w REG -p "Block ProtocolPortNumber Filter" -r "Block ProtocolPortNumber Rule" –o
例如,要删除“Block UDP 1434 Filter”筛选和以前创建的两个规则,请使用以下命令:
IPSeccmd.exe -w REG -p "Block UDP 1434 Filter" -r "Block Inbound UDP 1434 Rule" -r "Block Outbound UDP 1434 Rule" -o
具有本地定义的动态策略的计算机
如果通过使用 net stop policyagent 命令停止 IPSec Policy Agent 服务,将取消应用动态 IPSec 策略。要删除以前使用的特定命令而不停止 IPSec Policy Agent 服务,请按照下列步骤操作: 1. 打开命令提示符窗口,然后将工作文件夹设置为安装 Windows XP Service Pack 2 支持工具的文件夹。
2. 键入下面的命令:
IPSeccmd.exe –u
注意:您还可以重新启动 IPSec Policy Agent 服务以清除所有动态指定的策略。
基于 Windows 2000 的计算机
? 具有本地定义的静态策略的计算机 1. 打开命令提示符窗口,然后将工作文件夹设置为安装 Ipsecpol.exe 的文件夹。
2. 要取消指定您以前创建的筛选,请使用以下命令:
ipsecpol -w REG -p "Block ProtocolPortNumber Filter" –y
例如,要取消指定以前创建的 Block UDP 1434 Filter,请使用以下命令:
ipsecpol -w REG -p "Block UDP 1434 Filter" -y
3. 要删除您创建的筛选,请使用以下命令:
ipsecpol -w REG -p "Block ProtocolPortNumber Filter" -r "Block ProtocolPortNumber Rule" –o
例如,要删除“Block UDP 1434 Filter”筛选和以前创建的两个规则,请使用以下命令:
ipsecpol -w REG -p "Block UDP 1434 Filter" -r "Block Inbound UDP 1434 Rule" -r "Block Outbound UDP 1434 Rule" -o
具有本地定义的动态策略的计算机
如果通过使用 net stop policyagent 命令停止 IPSec Policy Agent 服务,将取消应用动态 IPSec 策略。但是,要删除以前使用的特定命令而不停止 IPSec Policy Agent 服务,请按照下列步骤操作: 1. 打开命令提示符窗口,然后将工作文件夹设置为安装 Ipsecpol.exe 的文件夹。
2. 键入下面的命令:
Ipsecpol –u
注意:您还可以重新启动 IPSec Policy Agent 服务以清除所有动态指定的策略。
将您的新筛选规则应用到所有协议和端口
默认情况下,在 Microsoft Windows 2000 和 Microsoft Windows XP 中,IPSec 使得广播、多路广播、RSVP、IKE 和 Kerberos 通信免于受到任何筛选和身份验证的限制。有关这些豁免的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
253169 ( http://support.microsoft.com/kb/253169/ ) IPSec 可以保护的和无法保护的通信
当 IPSec 只用于允许和阻止通信时,可以通过更改注册表值来删除对 Kerberos 和 RSVP 协议的豁免。有关如何执行此操作的完整说明,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
254728 ( http://support.microsoft.com/kb/254728/ ) IPSec 不保护域控制器之间的 Kerberos 通信
通过按照这些说明进行操作,即使攻击者将他们的源端口设置为 Kerberos 端口 TCP/UDP 88,您也可以保护 UDP 1434。通过删除 Kerberos 豁免,现在可以将 Kerberos 数据包与 IPSec 策略中的所有筛选进行匹配。因此,可以在 IPSec 内部对 Kerberos 进行保护(阻止或允许)。这样,如果 IPSec 筛选与发往域控制器 IP 地址的 Kerberos 通信匹配,您可能必须更改 IPSec 策略设计来添加新的筛选,以便允许发往各个域控制器 IP 地址的 Kerberos 通信(如果您没有按照知识库文章 254728 的说明使用 IPSec 来保护域控制器之间的所有通信)。
在计算机重新启动时应用 IPSec 筛选规则
所有 IPSec 策略均依赖于要指定的 IPSec Policy Agent 服务。当基于 Windows 2000 的计算机正在启动过程中时,IPSec Policy Agent 服务未必是第一个启动的服务。这样,计算机的网络连接可能会在某个很短的时间内容易受到病毒或蠕虫的攻击。这种情况仅在满足以下条件时才会发生: IPSec Policy Agent 服务尚未完全启动并指定所有策略,存在潜在漏洞的服务便已成功启动并开始接受连接。
IPSec 确实变态