Windows系统远程管理实施方案

对于很多的微软系统的管理员来说,都面临着一个以怎样的安全方式管理远程系统的问题!在Unix系统中,这个答案十分简单:使用SSH 协议,这是足够安全和有效的。在SSH方式下,我们不仅能在命令行下管理远程系统,我们也能通过使用隧 道技术(Tunnlling)运行远程X-Window。在传输过程中通过使用强壮的加密算法,以防止传送的数据被未经授权的访问。

  令人遗憾的是,如果把远程安全访问应用于微软操作系统就不是一件非常容易的事了。首先,仅仅NT 终端服务器,2000服务器和XP安装有远程管理服务( 终端服务)。第二,一些第三方公司提供给微软远程管理服务的实施方案中,一般都需要很大的成本支出。且随着方案的进一步实施,成本也越来越高。而一些免费的远程管理软件如(vnc)又无法提供加密传输功能,安全性能大打折扣。

  这篇文章提出的一种能用来远程管理从Win 95 到Windows XP几乎所有版本的微软操作系统的方案。这种方案的特点不仅表现在最小费用支出上,而且还具有较高的安全性。

  解决方案

  一个理想的远程管理方案应该有什么特征?首先,这个解决办法一定是高效的。虽然在Unix 系统情况下,模拟终端命令行模式进行管理还是比较满意的.但是使用这种方式来管理Windows远程服务是远远不够的, 因为Windows 是一个基于图形环境的操作系统,远程管理也应该使用一种图形方式实现。除了高效,远程管理还必须建立在安全的基础上。这个解决办法必须不仅为用户提供鉴定,而且也必须保证被传送的数据的机密性和完整性。

  在这篇文章中讨论的远程管理方案中,通过使用以下开放源代码软件,来达到以上要求!

  1.VNC-(Virtual Network Computing)提供图形界面方式管理远程系统。在我们的方案里,VNC软件将是这个整个的解决办法的" 核心"。它将提供图形界面来连接远程操作系统。

  2.Stunnel –的主要目的是建立能用来以安全的方式传送其他非加密协议传输的数据的SSL 隧道。 在本文的解决办法中,这个工具将用来加密VNC协议。在Stunnel下,不仅可以保证被传送的数据的机密性和完整性,也可以利用证书签别VNC客户端和服务器。

  3.OpenSSL- OpenSSL 能提供一个加密函数库,它能用来为应用程序提供数据加密功能。通过使用OpenSSL 我们能产生,签署或者撤销基于公共密钥基础结构( PKI) 的证书。在下面提出的这种方案中将用来产生并且签署需要证实VNC 客户端和服务器的证书。

下图显示了使用以上软件来提供一个安全的远程管理方案!

  此方案实际执行方案如下:

安装软件

实现此安全管理远程microsoft系统的第一步是安装以上软件.

安装VNC

我们可以在这里http://www.uk.research.att.com/vnc/下载vnc,然后安装在我们希望能够被远程管理的桌面操作系统,这即是VNC服务端.接下来所做的是需要注册VNC服务,注册方法:依次打开”开始”,”RealVNC”,”VNC server”,”Register VNC Server Service”,然后系统将会要求重启。

重启系统之后,我们必须设置VNC 服务的基本参数。 最重要的事情设置一个有效的口令,以防止VNC 服务被未经授权的访问。下一步关闭" enable jave viewer" 选项 (此选择要求两条单独的SSL 隧道,我们将不使用它),如下图显示:

  在完成使VNC服务端设置之后,我们应该下载VNC客户软件(vncviewer.exe) 并且将它放于VNC客户端。

接着应该检查VNC客户端是否能与VNC服务端建立起一个连接,如果双方能够建立起连接,我们便完成了初步的设置。

由于VNC服务端只能够被本地安装的Stunnel软件所访问,所以我们需要往注册表中添加一个键值:

Key:HKEY_LOCAL_MACHINE\Software\ORL\WinVNC3Name:LoopbackOnly
Type: REG_DWORD
Value: 1

以上键值的作用是使之能够使用loopback连接,即回送连接,并且限制监听端口5900的连接只能是本地ip(127.0.0.1),这样VNC服务器不会被网络上的机器直接访问,这样大大的提高了安全性.另外如果我们不希望用户关闭VNC服务的话,服务器的注册表应该增加一项:

Key:HKEY_LOCAL_MACHINE\Software\ORL\WinVNC3\Default
Name: AllowShutdown
Type: REG_DWORD
Value: 0

为了使以上设置生效,我们应该重启VNC服务。

安装Stunnel 

接下来安装Stunnel软件,下载地址 http://www.stunnel.org/download/binaries.html,客户端和服务端均需要下载,在本例中放置在C:\Program Files\Stunnel.另外还需要下载2个必须的dll库文件,libeay32.dll, libssl32.dll。

  如果希望开机时自动启动Stunnel进程,应该在注册表中添加如下键值:

Key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Name: Stunnel
Type: REG_SZ
Value: "C:\Program Files\Stunnel\stunnel-4.04.exe"

安装OpenSSL

大家都知道,在现在大多数linux版本中,典型安装就已经包括了openssl库,这主要是因为openssl库是安装openSSH所必须的组件.其实还有另外一种版本的openssl,是适合使用于微软操作系统上的,和linux下的具有相同的功能.在本文所提到的这个方案中,我们需要的就是这种在Windows平台下的openssl。

下面我们来安装和设置openSSL服务:

1. 信任主机(Win 2000,NT,XP)-如果可能,最好不要连接到网上-需要安装openssl软件,openssl.exe可以在Stunnel的官方站点下载http://www.stunnel.org/download/binaries.html,同样,我们还需要下载libeay32.dll 和 libssl32.dll.2个文件,下载文件必须放到C:\Program Files\OpenSSL.文件夹。

2. 另外,还需要下载2个文件,一个配置文件, openssl.conf,可以从http://www.securityfocus.com/data/tools/openssl.conf下载
ca.bat 脚本文件,用来生成证书,下载地址: http://www.securityfocus.com/data/tools/ca.bat
这2个文件也必须放置到C:\Program Files\OpenSSL.文件夹,如下图所示:

  接下来应该生成证书,用来鉴别VNC的服务器和客户端。

生成密匙和证书

CA认证

这个过程首先应该产生一个私人/公共密钥对,同时产生一个第三方信任的证书.在随后的过程中私人密匙将用来签发VNC服务端和客户端的证书,CA证书将被分配给所有的VNC服务端和客户端.因为CA私人密匙是PKI执行过程中最重要的基础之一,所以密匙应该被赋予一个通行码(pass phrase)。 通行码也可以被称做为口令,是用来保护私匙的密码,用户可以自由选择。不用口令是不能使用私匙的,因此口令和私匙同样重要。需要选取一个安全的口令。

我们通过ca.bat这个批处理文件来产生密匙对和证书:

C:\progra~1\OpenSSL\ca genca

  完成以上步骤之后,CA证书将存储在c:\ca\cacert.pem文件中,私人/公共密匙对存储在C:\CA\private\CAkey.pem文件中。

VNC服务端

接下来产生服务端的密匙对和证书。

C:\progra~1\OpenSSL\ca server

  于是,在C:\CA\temp\vnc_server生成如下文件:

server.key – 私人/公共密匙对 
server.crt – 服务器端的证书 
server.pem - server.key + server.crt (在使用Stunnel时将用到) 

应该强调的是,服务端的私匙并没有通行码来加密,使用通行码来加密私匙的方法并没有在这里派上用场,主要是因为Stunnel尚不支持通行码,其次,是用通行码加密后的私匙将不能被用于Stunnel软件。

VNC客户端

最后一步是产生客户端的密匙对和证书。

C:\progra~1\OpenSSL\ca client

  跟服务端类似,在C:\CA\temp\vnc_client文件夹中将产生如下文件:

client.key –私人/公共密匙对r 
client.crt – 客户端证书 
client.pem – client.key + client.crt (在使用Stunnel时将用到)
Stunnel 设置

VNC服务端

在建立起服务段和客户端的一种安全传输模式前,我们必须设置好Stunnel软件,并且安装必需的密匙和证书。

在C:\Program Files\Stunnel文件夹中新建一个stunnel.conf文件,文件内容为:

CAfile = CAcert.pem
CApath = certificates
cert = server.pem
client = no
verify = 3

[vnc]
accept = 443
connect = 127.0.0.1:5900

通过以上设置,使得所有连接tcp443端口的连接转向到本地tcp5900端口,当然有个前提,那就是客户端必须提供有效的证书。

接下来,将ca证书(C:\CA\CAcert.pem)和VNC服务端的密匙,证书(C:\CA\temp\vnc_server\server.pem)放到C:\Program Files\Stunnel

最后我们也必须安装VNC客户端证书,要想使隧道程序在鉴定过程中找到证书,我们必须按照以下方法来更改证书名称。(以下命令必须在产生证书的服务器上运行,其中value为运行openssl x509命令之后的输出结果,在使用copy命令时,value必须要用这个实际的输出结果代替。)

cd C:\CA\temp\vnc_client
C:\progra~1\openssl\openssl x509 -hash -noout -in client.crt
value
copy client.crt value.0

  然后这个value.0文件应该被放到C:\Program Files\Stunnel\certificates

如图所示:

  VNC客户端

在客户端配置的情况和以上的步骤类似

首先C:\Program Files\Stunnel\新建一个stunnel.conf文件

内容:

CAfile = CAcert.pem
CApath = certificates
cert = client.pem
client = yes
verify = 3

[vnc]
accept = 127.0.0.1:5900
connect = VNC_server_IP_address:443

接下来,将ca证书(C:\CA\CAcert.pem)和VNC服务端的密匙,证书(C:\CA\temp\vnc_server\server.pem)放到C:\Program Files\Stunnel

同样我们需要按照以下方法来更改证书名称。

cd C:\CA\temp\vnc_server
C:\progra~1\openssl\openssl x509 -hash -noout -in server.crt
value
copy server.crt value.0

  然后这个value.0文件应该被放到C:\Program Files\Stunnel\certificates

最后C:\Program Files\Stunnel这个文件夹应该是如下图所示:

  测试连接

到此时为止所以的设置都已完成,为了测试,我们必须在客户端和服务段同时开启网络隧道,同时开启VNC服务端。

在服务端

  在客户端

  如果由于某种原因,没有能够成功的建立起连接,我们应该提高Stunnel的登陆级别,并且找出出错的原因,这时我们需要在stunnel.conf文件中添加一行:

debug = 7
然后重启stunel服务,并再次测试连接。

反向连接

在上面的设置中,只有当VNC服务器具有独立的公网IP,或者与VNC客户端同处在一个局域网中,才能够进行成功的连接。如果VNC服务端处于NAT(network address translation)后面或者试图连接服务器的信息包被防火墙丢弃,那么以上连接更本无法实现,那该怎么办?

由于VNC服务器具有"/listen"选项,所以有可能突破以上的限制,在传统的c-s模式传输中是由客户端发起连接的,但是现在不仅是客户端可以发起连接,服务端本身可以反向连接,唯一的要求就是服务端和客户端能够进行连接.当然,这个要求客户端不能在NAT反向代理之后,也不能被防火墙截住了信息包.

如前所述,VNC具有反向连接功能,要想使用这个功能,VNC服务器上的stunnel.conf文件应该做少量改动: 

CAfile = CAcert.pem
CApath = certificates
cert = server.pem
client = yes
verify = 3

[vnc]
accept = 127.0.0.1:5500
connect = VNC_client_IP_address:443

同样,VNC客户端的stunnel.conf也应该做一下改动:

  CAfile = CAcert.pem
CApath = certificates
cert = client.pem
client = no
verify = 3

[vnc]
accept = 443
connect = 127.0.0.1:5500

 此时,服务端的stunnel软件变成了ssl的客户端,而客户端的stunnel则变成了ssl服务端。

当然服务端和客户端建立连接的方法也将改变,首先客户端打开vncviewer.exe,进入监听模式(依次打开开始菜单, RealVNC, VNC Viewer,Run Listening VNC Viewer).同时,在服务端,我们使用添加客户端选项,如图所示:

  以上对于在NAT代理下的服务器非常有效,但是同时它也有个弊端,那就是必须要在服务器段进行手动操作,是否有一种方法可以不需要人为操作的建立上述连接了?

这个方案是可行的,它可以使用微软操作系统中的计划任务来实现,下图显示了如何通过计划任务来设置VNC服务端在每天的上午9点到下午9点每隔10分钟进行自动反向连接,当我们想在客户端进行连接的话,所要做的只是将vncviewer.exe设置为监听模式,最多10分钟就将等到来自服务端的主动连接.

  相关名词解释:

SSH :(Secure Shell)用于提供安全的远程登录和其他安全网络服务。

SSL :(Secure socket Layer) 安全套接层协议

Tunnel:网络隧道,指的是利用一种网络协议来传输另一种网络协议。

VNC:(Virtual Network Computing)跨平台,免费,开放源代码的一款远程管理软件。由两部分部件组成:服务端(Server)和客户端(Viewer)。

Stunnel:一种程序,可以使用 OpenSSL 库对任意 TCP 会话进行加密。

OpenSSL:一个非常优秀的SSL/TLS开放源码软件包,它包括SSL库、加密算法库以及应用程序三大部分。

时间: 2024-08-30 09:19:35

Windows系统远程管理实施方案的相关文章

常用windows下远程管理Linux服务器的方法

随着互联网的 高速发展以及Linuxhttp://www.aliyun.com/zixun/aggregation/13760.html">企业应用的成熟,Linux被广泛应用于服务器领域,如何实现Linux的远程管理成为 网络管理员的首要任务.我们经常见到的几种最为常用的windows下远程管理Linux服务器的方法,基本上都是利用SecureCRT,F-Secure SSH 抑或是PUTTY等客户端工具通过ssh服务来实现Windows下管理Linux服务器的,这些客户端工具几乎不需要

用WMI实现Windows系统自动管理

  与以前的操作系统相比,Windows 2K/XP的优点之一是具有更好的可管理性.例如它支持Windows 2000服务器终端服务下的远程管理模式,支持Microsoft管理控制台(MMC),再有一个就是支持WMI.WMI是Windows Management Instrumentation的缩写,即Windows管理规范.WMI有许多用途,其中之一就是通过脚本编程实现管理自动化. 一.为什么要用脚本? 回顾九十年代,Windows NT之所以获得成功,原因之一就在于相对而言这个操作系统比较容

windows系统远程桌面连接技巧两则

在局域网中为了方便与其他工作站交流信息,我们常常会用到远程桌面功能,许多人会认为这样的功能简单得几乎不值一提,不过在实际使用过程中,我们有时会遇到各种特殊的远程桌面连接需求,要想顺利满足这些特殊的连接需求,就必须要掌握一些远程桌面的使用技巧.这不,本文下面为大家贡献的几则远程桌面新鲜技巧,值得各位一试! 让远程桌面端口躲避攻击 大家知道,在默认状态下远程桌面使用的端口一般为"3389",如果我们不及时将这个端口号码更改掉的话,那么许多别有用心的黑客可能会利用这个端口,来远程控制和入侵本

重要通知 | Windows系统高危漏洞修复方案

4月14日,境外黑客组织公开了一份包含多个Windows远程漏洞利用工具的机密文档.为确保云上用户的业务安全,阿里云在4月15日早上九点半发布了漏洞公告及修补措施. 一.影响范围: 已知受影响的Windows版本包括但不限于: Windows NT.Windows 2000.Windows XP.Windows 2003.Windows Vista.Windows 7.Windows 8,Windows 2008.Windows 2008 R2.Windows Server 2012 SP0:

windows系统如何管理云服务器

  1) 登录用户中心 用户中心地址:http://i.aliyun.com 2) 点击"管理控制台"进入管理界面 目前管理界面有新旧两种,分别为: 这里可以对服务器进行管理.续费.升级等操作. 新旧控制台使用上还是有不少区别,具体见: 新控制台使用指南:http://help.aliyun.com/manual?&lastSortId=449 旧控制台使用指南:http://help.aliyun.com/manual?&lastSortId=238

阿里云使用Windows系统通用配置有哪些问题

安装和使用FTP/ Windows2003 硬盘分区和格式化For Windows 2008 服务器被肉鸡了怎么办? 使用FileZilla配置FTP站点 Docker私有镜像库 Windows系统云服务器使用导航 ECS Docker实践文档 windows环境mysql授权外网访问 网站遇到502错误 ECS Windows Server 2008安装VPN后本地接入成功但无法解析域名 ECS Windows 显示"500 - 内部服务器"处理方法 ECS 设置域名301重定向 W

阿里云操作运维Windows系统有哪些问题

Windows2008 32位 64位自助正版激活教程 外网访问ECS服务器端口不通的排查方法 mysql的binlog太大太多占用大量磁盘 ECS服务器每3天出现一次CPU 100%的情况分析 ECS Windows系统服务器查看流量占用情况的方法 ping网站有丢包 ECS Windows Server 2008 MetaFile设置占用内存限制 ECS Windows2003与2008防火墙例外添加方法 ECS服务器 TCP网络端口不通分析诊断 ECS IO hang或IO慢导致系统内部数

win7远程管理xp桌面

作为网管,除了保证网络的正常运行外,还必须维护各个办公室的电脑,解答同事使用电脑中遇到的问题,因此常常在各个科室间来回穿梭,忙的像个陀 螺.其实只要用好Windows远程桌面连接,很多小问题都可以在自己的办公室中远程搞定,省时省力,工作更轻松.本文中管理员使用的是Windows 7,客户端使用的Windows XP,下面为大家介绍远程桌面使用的详细方法. 开启客户端电脑的远程桌面连接 要进行远程桌面管理,先要对本机的网络进行设置,这里先对被管理的XP系统的电脑进行设置.首先进入客户端系统后创建一

Windows 2003系统远程桌面管理小窍门

Windows Server 2003(简称Windows 2003)的远程桌面功能为网管维护系统提供了方便.通常情况下,需要在Windows 2003服务器上才能开启远程桌面功能,这种方法相当麻烦.其实你也可以使用远程修改注册表的方法,在客户端远程开启Windows 2003服务器的远程桌面. 第一步:远程修改Windows 2003注册表 在客户机系统中,点击"开始→运行",在"运行"对话框中输入"regedit"命令,进入注册表编辑器.接着