运维 — JumpServer 开源堡...
 
Notifications
Clear all

运维 — JumpServer 开源堡垒机 快速入门

2 Posts
1 Users
0 Likes
936 Views
(@taichi)
Member
Joined: 4 years ago
Posts: 408
Topic starter  

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

  • 人不在自己的电脑附近,但又需要紧急登录服务器进行维护
  • 随手自带个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: 部署流程

i> 官方部署向导请根据实际需求移步:
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造成破坏,具体的参考安装代码如下:

     
     
    1
    2
    3
    4
    5
    6
    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),可以尝试使用国内镜像源,也就是命令改成:

     
     
    1
    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 主界面

JumpServer 主界面

 

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

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

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

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

JumpServer Luna 平台

JumpServer Luna 平台

 

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

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

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

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

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

JumpServer Luna WebSSH

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

JumpServer Luna WebVNC

 

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

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

JumpServer Luna Web SFTP

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 确实是个非常完美的方案,希望以后能够将平台做的更加完美,成为运维党们提高生产力的好帮手。

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

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


   
Quote
(@taichi)
Member
Joined: 4 years ago
Posts: 408
Topic starter  

Webterminal bastion server (瓦特堡垒机)

https://jimmy201602.github.io/webterminal/doc/install_en.html

 

https://jimmy201602.github.io/webterminal/

https://awesomeopensource.com/project/jimmy201602/webterminal

useage

Usage Video

How to use this project

Installiation guide

installiation guide

Run with docker

docker pull webterminal/webterminal
docker run -itd -p 80:80 -p 2100:2100 webterminal/webterminal
Login user & password
username: admin
password: password!23456

Demo server

demo server

user/password: demo/demo12345678

Author Email

[email protected]

screenshots

screenshots screenshots

Ubuntu webterminal helper support

screenshots screenshots

Mac webterminal helper support

screenshots

Windows webterminal helper support

screenshots

commercial version provide mstsc helper(rdp clipboard support vs file upload download and vnc protocol connection support)

screenshots screenshots

screenshots screenshots screenshots screenshots screenshots screenshots screenshots screenshots screenshots screenshots screenshots screenshots screenshots

 


   
ReplyQuote
Share: