读书频道 > 系统 > windows > 精通Windows Server 2008 R2
3.5 远程管理Server Core
2013-01-11 08:51:02     我来说两句 
收藏    我要投稿   

本文所属图书 > 精通Windows Server 2008 R2

如果您是系统管理员,那么Windows server2008 R2可以帮助简化工作流、自动化功能、虚拟化以及充分利用Windows 7的潜能。《精通Windows server 2008 R2》是一本全面的入门指南,Windows权威专家 mark min...  立即去当当网订购

在深入配置服务器上已安装的角色之前,需要知道远程管理的选项。前面我们已经简单地接触过,下面各节将详细讨论它们在角色配置中的使用。

Remote Desktop是一种管理远程标准安装的非常可靠和安全的方法,Server Core上同样提供Remote Desktop。只要网络支持,Microsoft Management Console或管理单元对于Server Core管理都非常出色。有一个新选项Windows Remote Shell,用来提供连接远程服务器的命令行。

1. 使用远程桌面管理服务器

Windows 2000发行时就提供了Terminal Services(Administration模式),该服务非常了不起,因为它为计算机提供了一个可连接的虚拟桌面环境。Windows Server 2003改进了该服务,从而使该服务成为默认安装。Terminal Services是服务器上执行远程作业的基本方法,通过使用这种方法,可以在位于北美大陆对面的Windows服务器上安装和配置应用程序。因此,这也是Server Core的一个可靠选项。

对于Windows Server 2008 R2 Server Core来说,必须意识到桌面仍然只是命令提示符,仅有少数几个GUI工具。远程管理如同本地登录,其中有一些已发布连接桌面的方法就如同Server Core命令提示符一样,如RemoteApp。但是,不推荐使用这种方式,仍然需要诸如Task Manager、Notepad和Registry Editor的GUI工具,它们是Server Core安装中幸存的GUI工具。

记住,必须启用Remote Desktop及其防火墙策略,这是在3.4节中执行的。

2. 使用MMC管理单元进行远程管理

系统管理员早已发现Microsoft Management Console是一个用来管理远程计算机的非常通用的方法。MMC的优势在于使用RPC协议,并且集成了Windows身份验证。因此,在管理LAN中基于域的计算机时它非常快速高效。

当计算机位于LAN之外时,MMC管理单元就失去作用。当计算机受到防火墙保护时,通常RPC协议就被筛选掉,因此基于RPC协议的工具就无法连接。如果计算机位于不同的域或工作组中,身份验证就不再有效。因此,必须考虑对于自己的服务器来说,这种方式是否是有效的。

使用其他凭据也可以进行身份验证。在工作站上,运行下述命令就可以注册这些凭据:
cmdkey /add:bfsc1 /user:Administrator /pass:P@ssw0rd

也可以不使用参数/pass提示输入密码。在执行上述命令后,就可以通过MMC管理单元连接到服务器。

对于以前版本的Windows Server,为了拥有管理所有Windows服务的管理单元,需要安装adminpak.msi包,否则,就必须安装服务使管理单元可用。在Windows Server 2008和Windows Server 2008 R2中,adminpak.msi包已经被Remote Server Administration Tools功能取代,这就使其安装更加简单,还可以进行微调。图3-9给出了通过Add Features Wizard向导启用了DCHP Server Tools功能。


 

如果之前还没有尝试过,就可以在向MMC添加新的管理单元时连接另一台计算机。出于集中管理的需要,一些管理单元允许将多台服务器添加到一个树中。下面的步骤在Windows Server 2008 R2 Server Core安装中创建一个管理DHCP服务的MMC。请注意,这些步骤只能在DHCP服务启动并且授权后才能执行。上述操作在3.6.2节中讨论。

(1) 在完全安装中安装DCHP Server Tools之后,在Run提示符处输入MMC。

(2) 从File下拉菜单中,选择Add/Remove Snap-in命令。

(3) 打开Add/Remove Snap-in窗口,并且列举可以添加到这个MMC实例中的可用管理单元。

(4) 选择DHCP管理单元,并且单击Add按钮,然后单击OK按钮。

(5) 在MMC中,右击DHCP图标并选择Add Server命令。

(6) 在Add Server窗口中,窗口底部列举已授权的DHCP服务器,如图3-10所示。接下来选择Server Core实例。


 

(7) 在单击OK按钮之后,就会显示所选择的DHCP服务器,并且可以浏览,如图3-11所示。


 

3. 远程发送命令:Windows Remote Shell

Windows Remote Shell工具还相对较新,它能够将命令发送给服务器。与Telnet相似,该工具允许连接到服务器,然后从远程命令提示符下运行命令。但是,该工具并不像Telnet那样可以提供持续的连接,Windows Remote Shell先发送命令,在接收到结果之后,就关闭连接。

Windows Remote Shell是一个轻量级的客户端-服务器应用程序,基于简单对象访问协议(Simple Object Access Protocol,SOAP)技术。对于本服务,只需要理解SOAP的通信方式,即客户端使用XML格式的文本向服务器发送命令,而输出使用HTTP协议以相同格式返回客户端。基于文本的通信可以使用诸如Notepad的文本编辑器轻松阅读,而且HTTP也易于被协议分析程序嗅探,因此,在管理服务器时不要认为这是一种安全的方法,必须锁定。

微软公司为测试驱动的Windows Remote Shell提供了一个winrm quickconfig命令选项。但是,使用HTTP建立连接,使用TCP端口5985。正如微软公司的建议,该命令并不适用于生产环境。为了锁定通信,所以希望通信是加密的,而且服务器通过身份验证。IPsec提供了这种安全性,但是,IPsec并不是在所有的安装中可用。可以为HTTPS(SSL)通信设置Windows Remote Shell,使用基于服务器的证书对服务器进行身份验证,并加密连接。
后面将详细讨论基本的操作步骤。

4. 获取证书

证书的获取有两种方式:从受批准的证书颁发机构购买一个证书,或者建立自己的证书颁发机构并从其中申请一个证书。后者的价格更实惠,特别是使用Windows Server时。

建立自己的证书颁发机构并不难,但是,对于一个生产Active Directory的环境来说,在建立证书颁发机构之前应该对其目标拥有一个坚实的规划。有一些需要考虑的决策将对整个组织产生影响,而且这些影响需要手动管理才能删除。本节并不详细讨论这些内容,我们将在实验室环境中快速地体验。

在完全安装的Windows Server 2008 R2域控制器中,已经安装了Active Directory Certificate Services角色。该角色的典型安装包括Web注册组件,这将需要Internet信息服务(Internet Information Services,IIS)。我们并不希望花费时间来安装IIS,只希望选择Certificate Authority服务,这样就允许创建和管理证书。另外,它还允许域中的计算机使用RPC协议申请证书和Kerberos身份验证。此外,将安装一个受信任的根企业证书颁发机构,选择根是因为它是企业中第一个也是唯一一个证书颁发机构;选择企业是因为它使用Active Directory来验证服务器和用户是值得信任的。因为证书颁发机构使用Active Directory,所以它自动放行经过验证的用户和计算机。因为Bfsc1是域控制器,所以它自动申请证书。

在Server Core上,希望查看证书(先尝试远程使用MMC,但是出于安全原因,这并不是一个好选择)。在Server Core安装上查看证书的方法有两种:certutil命令或PowerShell的dir命令。
rem using certutil
C:\Users\Administrator.BIGFIRM\Documents>certutil -viewstore my
my

其中my指存储自己证书的本地机器。当运行上述命令时,就会显示一个窗口,列举已安装的证书,如图3-12所示。


 

注意,在唯一安装的证书下面有一个超链接Click here to view certificate properties,这将打开证书信息,如图3-13所示。


 

突出显示Thumbprint是因为在后面设置Windows Remote Shell HTTPS侦听器时要使用它,可以将这个值复制并粘贴到Notepad中。

PowerShell提供了另一种通过其提供程序获取证书的路径。通常,提供程序是一组PowerShell能够浏览的对象,文件系统就是提供程序的一个示例,因此可以在文件系统中对文件和文件夹对象进行操作。另一个提供程序是证书存储区(certificate store),在证书存储区中可以查看和管理证书。

dir命令是PowerShell开发人员为get-items命令创建的别名,因此,可以使用标准的MS-DOS命令来浏览文件系统。下面的命令列举与前面解释的certutil命令相同的位置:
rem starting powershell
C:\Users\Administrator.BIGFIRM >powershell
Windows PowerShell V2
Copyright (C) 2008 Microsoft Corporation. All rights reserved.
PS C:\Users\administrator.BIGFIRM> dir cert:\localmachine\my | FL
Subject       : CN=BFSC1.bigfirm.com
Issuer        : CN=bigfirm-BF1-CA, DC=bigfirm, DC=com
Thumbprint    : 03ADB670C63E8D1CDB764CD7AA589C51D854307C
FriendlyName  :
NotBefore     : 7/23/2009 6:55:41 PM
NotAfter      : 7/23/2010 6:55:41 PM
Extensions    : {System.Security.Cryptography.Oid, System.Security.Cryptography.
Oid, System.Security.Cryptography.Oid, System.Security.Cryptogra
phy.Oid...}

参数| FL实际上是另一个命令的简写,该命令将dir命令的输出格式化成行分隔的列表。我们喜欢使用这种格式的输出,因为这种格式的输出不会使值截断,而表格格式会将值截断。在这个特定的案例中,表格格式(这里没有示范)并不会截断最重要的值,即thumbprint的值。

5. 创建侦听器

侦听器告诉Windows Remote Shell服务要侦听哪个端口和IP地址,以及如何响应客户端的请求。默认情况下,HTTP端口是5985,HTTPS端口是5986。使用下述命令可以查看系统的默认设置。在下面的输出中,属性<cfg:HTTP>和<cfg:HTTPS>指示端口设置。不管怎么看待XML,命令参数是:pretty格式,输出显得冗长。但是,以<cfg:Client>开头的上半区针对于客户端设置,向其他服务器发送请求;以<cfg:Service>开头的下半区针对于服务,接收要在服务器上运行的请求。
C:\Users\administrator.BIGFIRM>winrm get winrm/config -format:pretty
<cfg:Config xml:lang="en-US" xmlns:cfg="http://schemas.microsoft.com/wbem/wsman/
1/config">
<cfg:MaxEnvelopeSizekb>150</cfg:MaxEnvelopeSizekb>
<cfg:MaxTimeoutms>60000</cfg:MaxTimeoutms>
<cfg:MaxBatchItems>32000</cfg:MaxBatchItems>
<cfg:MaxProviderRequests>4294967295</cfg:MaxProviderRequests>
<cfg:Client>
<cfg:NetworkDelayms>5000</cfg:NetworkDelayms>
<cfg:URLPrefix>wsman</cfg:URLPrefix>
<cfg:AllowUnencrypted>false</cfg:AllowUnencrypted>
<cfg:Auth>
<cfg:Basic>true</cfg:Basic>
<cfg:Digest>true</cfg:Digest>
<cfg:Kerberos>true</cfg:Kerberos>
<cfg:Negotiate>true</cfg:Negotiate>
<cfg:Certificate>true</cfg:Certificate>
<cfg:CredSSP>false</cfg:CredSSP>
</cfg:Auth>
<cfg:DefaultPorts>
<cfg:HTTP>5985</cfg:HTTP>
<cfg:HTTPS>5986</cfg:HTTPS>
</cfg:DefaultPorts>
<cfg:TrustedHosts></cfg:TrustedHosts>
</cfg:Client>
<cfg:Service>
<cfg:RootSDDL>O:NSG:BAD:P(A;;GA;;;BA)S:P(AU;FA;GA;;;WD)(AU;SA;GWGX;;;WD)
</cfg:RootSDDL>
<cfg:MaxConcurrentOperations>4294967295</cfg:MaxConcurrentOperations>
<cfg:MaxConcurrentOperationsPerUser>15</cfg:MaxConcurrentOperationsPerUser>
<cfg:EnumerationTimeoutms>60000</cfg:EnumerationTimeoutms>
<cfg:MaxConnections>25</cfg:MaxConnections>
<cfg:MaxPacketRetrievalTimeSeconds>120</cfg:MaxPacketRetrievalTimeSeconds>
<cfg:AllowUnencrypted>false</cfg:AllowUnencrypted>
<cfg:Auth>
<cfg:Basic>false</cfg:Basic>
<cfg:Kerberos>true</cfg:Kerberos>
<cfg:Negotiate>true</cfg:Negotiate>
<cfg:Certificate>false</cfg:Certificate>
<cfg:CredSSP>false</cfg:CredSSP>
<cfg:CbtHardeningLevel>Relaxed</cfg:CbtHardeningLevel>
</cfg:Auth>
<cfg:DefaultPorts>
<cfg:HTTP>5985</cfg:HTTP>
<cfg:HTTPS>5986</cfg:HTTPS>
</cfg:DefaultPorts>
<cfg:IPv4Filter>*</cfg:IPv4Filter>
<cfg:IPv6Filter>*</cfg:IPv6Filter>
<cfg:EnableCompatibilityHttpListener>false</cfg:EnableCompatibility
HttpListener>
<cfg:EnableCompatibilityHttpsListener>false</cfg:EnableCompatibilit
yHttpsListener>
<cfg:CertificateThumbprint></cfg:CertificateThumbprint>
</cfg:Service>
<cfg:Winrs>
<cfg:AllowRemoteShellAccess>true</cfg:AllowRemoteShellAccess>
<cfg:IdleTimeout>180000</cfg:IdleTimeout>
<cfg:MaxConcurrentUsers>5</cfg:MaxConcurrentUsers>
<cfg:MaxShellRunTime>2147483647</cfg:MaxShellRunTime>
<cfg:MaxProcessesPerShell>15</cfg:MaxProcessesPerShell>
<cfg:MaxMemoryPerShellMB>150</cfg:MaxMemoryPerShellMB>
<cfg:MaxShellsPerUser>5</cfg:MaxShellsPerUser>
</cfg:Winrs>
</cfg:Config>

侦听器还允许证书到端口和IP地址的映射,因此,通过使用可靠的技术复制winrm /?命令中嵌入式文档的示例,就可以制作出创建侦听器的下述命令:
winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname="bfsc1.
bigfirm.com";CertificateThumbprint="03ADB670C63E8D1CDB764CD7AA589C51D854307C"}

下面详细解释各个参数:

Address=*  该服务将侦听所有可用的IP地址。

Transport=HTTPS  该参数有两个选项:HTTP和HTTPS,它们分别使用默认的端口5985和5986。

Hostname=  该参数必须匹配证书所在主机的名称。

CertificateThumbprint=  如前所述,该参数是certutil命令获取的指纹。

6. 创建入站防火墙规则

下一个要求就是启用入站防火墙规则,接收客户端请求。非安全的HTTP协议有一个入站防火墙规则,通过选项/quickconfig设置,但是需要为HTTPS端口创建一个入站防火墙规则。

如果是经验丰富的系统管理员,就有可能不辞辛苦地学习netsh advfirewall firewall命令的大量参数,不过对于那些不思进取的系统管理员来说,可以考虑使用MMC控制台管理单元。本书既满足经验丰富的高级管理员,也满足刚入门的初级管理员。

因此,先从基础着手。这主要是帮助我们了解构建规则时所需的基本参数。诸如New Inbound Rule Wizard向导都非常有用,因为它们能够指引配置过程,而不用担心遗失重要配置。这样有助于构建命令行,用命令行创建相同的规则,就如同3.3节中的逆向工程技术,我们建议首先在标准安装上通过向导创建规则,然后再试图使用命令行来创建规则。

通过使用Server Core安装中讨论的Windows Firewall with Advanced Security,下面遍历New Inbound Rule Wizard向导。

第一个页面如图3-14所示,允许选择一个端口规则。


 

在Protocols and Ports页面中,选择TCP端口为5986,如图3-15所示。


 

Action页面提供有三个选项,如图3-16所示。

Allow the connection:该选项就是本示例使用的选项。

Allow the connection if it is secure:正如该窗口的解释,为了继续连接,该选项要求IPsec通信。Network Access Protection功能可以用来设置网络中的IPsec策略。

Block the connection:该选项阻止连接。


 

Profile页面将规则应用到三个配置文件,如图3-17所示。公用和专用配置文件就是用来应对移动计算机的,因此既可以在家办公,也可以使用无线热点。因为该服务器是一台域控制器,所以并没有应用专用和公用的概念。我们将坚持认为域配置文件是安全的。


 

最后一个页面用来输入新规则的名称和可选描述,如图3-18所示。


 

既然已经知道创建入站规则所需的参数,下面就阐述一下高手的方法。在嵌入式帮助信息中,为防火墙规则的创建提供了下述语法。注意,这是在netsh交互式shell中执行的,使用一个命令行也可以完成上述事情:
netsh advfirewall firewall>add rule ?
Usage: add rule name=<string>
dir=in|out
action=allow|block|bypass
[program=<program path>]
[service=<service short name>|any]
[description=<string>]
[enable=yes|no (default=yes)]
[profile=public|private|domain|any[,...]]
[localip=any|<IPv4 address>|<IPv6 address>|<subnet>|<range>|<list>]
[remoteip=any|localsubnet|dns|dhcp|wins|defaultgateway|
<IPv4 address>|<IPv6 address>|<subnet>|<range>|<list>]
[localport=0-65535|<port range>[,...]|RPC|RPC-EPMap|IPHTTPS|any
(default=any)]
[remoteport=0-65535|<port range>[,...]|any (default=any)]
[protocol=0-255|icmpv4|icmpv6|icmpv4:type,code|icmpv6:type,code|
tcp|udp|any (default=any)]
[interfac etype=wireless|lan|ras|any]
[rmtcomputergrp=<SDDL string>]
[rmtusrgrp=<SDDL string>]
[edge=yes|deferapp|deferuser|no (default=no)]
[security=authenticate|authenc|authdynenc|authnoencap|notrequired
(default=notrequired)]

参数列表非常长,令人害怕。但是,3.3节中提供了查看位于嵌入式帮助信息末尾的示例的技巧。这些示例可以在Notepad中编辑,从而创建自己需要的命令。注意,对于我们的成就来说,该命令行并不值得大肆宣扬:
C:\Users\administrator.BIGFIRM> netsh advfirewall firewall add rule
name="Windows Remote Management HTTPS"
description="This is to open the 5986 port to allow remote management using
WinRM" protocol=TCP dir=in localport=5986 profile=domain action=allow
Ok

下面解释各个参数如何对应于前面的向导页面:

Add rule  在管理单元中,必须右击Inbound规则对象,然后从弹出菜单中选择New。

Name= & description=  这是在向导最后一个页面中添加的信息,如图3-18所示。

Protocol= & localport=  在图3-15中添加该信息。

Dir=  该参数表示规则的入站部分,方向由New Inbound Rule Wizard向导中的选择决定。
Profile=  该参数对应于图3-17中的设置,语法中的选项也指定相同的值:[profile=public| private|domain|any[,...]]。

Action=  在图3-16中设置该参数,这些选项几乎复制到语法:action=allow|block|bypass中去。但是,bypass等价于“Allow if the connection is secure”。

注意,图3-14中选择规则类型的选项暗含在本地端口选择中。基于程序或服务的规则拥有自己的架构,同样在嵌入式帮助文本中拥有示例。

7. 使用WinRS进行测试

Windows Remote Shell的当前客户端是winrs.exe,Windows Vista和Windows Server 2008安装中也提供有该工具。因此,通过winrs.exe的帮助信息得到的下述命令,可以用来测试服务:
rem test winrs with fire wall enabled.
C:\Users\Administrator.BIGFIRM>winrs -r:https://bfsc1.bigfirm.com:5896 ipconfig
Windows IP Configuration
Ethernet adapter Internal:
Connection-specific DNS Suffix .  :
Link-local IPv6 Address . . . . . : fe80::b5a1:157f:7220:4f4c%3
IPv4 Address. . . . . . . . . . . : 192.168.1.11
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.1.254

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:3.4.3 步骤3:定制服务器
下一篇:3.6 配置角色和功能
相关文章
图文推荐
3.4.4 进程生命期管
3.4.2 Windows应用商
3.4.1 Windows应用商
3.4 进程生命期管理
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站