很多时候我们都会遇到一个尴尬的问题:

  • 人不在自己的电脑附近,但又需要紧急登录服务器进行维护
  • 随手自带个Xshell安装包?不经过许可装到其他人的电脑上也太……
  • 就算是能够安装,谁又能保证SSH登录的安全性?如果碰巧电脑中毒了的话……

很多年以前,就流行着一种“堡垒机”的概念,也就是实现了“集中了运维身份鉴别、账号管控、系统操作审计等多种功能。基于协议正向代理实现,通过正向代理可实现对SSH、Windows远程桌面、SFTP等常见运维协议的数据流进行全程记录,再通过协议数据流重组的方式进行录像回放,达到运维审计的目的。”这样功能的一种平台。

但好用的堡垒机又是收费的,免费的堡垒机又不太好用,在面临数十、甚至成百上千台服务器管理的时候,难道真的只能拿U盘装着SSH工具安装包,装上一堆密钥然后一点一点的配置么?如果是在网吧的话,当你完成这一切的时候,差不多也就到下机的时间了……

但现在,却有一个相对完美的云堡垒机方案:“JumpServer 云堡垒机”。 所谓“云”堡垒机,也就是把堡垒机迁移上云,一定程度上解决了运维审计、集中管控、权限划分等很多以往传统运维中头疼的问题。只需要在一台服务器上部署 JumpServer 云堡垒机 平台,就可以从单点控制所有的服务器资产,妈妈再也不用担心远程运维的问题了(划掉)。

Chapter 01: JumpServer 云堡垒机介绍

Jumpserver 是全球首款完全开源的堡垒机, 使用 GNU GPL v2.0 开源协议, 是符合 4A 的专业运维审计系统。

Jumpserver 使用 Python / Django 进行开发, 遵循 Web 2.0 规范, 配备了业界领先的 Web Terminal 解决方案, 交互界面美观、用户体验好。

Jumpserver 采纳分布式架构, 支持多机房跨区域部署, 中心节点提供 API, 各机房部署登录节点, 可横向扩展、无并发访问限制。

Jumpserver 现已支持管理 SSH、 Telnet、 RDP、 VNC 协议资产。

也就是说,基于业界主流的技术,通过一个现代浏览器(你说什么?IE 6?)就可以对所有的服务器进行集中管控,并支持对登录、操作的过程进行记录,当出现问题时,可根据审计记录来回查是谁闯的祸。

(从删库到跑路?谁删的库,怎么删的,我都知道了,我看你还怎么跑.webp)

但对于非企业用户来讲,我们需要的,无非就是一个好用的WebSSH工具。

毕竟,谁都不想U盘里面装个SSH工具,万一临时能借到的电脑是个运行macOS的Macbook Pro,那可能哭都没地方哭了……

但 JumpServer 不仅支持 Web SSH,同样支持 Web Telnet (Beta)Web RDP(Windows远程桌面) 、 Web VNC ,对于有构建一站式管理平台需求的运维党们来讲,简直就是天大的福利。

Chapter 02: 部署流程

官方部署向导请根据实际需求移步:
Docker AIO 镜像(适合测试体验或者简易部署):https://jumpserver.readthedocs.io/zh/master/dockerinstall.html
一体化部署 For CentOS 7(适合生产环境使用,推荐):https://jumpserver.readthedocs.io/zh/master/setup_by_centos7.html
一体化部署 For Ubuntu 18.04 (适合生产环境使用):https://jumpserver.readthedocs.io/zh/master/setup_by_ubuntu18.html

如果你需要快速体验 JumpServer 带来的高效生产力,或者不想对系统造成太大的破坏,你可以选择使用 Docker AIO 镜像 进行部署;

如果你需要部署在生产环境中,你需要选择 一体化部署 方案进行部署。

友(fan)情(che)提(jing)示(yan):

  1. 如果你使用的是 Debian 10 "Buster" ,请注意:Debian 10默认自带的Python版本为3.7,而 JumpServer 只能部署在3.6版本上,请使用以下方式,以分支安装的方式 (altinstall) 安装在系统中,避免对系统自带的Python 3.7造成破坏,具体的参考安装代码如下:

    wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
    tar xvf Python-3.6.9.tgz
    cd Python-3.6.9
    ./configure --with-ensurepip=install
    make
    sudo make altinstall
    python3.6 -V
  2. /opt/jumpserver/requirements/ 中的 deb_requirements.txt 在 Debian 系统上可能会出现大量的错误信息,可以暂且无视错误,继续执行部署流程;
  3. 在部分较新的系统分支上,MySQL Client Develop包的包名可能不是 libmysqlclient-dev ,而是叫 libmariadbclient-dev ,请在安装时候注意此处细节(也就是如果没有前者包或者提示前者包已经有替代品(candidate),请更换为后者的包名)。
    同理,数据库也相应的从 mysql-server 变成 mariadb-server ,但实际功能是一样的。
    如果你计划使用 PerconaDB , libmysqlclient-dev / libmariadbclient-dev 也一定要安装(作为连接器使用);
  4. 如果你是在国内服务器上部署安装 JumpServer,在安装Python依赖包的这一步(pip install -r requirements.txt),可以尝试使用国内镜像源,也就是命令改成:

    pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

    会显著改善安装速度。

  5. 同上,如果在国内服务器安装 Docker ,同样建议使用国内的镜像源 https://mirrors4.tuna.tsinghua.edu.cn/docker-ce/linux,对安装速度会有较为明显的改善。

具体的配置要求,根据博主以下环境的测试:

操作系统:Debian 10 "Buster" x64
Web前端反代: OpenResty 1.15.8.1 (基于 Oneinstack 安装)
数据库:PerconaDB 8.0.15 (基于 Oneinstack 安装)
JumpServer主控制器Luna 直接部署在宿主机上;
Coco、Guacamole 通过Docker配置;

服务器占用内存 1.31 GB, 系统平均Load为 0.07,磁盘已使用 8.2 GB,故博主给出的推荐最低配置为:

CPU: 1 核心
内存:1.5 GB
Swap分区: 512MB
磁盘大小:15G
磁盘类型:推荐使用SSD,如果没有SSD,HDD也可以使用

网络方面建议放在离自己最近,或者到本地与所有服务器网络链路质量较好的服务器上面,这样可以保证Web SSH操作的流畅度。

Chapter 03: 上手初体验

整个部署流程,因为博主并没有按照官方说明那样,使用 CentOS 7 或者 Ubuntu 18.04 系统,而是选择了自己最熟悉的 Debian 10 操作系统,所以相对来讲部署过程中也走了不少的弯路。但当整个平台部署完成的时候,真的是第一瞬间就爱上了这个平台:整个平台界面非常整洁干净,不像某些面板弄的花里胡哨或者说想找个功能却找不到。

在这里仅测评Web SSH/VNC部分,具体的审计功能欢迎大家下载 JumpServer 进行体验测试(如果不喜欢部署环境给系统弄乱的话,可以尝试Docker AIO版本)。

JumpServer 主界面

博主将自己手里所有的VPS全部加入到了 JumpServer 的管控中,也就是生产环境版本的 JumpServer。

整个平台的功能导航都放在了屏幕左侧的导航栏中,而中心位置则可以快速对当前平台所管控的服务器资产进行概览,不用一个一个的点开然后手工统计。

Web SSH功能(Luna)需要通过左侧的 会话管理 - Web终端 打开,打开后我们会进入到 JumpServer 的 Luna 平台(也就是Web SSH/Telnet/RDP/VNC平台)。

在此之前,不要忘记先配置用户(用户管理 - 用户列表)添加服务器资产(资产管理 - 资产列表)配置SSH登录用户(资产管理 - 管理用户、资产管理 - 系统用户)以及分配权限(权限管理 - 资产授权)

JumpServer Luna 平台

如果是第一次启动 Luna 平台,可能界面会是英文界面。无需担心嘤语不好,点击上方的 Language - 中文,在自动刷新后即可切换为熟悉的中文界面。

如果你已经正确的配置了服务器资产,他们将会乖乖的出现在屏幕左侧的导航栏中。

如果没有出现,可能由于以下原因导致:

  • JumpServer/Coco 平台没有正确启动
  • 忘记配置资产授权规则

如果提示没有权限登录,请检查是否正确的配置了当前用户的管理权限。

JumpServer Luna WebSSH

在一切准备就绪后,轻轻点击服务器名,即可启动到服务器的SSH连接。

整个界面的操作和使用Xshell等本地操作软件相似,也同样支持快捷键的使用(比如Ctrl+D,F1~F12等)。

我们此时可以像操作本地SSH软件那样,对服务器进行管理。

同时,作为高层管理者,我们也可以通过 JumpServer 的审计功能,记录用户的操作流程,方便在发生问题后回调录像及操作记录。

同时, JumpServer 不仅仅支持 WebSSH ,同样支持 Web VNC / Web Telnet / Web RDP。

也就是说,只要是能够通过 RealVNC / TightVNC Viewer 能够访问的,JumpServer 同样能够做到。

JumpServer Luna WebVNC

当然,作为一款SSH工具,不支持SFTP怎么能行?

JumpServer 同样提供了对于SFTP的支持,只需轻点 文件管理 - 连接。不过出于安全性考虑,只可以远程访问服务器的 /tmp 目录(不过你可以在SSH窗口中通过mv命令移动到目标目录)。

JumpServer Luna Web SFTP

Chapter 04: 总结

JumpServer 作为一款开源的云堡垒机平台(当然官方提供付费的商用技术支持),其采用的分布式架构,支持多机房跨区域部署,中心节点提供 API,各机房部署登录节点,可横向扩展、无并发访问限制等优势,估计会成为运维党们的最爱,同时也为企业的堡垒机方案选型提供了一个不错的可选项。

如果要说说目前 JumpServer 的不足的话,我想可能会有以下几点比较主要的:

  • 对于第一次了解云堡垒机的用户来讲,无论是程序平台,还是官方文档,都缺少一个简单易懂的引导新手使用的向导式帮助文档(至少我在初次接触的时候,也配置了好久最后才让WebSSH能够正常工作),这个希望官方在接下来的版本能够正确引导用户使用平台;
  • WebSSH 界面对于中文字体的显示不太完美,上面总被切下去一点(估计是CSS的锅?),希望接下来的版本能够修复下这个BUG(强迫症真的不能忍 QAQ)
  • WebVNC 界面的字体……请问是给近视患者设计的么……无论是低分屏(1366x768)还是高分屏(1920x1080),字体都奇大无比,不一定非得用低分辨率然后强行拉抻画面,可以考虑像RDP那样,给用户一个选择的余地
  • 程序各个模块的启动顺序,会直接影响到平台是否能够正确启动。如果是Docker带着Coco、Guacamole先行启动,然后jms后启动的话,会导致整个前端无法拉起,需要手动restart jms service才能够正确的运行。必要的话可以砸进去个检测死循环,这样可以避免很多尴尬问题。

但总的来讲,JumpServer 确实是个非常完美的方案,希望以后能够将平台做的更加完美,成为运维党们提高生产力的好帮手。

我也相信官方宣传的那句话:

“改变世界,从一点点开始。”

最后修改:2019 年 08 月 14 日 08 : 14 PM
搞技术/肝文章不易,恳请打赏 OwO