如何在 Windows Server 2003 和 Windows 2000 Server 中禁用 DNS 服务器服务的远程管理

文章翻译 文章翻译
文章编号: 936263 - 查看本文应用于的产品
重要说明:本文包含有关如何修改注册表的信息。修改注册表之前,一定要先对其进行备份,并且一定要知道在出现问题时如何还原注册表。有关如何备份、还原和修改注册表的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986 Microsoft Windows 注册表说明
展开全部 | 关闭全部

本文内容

简介

本文描述如何禁用运行以下操作系统之一的 DNS 服务器的 DNS 远程管理:
  • Microsoft Windows Server 2003
  • Microsoft Windows 2000 Server
您可以使用本文提及的方法增强组织中运行 DNS 服务器服务的计算机的安全。

有关影响 Windows Server 2003 和 Windows 2000 Server 中 DNS 服务器服务的问题的更多信息,请访问下面的 Microsoft 网站:
http://www.microsoft.com/china/technet/security/Bulletin/MS07-029.mspx

更多信息

概述

默认情况下,DNS 服务器服务允许通过使用许多接口进行远程管理。DNS 服务器服务启动时,会绑定到临时范围中的动态端口。此端口由 DNS Microsoft 管理控制台 (MMC) 管理单元和 DNS Windows Management Instrumentation (WMI) 提供程序使用。您可以使用下面的注册表项来控制 DNS 服务器服务是否允许远程管理:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters


数值名称:RpcProtocol
数值类型:REG_DWORD
数值数据:0x4
下列数值可用于 RpcProtocol 注册表项:
  • 0x1
    该值对应于 DNS_RPC_USE_TCPIP 设置
  • 0x2
    该值对应于 DNS_RPC_USE_NAMED_PIPE 设置
  • 0x4
    该值对应于 DNS_RPC_USE_LPC 设置
注意:值 0x4 会将 DNS RPC 接口限制为仅供本地过程调用。这样将仅允许本地管理。

禁用远程管理的影响

将 RpcProtocol 注册表项设置为 0x4 时,会禁用 DNS 服务器服务的远程管理。因此无法使用 RPC 或 Windows Management Instrumentation (WMI) 来管理 DNS 服务器。这种情况下,远程位置的 DNS 服务器管理工具将不再运行。但是,您仍然可以使用本地管理工具管理 DNS 服务器,而且仍然可以通过使用终端服务连接来执行 DNS 服务器的远程管理。

将 RpcProtocol 设置为 0x4 不会影响 DNS 查询、DNS 动态更新、DNS 区域复制等功能。

注意:如果满足以下条件,则 DNS 服务器服务的本地管理和配置可能不起作用:
  • 要管理的服务器的主机名包含 15 个字符。
  • 您使用主机名来选择服务器。
要解决此问题,请在使用 DNS 服务器管理工具管理计算机时,指定该计算机的完全限定域名 (FQDN)。

禁用 DNS 服务器服务的远程管理

警告:如果使用注册表编辑器或其他方法错误地修改了注册表,则可能会出现严重问题。这些问题可能需要重新安装操作系统才能解决。Microsoft 不能保证可以解决这些问题。修改注册表需要您自担风险。

要通过运行 DNS 服务器服务的计算机的 RPC 功能禁用远程管理,请按照下列步骤操作:
  1. 依次单击“开始”和“运行”,键入 Regedit,然后单击“确定”。
  2. 找到并单击下面的注册表子项:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters
  3. 在“编辑”菜单上,指向“新建”,然后单击“DWORD 值”。
  4. 在“新值 #1”框中,键入 RpcProtocol,然后按 Enter。
  5. 右键单击“RpcProtocol”,然后单击“修改”。
  6. 在“数值数据”框中,键入 4,然后单击“确定”。
  7. 退出注册表编辑器,然后重新启动 DNS 服务器服务。要重新启动 DNS 服务器服务,请按照以下步骤操作:
    1. 依次单击“开始”和“运行”,键入 cmd,然后单击“确定”。
    2. 在命令提示符下,键入以下命令并按 Enter:
      net stop dns && net start dns

将 RpcProtocol 注册表值部署到多台计算机

您可以使用脚本来部署 RpcProtocol 注册表值。这样您就可以更轻松地在多台计算机上禁用 DNS 服务器服务的远程管理。为此,请按照下列步骤操作:
  1. 使用具有修改 DNS 服务器权限的帐户登录到域。例如,以域管理员身份登录。
  2. 创建所有 DNS 服务器的列表。为此,请在命令提示符处运行以下命令:
    dsquery * -filter "(servicePrincipalName=DNS*)" -attr dNSHostName -l > dns_servers.txt
    如果需要,手动编辑创建的 dns_servers.txt 文件以指定所有 DNS 服务器。例如,此命令仅捕获配置为 DNS 服务器的域控制器。因此,必须手动添加配置为成员服务器的 DNS 服务器。

    注意:可以使用 DNS 管理单元中每个区域的“DNS zone 属性”对话框的“名称服务器”选项卡,来确定要添加到此列表中的 DNS 服务器的名称。
  3. 如果需要,在命令提示符处使用 cd 命令转到保存 dns_servers.txt 文件的目录。
  4. 键入下面的命令,然后按 Enter:
    for /f %i in (dns_servers.txt) do reg add \\%i\HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters /v RpcProtocol /t REG_DWORD /d 4 /f
    此命令会同时添加 RpcProtocol 注册表项和值 0x4。
  5. 停止所有计算机上的 DNS 服务器服务。为此,请键入以下命令,然后按 Enter:
    for /f %i in (dns_servers.txt) do sc \\%i stop DNS
  6. 启动所有计算机上的 DNS 服务器服务。为此,请键入以下命令,然后按 Enter:
    for /f %i in (dns_servers.txt) do sc \\%i start DNS

验证多台计算机上是否设置了 RpcProtocol 注册表项

要查询服务器和验证是否设置了 RpcProtocol 注册表项,请按照下列步骤操作:
  1. 登录到已设置 RpcProtocol 注册表项的 DNS 服务器。
  2. 将以下脚本复制到一个文本文件,然后将该文件命名为 Dnsquery.cmd:
    Echo Comparing registry value for: > dns_errors.txt echo HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters >> dns_errors.txt 
    echo Data Value for "RpcProtocol" >> dns_errors.txt echo. >> dns_errors.txt echo. >> dns_errors.txt 
    Echo Errorlevel 1 - Failed to compare registry values >> dns_errors.txt 
    Echo Errorlevel 2 - Reg values compared are different >> dns_errors.txt echo. >> dns_errors.txt 
    echo. >> dns_errors.txt echo ===================================================== >> dns_errors.txt 
    set _MachineName= 
    for /f %%i in (dns_servers.txt) do ( call :TEST %%i )
    :TEST
    Set _MachineName=%1
    echo %_MachineName%
    reg.exe compare "HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters" "\\%_MachineName%\HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters" /v RpcProtocol
    if %_MachineName% == "" echo 0 > nul
    if %errorlevel% == 0 echo 0 > nul
    if %errorlevel% == 1 Echo Computername: %_MachineName% Errorlevel returned: 1 - Failed >> dns_errors.txt
    if %errorlevel% == 2 Echo Computername: %_MachineName% Errorlevel returned: 2 - Different >> dns_errors.txt
    :End
    rem exit
    注意:此脚本用于比较远程计算机上的 Parameters 注册表子项和运行该脚本的计算机上的 Parameters 注册表子项。

    重要说明:此脚本中不能存在尾随空格字符。
  3. 双击 Dnsquery.cmd 以运行它。

从多台计算机中删除 RpcProtocol 注册表值

要撤消设置 RpcProtocol 注册表值的操作,请按照下列步骤操作:
  1. 使用具有修改 DNS 服务器权限的帐户登录到域。例如,以域管理员身份登录。
  2. 启动命令提示符,然后使用 cd 命令转到保存 Dns_servers.txt 文件的目录。
  3. 键入下面的命令,然后按 Enter:
    for /f %i in (dns_servers.txt) do reg delete \\%i\HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters /v RpcProtocol /f
  4. 停止所有计算机上的 DNS 服务器服务。为此,请键入以下命令,然后按 Enter:
    for /f %i in (dns_servers.txt) do sc \\%i stop DNS
  5. 启动所有计算机上的 DNS 服务器服务。为此,请键入以下命令,然后按 Enter:
    for /f %i in (dns_servers.txt) do sc \\%i start DNS

属性

文章编号: 936263 - 最后修改: 2007年5月11日 - 修订: 2.1
这篇文章中的信息适用于:
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Windows Server 2003 Enterprise Edition
  • Microsoft Windows Server 2003 Datacenter Edition
  • Microsoft Windows Server 2003, Standard x64 Edition
  • Microsoft Windows Server 2003, Enterprise x64 Edition
  • Microsoft Windows Server 2003, Datacenter x64 Edition
  • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Datacenter Server
关键字:?
kberrmsg kbhowto kbinfo kbtshoot kbregistry KB936263
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com