如何使用IPSec 阻止特定网络协议和端口

原创 2005年02月27日 03:52:00
 

来源:http://support.microsoft.com/

概要

Internet 协议安全 (IPSec) 筛选规则可用于帮助保护基于 Windows 2000 的计算机免遭病毒及蠕虫等威胁带来的、基于网络的攻击。本文介绍如何为入站和出站网络通信筛选特定的协议和端口组合。本文还包括用于确定当前是否为基于 Windows 2000 的计算机指定了 IPSec 策略的步骤、用于创建和指定新的 IPSec 策略的步骤以及用于取消指定和删除 IPSec 策略的步骤。

更多信息

IPSec 策略可以在本地应用,也可以作为域的组策略的一部分应用于该域的成员。本地 IPSec 策略可以是静态的(重新启动后一直有效),也可以是动态的(易失效)。静态 IPSec 策略被写入本地注册表并在操作系统重新启动后一直有效。动态 IPSec 策略没有被永久性地写入注册表,并且在操作系统或 IPSec Policy Agent 服务重新启动后被删除。

重要说明:本文包含有关使用 Ipsecpol.exe 编辑注册表的信息。编辑注册表之前,一定要知道在发生问题时如何还原注册表。有关如何备份、还原和编辑注册表的信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986 Microsoft Windows 注册表说明
注意:IPSec 筛选规则会导致网络程序丢失数据和停止响应网络请求,包括无法对用户进行身份验证。只有当您清楚地了解阻止特定端口对您的环境具有的影响之后,才应将 IPSec 筛选规则作为一种迫不得已的防护措施加以采用。如果您按照本文列出的步骤创建的 IPSec 策略对您的网络程序有不利影响,请参阅本文稍后的“取消指定和删除 IPSec 策略”一节,了解有关如何立即禁用和删除该策略的说明。

确定是否已指定 IPSec 策略

在为基于 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 Security test .. . . . . . . . : Passed IPSec policy service is active, but no policy is assigned.

创建一个用于阻止通信的静态策略

对于没有启用本地定义的 IPSec 策略的系统,请按照下列步骤创建一个新的本地静态策略,以阻止发送到基于 Windows 2000 的、没有指定现有 IPSec 策略的计算机上的特定协议和端口的通信:
1. 验证 IPSec Policy Agent 服务是否已在“服务 MMC”管理单元中启用并启动。
2. 访问下面的 Microsoft Web 站点以下载并安装 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 地址的网络通信,请使用以下语法(其中协议端口号 是变量):
ipsecpol -w REG -p "Block 协议端口号 Filter" -r "Block Inbound 协议端口号 Rule" -f *=0:端口号:协议 -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”策略中添加其他筛选规则,请使用以下语法(其中协议端口号 是变量):
ipsecpol -w REG -p "Block 协议端口号 Filter" -r "Block Outbound 协议端口号 Rule" -f *0=:端口号:协议 -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 Security test .. . . . . . . . :
Passed Local IPSec Policy Active:'Block UDP 1434 Filter' IP Security Policy Path:SOFTWARE/Policies/Microsoft/Windows/IPSec/Policy/Local/ipsecPolicy{D239C599-F945-47A3-A4E3-B37BC12826B9}

There are 2 filters
No Name
Filter Id:{5EC1FD53-EA98-4C1B-A99F-6D2A0FF94592}
Policy Id:{509492EA-1214-4F50-BF43-9CAC2B538518}
Src Addr :0.0.0.0 Src Mask :0.0.0.0
Dest Addr :192.168.1.1 Dest Mask :255.255.255.255
Tunnel Addr :0.0.0.0 Src Port :0 Dest Port :1434
Protocol:17 TunnelFilter:No
Flags :Inbound Block
No Name
Filter Id:{9B4144A6-774F-4AE5-B23A-51331E67BAB2}
Policy Id:{2DEB01BD-9830-4067-B58A-AADFC8659BE5}
Src Addr :192.168.1.1 Src Mask :255.255.255.255
Dest Addr :0.0.0.0 Dest Mask :0.0.0.0
Tunnel Addr :0.0.0.0 Src Port :0 Dest Port :1434
Protocol:17 TunnelFilter:No
Flags :Outbound Block

注意:IP 地址和图形用户界面 (GUID) 号将不同。它们将反映基于 Windows 2000 的计算机的相应内容。

为特定协议和端口添加阻止规则

要为基于 Windows 2000 的、具有现有本地指定的静态 IPSec 策略的计算机上的特定协议和端口添加阻止规则,请按照下列步骤操作:
1. 访问下面的 Microsoft Web 站点以下载和安装 Ipsecpol.exe: http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/ipsecpol-o.asp
2. 识别当前指定的 IPSec 策略的名称。为此,请在命令提示符处键入以下命令:
netdiag /test:ipsec
如果已指定策略,您将收到类似于以下内容的消息:
IP Security test .. . . . . . . . : Passed
Local IPSec Policy Active:'Block UDP 1434 Filter'
3. 如果已为计算机(本地或域)指定了 IPSec 策略,请使用以下语法将其他 BLOCK 筛选规则添加到现有 IPSec 策略中(其中现有 IPSec 策略名称协议端口号 是变量):
ipsecpol -p "现有 IPSec 策略名称" -w REG -r "Block 协议端口号 Rule" -f *=0:端口号:协议 -n BLOCK
例如,要将用于阻止对 TCP 端口 80 进行入站访问的筛选规则添加到现有的“Block UDP 1434 Filter”中,请键入以下命令:
ipsecpol -p "Block UDP 1434 Filter" -w REG -r "Block Inbound TCP 80 Rule" -f *=0:80:TCP -n BLOCK

为特定协议和端口添加动态阻止策略


在有些情况下,您可能希望暂时阻止特定的端口(例如,在可以安装修复程序之前,或者在已经为计算机指定了基于域的 IPSec 策略时)。要使用 IPSec 策略暂时阻止对基于 Windows 2000 的计算机上的某个端口进行的访问,请按照下列步骤操作:
1. 访问下面的 Microsoft Web 站点以下载并安装 Ipsecpol.exe: http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/ipsecpol-o.asp
2. 要添加一个动态 BLOCK 筛选以阻止从任何 IP 地址发往您系统的 IP 地址和目标端口的所有数据包,请在命令提示符处键入以下命令(其中协议端口号 是变量):
ipsecpol -f [*=0:端口号:协议]
注意:此命令可动态创建该阻止筛选,并且只要 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 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 策略

对于使用本地定义的静态策略的计算机
1. 打开命令提示窗口,然后将工作文件夹设置为您在其中安装了 Ipsecpol.exe 的文件夹。
2. 要取消指定您以前创建的筛选,请使用以下语法:
ipsecpol -w REG -p "Block 协议端口号 Filter" –y
例如,要取消指定您以前创建的“Block UDP 1434 Filter”,请使用以下命令:
ipsecpol -w REG -p "Block UDP 1434 Filter" -y
3. 要删除您创建的筛选,请使用以下语法:
ipsecpol -w REG -p "Block 协议端口号 Filter" -r "Block 协议端口号 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 Traffic That Can--and Cannot--Be Secured by IPSec
当 IPSec 只用于允许和阻止通信时,可以通过更改注册表值来删除对 Kerberos 和 RSVP 协议的豁免。有关如何执行此操作的完整说明,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
254728 IPSec Does Not Secure Kerberos Traffic Between Domain Controllers
通过按照这些说明进行操作,即使攻击者将他们的源端口设置为 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 服务完全启动并指定了所有策略之前,存在潜在漏洞服务便成功启动并开始接受连接时,才会发生这种情况。

这篇文章中的信息适用于:
Microsoft Windows 2000 Professional Edition
Microsoft Windows 2000 Server
Microsoft Windows 2000 Advanced Server
Microsoft Windows 2000 Datacenter Server
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

网络协议端口号说明

一些常用端口列表 计算机常用端口一览表: 1 传输控制协议端口服务多路开关选择器 2 compressnet 管理实用程序 3 压缩进程 5 远程作业登录 7 回显(Echo) 9 ...

网络协议中端口类型及分类

端口:在网络技术中,端口有两层意思:一个是物理端口,即物理存在的端口,如:集线器、路由器、交换机、ADSL Modem等用 于连接其他设备的端口;另一个就是逻辑端口,用于区分服务的端口,一般用于TCP...

常见网络协议端口号整理

端口号 整理

常见网络端口 和 常见网络协议

常见网络端口 端口:0   服务:Reserved   说明:通常用于分析操作系统。 端口:1   服务:tcpmux   说明:这显示有人在寻找SGI Irix机器。 ...

网络协议分析工具Ethereal的使用

大学时计算机网络课的实验报告,当时提不起兴趣,今天看来还挺有用的。可以学习下怎样抓数据包,然后分析程序的通信协议。 一:学习使用网络协议分析工具Ethereal的方法,并用它来分析一些协...
  • dc_726
  • dc_726
  • 2011-11-28 21:21
  • 3129

java之网络协议初探和Socket的使用实践

socket套接字,果断会联想到tcp/ip和udp协议,作为一个安卓程序员我也是泪崩了,对网络的东西还真的有待加强,对协议什么的讲清楚还是很有难度啊。     TCP/IP、Http、Socke...

《从零开始搭建游戏服务器》使用Protobuf定义网络协议

引言: 之前我们说过使用Protobuff编解码方式来对网络通信数据进行编码,也就是可以用这种方式来定义通信协议,那么具体要怎么做呢?关于此工具的详细资料和使用操作可以参考我之前写过的博客:Un...

PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析

在上一节,笔者罗列的学习网络编程应该了解或掌握的网络基础知识,这其中直接和编程相关的是网络协议。抓包分析,一直都是学习网络协议过程中,理论联系实践的最好方式,而目前最常用的抓包工具就是Wireshar...

Socket网络协议简单介绍和使用

Socket就是为网络服务提供的一种机制在Unix中,网络既是Socket,并不局限在TCP/UDP ,Socket可以用于自定义协议,例如:QQ通信的两端都是Socket网络通信其实就是Socket...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)