加入收藏 | 设为首页 | 会员中心 | 我要投稿 海洋资讯信息网 (https://www.haijunwang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

搭建安全的VNC服务器

发布时间:2022-12-14 15:18:00 所属栏目:安全 来源:
导读:  默认情况下 x11vnc 并不能确保它在每次机器重启时没有登录图形会话的情况下在启动时启动,也不允许连接。 这篇文章将解释如何配置 Ubuntu 20.04 在启动时启动 x11vnc 服务器,这将允许用户使用 vnc 协议连接到ub
  默认情况下 x11vnc 并不能确保它在每次机器重启时没有登录图形会话的情况下在启动时启动,也不允许连接。 这篇文章将解释如何配置 Ubuntu 20.04 在启动时启动 x11vnc 服务器,这将允许用户使用 vnc 协议连接到ubuntu的图形界面,即使当前没有用户登录。
 
  首先ubuntu自带的gdm3管理器替换为lightdm。
 
  sudo apt install lightdm
  安装x11vnc,这目前是最兼容ubuntu20.04默认的gnome界面的vnc软体,其他vnc存在无法使用的毛病,例如tightvnc在客户端登录后无法显示ubuntu的gnome图形界面。
 
  sudo apt-get install x11vnc
  创建vnc后台服务脚本
 
  sudo nano /lib/systemd/system/x11vnc.service
  编辑如下脚本
 
  [Unit]
  Description=x11vnc service
  #在启动x11vnc之前,启动其他依赖的系统服务
  After=display-manager.service network.target syslog.target
  [Service]
  Type=simple
  #为x11vnc创建一个子进程
  # -forever表示在后台长期运行
  # -auth 表示验证的用户名。
  # -passwd 表示验证的密码
  ExecStart=/usr/bin/x11vnc -forever -display :0 -auth itdog -passwd 3317032
  ExecStop=/usr/bin/killall x11vnc
  Restart=on-failure
  [Install]
  #在进程进入multi-user.target之前启动服务。
  WantedBy=multi-user.target
  现在告诉 systemd 系统有变化并重新加载服务脚本
 
  systemctl daemon-reload
  启动服务,并且确保在开机时自动运行x11vnc
 
  systemctl enable x11vnc.service
  systemctl start x11vnc.service
  查看x11vnc的运行状态
 
  服务和连接的外围应用配置器_服务器系统安全_数据库服务和连接的外围应用配置器 在哪
 
  测试成功
 
  服务和连接的外围应用配置器_数据库服务和连接的外围应用配置器 在哪_服务器系统安全
 
  在本文中,笔者用macOS远程登录vnc服务器,免费的vnc客户端基本上都是非加密连接服务器系统安全,也就是说,如果你打算将vnc服务器暴露在公网中,免费的vnc客户端是存在泄漏用户密码,或者数据被截获,攻击者完全可以查看传输的内容。
 
  服务和连接的外围应用配置器_数据库服务和连接的外围应用配置器 在哪_服务器系统安全
 
  解决上述问题,有两种解决方案
 
  安全的VNC配置
 
  因为笔者太穷^_^当然会用到方案2。这里考虑一种应用场景,
 
  服务器系统安全_服务和连接的外围应用配置器_数据库服务和连接的外围应用配置器 在哪
 
  一台Linux主机本身同时已安装ssh和vnc服务。默认情况下安装x11vnc会自动设定防火墙端口开放5900或5901端口。但由于直接暴露没加密保护的vnc服务端口是非常危险的。因此必须通过防火墙屏蔽VNC的监听端口 。
 
  sudo ufw deny 5900/tcp
  我们先关闭之前的vnc进程
 
  systemctl stop x11vnc
  接下来为启动一个仅监听内部连接的会话。 在配置SSH 隧道后,sshd程序会自动重定向到计算机内部localhost的5900端口。我们只需在刚才的x11vnc服务脚本中更改ExecStart的命令,如何所示
 
  ExecStart=/usr/bin/x11vnc --localhost --forever -display :0 -auth itdog -passwd password
  --localhost意味着x11vnc仅会监听服务器内部的localhost接口的5900端口,并且这个localhost接口仅对同一服务器的sshd可见。
 
  再次运行如下命令告诉 systemd 系统有变化并重新加载服务脚本
 
  systemctl daemon-reload
 
  创建SSH隧道
 
  如果运行VNC客户端的计算机是macOS、Linux、Unix,使用如下命令的形式,在终端运行如下命令创建SSL隧道,
 
  ssh -L ::: @ -p ssh端口号
 
  例如通过 SSH 隧道将本地机器上的端口 22590 连接到服务器上的端口 5900。
 
  ssh -N -L 22590:localhost:5900  itdog@192.168.50.1
  当目的主机与SSH服务器相同时,不用指定目的主机IP或主机名,可以使用localhost。本文的例子是通过 VNC 服务和SSH服务在同一台服务器上,但值得注意的是,目的主机的VNC服务是无法从外部访问的。
 
  服务器系统安全_数据库服务和连接的外围应用配置器 在哪_服务和连接的外围应用配置器
 
  如果运行客户端的计算机是Windows,就按照如下图配置,Source port 输入本地客户端的端口22590,Destination输入vnc服务器的socket信息。然后点击Add按钮添加到putty当前的ssh会话配置中。最后连接vnc服务器的ssh服务,即可创建SSH隧道。
 
  服务和连接的外围应用配置器_数据库服务和连接的外围应用配置器 在哪_服务器系统安全
 
  在创建SSH隧道后,并且保持其对话窗口运行的状态,我们最后需要做的是在本地计算机运行vnc客户端,输入localhost:22590
 
 
 

(编辑:海洋资讯信息网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!