ssl vnc_SSL保护VNC应用程序

本文介绍了如何使用SSL增强VNC的远程桌面访问,使其具备比SSH隧道更高的便利性和安全性。通过将VNC服务器与SSL结合,可以在任何支持Java的Web浏览器中查看和交互远程桌面,适用于远程协作、技术支持和配置。尽管设置过程涉及SSL证书,但自签名证书也可用,尽管可能引发浏览器警告。VNC-through-SSL提供了比传统远程解决方案如ssh更轻便的访问方式,适用于多种场景,如电话会议和演示。
摘要由CSDN通过智能技术生成

ssl vnc

是否想以比专用解决方案更多的便利性和ssh隧道技术的安全优势,远程查看桌面? 这是一个很好的方法,而且这是我们之前从未见过的技术。

这个想法是使用SSL为嵌入在网页中的简单VNC查看器提供安全性。 这意味着基本上任何具有Java功能的Web浏览器都可以查看远程桌面并与之交互。 这为解决典型情况提供了强大的解决方案,包括远程协作,技术支持和配置。

电脑在那里,屏幕在这里

一处位置的计算机执行操作,其他地方的人希望查看结果。 符合此描述的情况范围非常广泛,并且实现此目标的方法种类也差不多。 与非软件专家一起工作时,一种方法特别方便,是将单个常规桌面发布为受HTTPS协议保护的Web URL地址。 “平民”用户可以轻松选择此类桌面显示的超链接,或在其浏览器的地址字段中输入URL。

只需几分钟,您就可以设置自己的远程桌面。 这种方法的关键功能区别与身份验证有关:与其像基于ssh,IPv6,OpenVPN和大多数专有产品的远程机制所采用的那样,不基于登录级别的帐户,而是向我们展示如何设置帐户- SSL的密码对。 这是一种特别“轻巧”的方法,与台式机主机的其他用途隔离。 同时,该技术在整个Web中得到了广泛和关键的使用,许多开发人员都很熟悉。

尽管仅需几个步骤即可设置通过SSL的VNC,但配置的核心是一个微妙的问题:Java VNC客户端将不会连接到具有自签名证书的SSL站点。 更准确地说,流行的浏览器常用的JVM需要由“受信任的第三方”证书颁发机构(CA)认可的证书。

这有效地吸引了本文的读者。 如果您已经在使用SSL,可能是因为您管理或开发了安全的网站,则可以立即为您的VNC-through-SSL项目使用相同的Web服务器和签名证书。 但是,如果您没有使用SSL的背景知识,那么我们的技术不是一个很好的起点。 更传统的ssh隧道或Hamachi或商业解决方案,可能会为您提供更轻松的进入远程桌面世界的入口。 有关更多详细信息,请参见“ 证书和SSL ”。

食谱

第一步是设置VNC服务器和相应的隧道。 为此,您必须具有一个允许您创建有效密钥文件(包括私钥和公钥)的证书。 将密钥放在/etc/ssl/certs/stunnel.pem 。 本示例使用TightVNC服务器并显示:5。

清单1.启动TightVNC服务器和隧道
$ tightvncserver :5
$ stunnel -d 5705 -r 5905 -p /etc/ssl/certs/stunnel.pem

尽管大多数Linux主机都已设置为使任何用户都可以启动vncserver ,但很可能您需要root特权才能有效使用stunnel 。 根据主机的安全模型,最好将其作为sudo stunnel ...

此时,服务器应在地址为there:5905提供未加密的连接,并在地址为there:5705提供加密的连接。 使用定向到yourhost:5任何方便的VNC查看器验证前者。 要确认通道已启动并正在运行,请使用以下命令搜索系统日志:

清单2.检查通道是否成功
# grep stunnel /var/log/syslog|tail -24
Aug 21 18:58:17 there stunnel[5453]: Using '5905' as 
      tcpwrapper service name
Aug 21 18:58:17 there stunnel[5453]: stunnel 3.26 on 
      i386-pc-linux-gnu PTHREAD+LIBWRAP with OpenSSL 0.9.7e 25 Oct 2004
Aug 21 18:58:17 there stunnel[5454]: FD_SETSIZE=1024, 
      file ulimit=1024 -> 500 clients allowed

出现的错误-无效的密钥文件,权限不足或已在使用的端口-会显示在同一日志文件中。 例如,丢失的密钥以这种方式出现在日志中:

Aug 21 18:58:17 there stunnel[5453]: /etc/ssl/certs/stunnel.pem: No such file or directory (2)

随着服务器在未加密和已加密端口上愉快地嗡嗡作响,我们转向了VNC Web客户端。 要启用它,可以从x11vnc项目下载启用SSL的Java VNC查看器。 下载源压缩文件后,可以在x11vnc-XYZ / classes / ssl / VncViewer.jar和x11vnc-XYZ / classes / ssl / SignedVncViewer.jar中找到Java代码。 设置用于提供VNC内容的目录,在其中复制VncViewer.jar并创建HTML源。 此样本HTML文件允许通过SSL连接到there:5705

清单3.连接到那里:5705
<html>
<body>
<applet code="VncViewer.class" archive="VncViewer.jar" width="800" height="600">
<param name="PORT" value="5705" />
<param name="HOST" value="there" />
<param name="Open New Window" value="no" />
<!-- the following helps in Opera:
<param name="Cursor shape updates" value="Disable" />
-->
</applet>
</body>
</html>

HTTP或HTTPS均可提供此小程序。 假设HTML和Jar文件通过HTTP在/vnc URI下的端口80上提供,那么地址http:// there / vnc将显示桌面。 记住要为Java启用浏览器! 另外,请注意,对于HOST参数和源地址,必须使用相同的主机名。 Java applet的安全模型本质上需要这样做。

更多使用技巧

使用标准组件和协议的优点之一是可以很容易地替换它们。 例如,我们自己的许多开发都是使用Xvnc VNC服务器进行的,在上面的食谱中,还有其他一些可以替代TightVNC。 请注意,这些替代方法可能期望命令行参数略有不同。 但是,在所有情况下,想法都是相同的。 几乎所有Linux发行版都提供根据该发行版标准打包的VNC服务器,并且几个开源VNC项目都易于从源代码安装。 VNC服务器安装中最困难的部分是要求使用特定的默认字体。 即使在这种情况下,至少也清楚地标明了补救措施。

在浏览器中使用启用SSL的VNC查看器至少有一种危险。 对于所有主要浏览器(包括Mozilla Firefox,Internet Explorer和Opera),这都是可行的,但是所有这些浏览器都需要Java运行时1.4或更高版本。 对于仍然依赖于Microsoft JVM 1.1的旧版Microsoft Windows操作系统的用户,这成为一个问题。 在这种情况下,VNC查看器将无法在Internet Explorer中运行,并且将报告未找到VncViewer类。 唯一的解决方案是提供与VNC服务器的非SSL连接,并建议将Java升级到任何最新的Java运行时。

默认情况下,大多数VNC服务器不共享桌面。 也就是说,任何连接都会关闭先前的连接。 对于协作,技术支持和类似用途,请按照其文档指定的-alwaysshared或类似命令行参数启动服务器。 这允许多个用户同时连接到同一桌面。

重点是什么?

尽管您可能曾经使用过VNC,Web服务,Java,SSL,浏览器等,但是您可能永远不会以这种方式将它们组合在一起。 您现在到底有什么?

证书和SSL

我们已经写过,如果您已经在使用SSL,则可以重新使用证书,如果没有,则没有时间开始。 严格来说并非如此。

从开发人员的角度来看,SSL至少扮演两个角色:

  • 它对VNC通信进行加密和身份验证,以使您的远程桌面在恶意Internet环境中的安全性降至最低。 和
  • SSL打开了普通浏览器的功能。

如果您的浏览器找不到适合您SSL流量的信任证书,您(也许更重要的是,其他使用Web浏览器远程访问您的桌面的人)将看到很多警告对话框-令人难以忍受。

在本文中,我们通过建议您使用已经购买和使用的证书解决了这种情况。 这个答案说得太多也太少。 例如,Sun的j2re 1.4 JVM不仅要求证书颁发机构提供证书,而且还要求包括Verisign和Thawte在内的更高端CA之一。 使用此JVM的浏览器对待低价证书的态度与自签名证书的态度一样。

另一方面,本文的主体夸大了使用带有自签名功能的VNC-through-SSL的可能性。 如果您愿意忍受所有浏览器警告, 则至少可以尝试使用自己的证书。

关于创建自签名证书的教程,令人费解的是,它们使过程变得“容易”。 在一个层次上,只需要执行以下命令行序列:

清单4.创建一个自签名证书
openssl genrsa -des3 -out server.key 1024
    openssl rsa -in server.key -out server.pem
    openssl req -new -key server.key -out server.csr
    openssl x509 -req -days 3560 -in server.csr \
	  -signkey server.key -out server.crt
    cat server.pem server.crt > combined.pem

其中一些步骤期望在命令行进行交互。 最关键的问题是第三行中的“通用名称”。 为此,请使用您要共享桌面的主机的标准域名。 通常,这是`hostname`

证书的获取通常是VNC-通过SSL的最难的部分。 持有证书,您应该能够很快完成所有其他步骤。

实际上,还可以。 首先,这就像GUI的screen 。 也就是说,您可以在工作中启动GUI会话,全天使用它们通常具有的所有性能和功能,然后从任何启用Java的Web浏览器重新连接到相同的会话! 这是一个功能强大的工具。

还有更多。 VNC在电话会议中非常方便。 例如,我们使用它为非技术观众设置复杂的图形应用程序演示。 原则上,远程X服务器可以履行几乎相同的职责,但是VNC具有许多优点:

  • 它的安全性更易于管理。
  • VNC通常比X更容易通过防火墙。
  • VNC查看器比X服务器更容易安装-尤其是免安装的基于浏览器的查看器。
  • 通过VNC将桌面提供给多个查看者很容易。
  • VNC通常对网络延迟不太敏感。
  • 虽然X身份验证(和ssh隧道)通常基于/ etc / passwd级别的帐户,但是基于Web的访问使用HTTP(S)身份验证。 即使在临时目的(例如电话会议演示)中,也具有创建和维护此类帐户的丰富经验。
  • VNC查看器比X服务器需要更少的内存和相关硬件。
  • VNC服务器通常提供诸如只读访问之类的有用配置。

该技术使用的片段的另一个关键是,最重的密码计算负荷是由“本机”代码而不是Java运行时完成的。 通常可以安全地将网络延迟确定为第一近似值,但是加密和解密非常昂贵,足以使其他技术无法使用,除非具有非常高性能的计算机。 VNC-through-SSL令我们感到高兴的部分原因是,客户可以在旧的甚至是普通硬件上使用标准软件,以产生完全可以接受的响应能力和快照。

您可能有不同的要求和资源。 您必须自己判断VNC的使用与Citrix,Windows Terminal Services,WebEx,Hamachi以及其他“远程”解决方案的商业产品相比如何。 但是,我们看到的是,通过SSL的VNC解决了一系列令人惊讶的问题。

在后续文章中,我们将展示如何将VNC与其他虚拟化结合以实现强大的资源共享技术。 但是,在结束本简介之前,请务必提醒读者VNC存在严重的安全问题。 可以合理地假设,对标准VNC服务的暴力攻击(仅受单个会话密码保护)将在数小时或数天之内突破。 VNC中“坏蛋”的兴趣正在Swift增长。 确保对VNC使用强密码,至少包含八个字符,最好是数字,字母和其他符号。 SSL增加了很多保护,如果一次要打开几个小时的会话,则应该利用它。 在后续工作中,我们将更详细地研究安全性方面。

上面的方法利用了几个强大的开放源代码片段,但是几乎没有原始程序本身。 令我们感到惊讶的是,似乎没有人记录过这种组件的组装,而且组装起来如此容易。 在“ 相关主题”部分中查找有关 VNC,SSL等的更多详细描述。

摘要

在我们的下一篇文章中,我们将在一些特定的工作场所中更具体地详细研究VNC-through-SSL提供帮助的工作场所,以及如何根据自己的情况调整该技术,包括考虑常见的公司防火墙和代理。 我们还将说明与本文介绍的由浏览器托管的客户端配合使用“本地” VNC查看器何时会更有利。

我们特别感谢Matt Kennel,他像我们一样关心安全,并与我们讨论了如何将VNC-through-SSL付诸实践。


翻译自: https://www.ibm.com/developerworks/opensource/library/l-sslvnc/index.html

ssl vnc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值