网络安全 频道

挖掘通往VNC的安全隧道

相信不少读者都喜欢使用远程登录对服务器进行远程访问,大家使用的远程登录服务端和客户端可能也不尽相同,可能是微软的终端服务又或者是PCAnywhere等等,笔者相信大多用户还是钟情于VNC这套免费的午餐。但是您在使用VNC的同时有没有担心过您的连接密码或者对话操作被人监听窃取呢?笔者今天要介绍便是一种安全的远程VNC访问方案,希望能帮助读者解决后顾之忧。
此方案将使用SSH作为VNC连接的安全隧道,由于OpenSSH和VNC在Linux下配置较为简单,笔者此文着重介绍Windows版本下的配置过程。OK,废话少说,让我们开始挖掘我们的隧道。

OpenSSH for Windows 简介
OpenSSH 是Windows下一款免费的小型OpenSSH 服务器和客户端工具包。它能让Windows提供OpenSSH服务进行SSH/SCP/SFTP等安全操作
其主页为http://SSHWindows.sourceforge.net/

SSH Server 的安装
首先从官方网站上下载最新版本的SSHWindows。SSHWindows 安装如其它Windows软件安装方式一样简单,只要单击下一步下一步便可完成安装。安装过程没有什么特别的,一般选择默认选项便可。
如果您的电脑上之前便安装过cygwin且版本旧于SSHWindows所包含的话,系统就会弹出询问您是否继续安装,单击”yes”进行升级。

SSHWindows在安装过程中会自动创建公共密钥,您将看到弹出的Windows 命令行正在生成密钥。
最后提示在您启动OpenSSH服务之前,首先必须编辑C:\Program Files\OpenSSH\etc\passwd。如果不完成此步您将不能登入SSH server。
单击ok完成安装。要登入OpenSSH,当然需要创建相应的授权账号,而这些账号也必须首先存在Windows以便SSH server 导入。
Windows下如何创建一个新用户,这里笔者就不多说了。实在有需要的读者请致电微软帮助中心吧。
首先开启Windows命令行,在【开始】――【运行】处输入”cmd”回车,切换到OpenSSH安装目录下的bin目录,假设您如本文将OpenSSH安装于C:\Program Files下,则命令如下
cd "C:\Program Files\OpenSSH\bin"
首先导入本地组和域用户组
mkgroup -l >> ..\etc\group (本地用户组)
mkgroup -d >> ..\etc\group (域用户组)
接着创建用户密码文件。此文件将包含所有授权登入SSH Server的用户。如果您只想加入个别用户请使用- u参数,如果想加入全部Windows系统用户,则省略此参数,注意这样做将把系统一些服务账号,guest账号等一并加入。和mkgroup一样,-l 与- d参数可以让您选择加入用户的类型是本地还是域用户。同样在bin目录下,我们以新加本地用户becks与域用户jinni为例。

mkpasswd -l -u becks >> ..\etc\passwd
mkpasswd -d -u jinni >> ..\etc\passwd

可以通过用写字板打开C:\Program Files\OpenSSH\etc\passwd这个文件检查是否成功导入账号。
如果有必要您还可以修改 C:\Program Files\OpenSSH\etc\SSHd_config 配置SSH Server,一般按照系统默认的配置便可,以下是笔者的SSHd_config
============== File Begin Here ==============
Port 22
#Protocol 2,1
Protocol 2
#ListenAddress 0.0.0.0
#ListenAddress ::

# HostKey for protocol version 1
#HostKey /etc/SSH/SSH_host_key
# HostKeys for protocol version 2
#HostKey /etc/SSH/SSH_host_rsa_key
#HostKey /etc/SSH/SSH_host_dsa_key

# Lifetime and size of ephemeral version 1 server key
#KeyRegenerationInterval 1h
#ServerKeyBits 768

# Logging
#obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m
PermitRootLogin no

# The following setting overrides permission checks on host key files
# and directories. For security reasons set this to "yes" when running
# NT/W2K, NTFS and CYGWIN=ntsec.
StrictModes yes

RSAAuthentication no
#PubkeyAuthentication yes
#AuthorizedKeysFile .SSH/authorized_keys

# For this to work you will also need host keys in /etc/SSH/SSH_known_hosts
#RhostsRSAAuthentication no
# similar for protocol version 2
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.SSH/known_hosts for
# RhostsRSAAuthentication and HostbasedAuthentication
IgnoreUserKnownHosts yes
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
#PermitEmptyPasswords no

# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCreds yes

# Set this to 'yes' to enable PAM authentication (via challenge-response)
# and session processing. Depending on your PAM configuration, this may
# bypass the setting of 'PasswordAuthentication'
#UsePAM yes

#AllowTcpForwarding yes
#GatewayPorts no
#X11Forwarding no
#X11DisplayOffset 10
#X11UseLocalhost yes
#PrintMotd yes
#PrintLastLog yes
#KeepAlive yes
#UseLogin no
UsePrivilegeSeparation no
#PermitUserEnvironment no
#Compression yes
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS yes
#PidFile /var/run/SSHd.pid
MaxStartups 10:30:60

# default banner path
Banner /etc/banner.txt

# override default of no subsystems
Subsystem sftp /usr/sbin/sftp-server

============= File End Here ==============
配置完成后保存,在命令行启动OpenSSH,启动命令为:Net Start openSSHd.:停止为:Net Stop openSSHd。
也可以直接在【服务】中启动,在运行中输入services.msc,打开服务控制台,找到openSSH服务后,右键-属性便可以进行启动与停止服务操作。
为了测试是否成功启动,我们可以使用telnet测试连接本地的22端口(SSH服务的默认端口) 使用以下命令进行测试。
telnet localhost 22
如果看到以下信息便表示成功: SSH-2.0-OpenSSH_3.8.1p1。

客户端连接
现在使用SSH客户端,笔者这里推荐使用putty这个小巧且功能强大的SSH Client。
输入OpenSSH的IP,单击open进行连接。首次连接会出现是否接受远程主机的公共密钥提示,单击yes继续。
接着便是输入用户名和密码进行登录,此处的登录banner信息,可以通过编辑服务器上OpenSSH安装目录下的etc/banner.txt进行修改。
登录成功后,我们便可以像以往telnet远程Windows主机般进行远程维护,当然最大的区别就是我们现在与服务器间的通讯是加密的。

OK.OpenSSH服务设置好了,现在我们来安装VNC.由于Vnc安装过程简单,笔者在这里就不多费笔墨了。值得注意的是,在安装结束前,需要设置登录VNC服务器的密码。
安装完后,系统会自动自动VNC服务。做了这么多的热身运动,接下来便是最关键的一步,笔者将向各位读者介绍如何通过putty+VNCviewer安全连接远程VNC服务器。
首先配置Putty,输入远程运行有VNC服务的SSH Server的IP,在左边树状菜单中选择SSH—tunnel 新加一条通道。在 source port 处输入 5900, destination处输入 127.0.0.1:5900,单击add增加。

如果需要经常连接可以保存此对话配置。单击open进行连接,输入用户名密码登入SSH Server。此时我们唯一要做的就是打开VNCviewer,输入127.0.0.1进行连接,VNC会要求我们键入密码,输入之前设置的连接密码。
Ok,远程服务器的画面尽收眼底,此时您可以放心的进行操作,您现在所进行VNC连接是通过我们挖掘的SSH安全隧道的。

通过OpenSSH,我们还可以使用安全Ftp等功能,篇幅所限,笔者这里就不多加介绍,请读者自行研习。

0
相关文章