简述JumpServer堡垒机


博客内容提示

下面的博客是我 2018 年整理的相关内容,当时 Jumpserver 的官方文档还不够好,所以我自己有重新弄了一遍。当时的版本还是 1.X 系列的,而现在已经 2.2.X 了。而且新版本中加了很多功能和特性,比如多租户和容器化部署的支持,所以现在的 Jumpserver 确实可以应用于企业内部了。

  • 开源: 零门槛,线上快速获取和安装;
  • 分布式: 轻松支持大规模并发访问;
  • 无插件: 仅需浏览器,极致的 Web Terminal 使用体验;
  • 多云支持: 一套系统,同时管理不同云上面的资产;
  • 云端存储: 审计录像云端存储,永不丢失;
  • 多租户: 一套系统,多个子公司和部门同时使用;
  • 多应用支持: 数据库,Windows 远程应用,Kubernetes

而且在 2018 年的时候,Jumpserver 合并到了 fit2cloud 旗下,同时还推出了 Jumpserver 的企业版,在企业版中包含了很多实用的功能。所以开源版本适合于小团队或者小公司使用,而企业版则适合于大公司用于管理多地分支、成万台机器的使用场景。同时,还推出了集成软件的一体机,哈哈哈,真的是啥都有。


1. 软件功能概述

Jumpserver 是全球首款完全开源的堡垒机,采用 Python/Django 进行开发的,是符合 4A 的专业运维审计系统。并且采纳分布式架构,支持多机房跨区域部署,中心节点提供 API 接口,各机房部署登录节点,可横向扩展、无并发访问限制。

1.1 结构框架

  • 官网画的图都点不够清晰,我这里进行补充下,O(∩_∩)O 哈哈~

简述JumpServer堡垒机


1.2 组件说明

  • Jumpserver

  • Coco

  • Luna

    • 现在是Web Terminal前端,计划前端页面都由该项目提供,Jumpserver只提供API
    • Luna 的 Github 地址
  • Guacamole

    • Apache 跳板机项目,Jumpserver使用其组件实现RDP功能,支持Jumpserver调用
  • Jumpserver-Python-SDK


2. 安装操作步骤

这里是根据官方的文档进行整理和补充的安装步骤,避免各位重复走坑。

2.1 环境配置

  • 基础配置
# 1. 我这里使用的是CentOS7.4的系统
# 2. IP地址为192.168.31.110
  • 安全配置
# 记得这里需要使用管理员类权限进行操作
[root@locahost ~]# setenforce 0
[root@locahost ~]# systemctl stop iptables.service
[root@locahost ~]# systemctl stop firewalld.service

2.2 Python 环境

  • 安装依赖包
[escape@locahost ~]$ sudo yum install -y wget  xz gcc automake git
[escape@locahost ~]$ sudo yum install -y sqlite-devel zlib-devel openssl-devel epel-release
  • 下载编译安装
[escape@locahost ~]$ cd /home/escape; mkdir software; cd software
[escape@locahost ~]$ wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
[escape@locahost ~]$ tar xvf Python-3.6.1.tar.xz && cd Python-3.6.1
[escape@locahost ~]$ ./configure && make && make install
  • 创建虚拟环境
# 因为CentOS自己带的是Python2,而Yum等工具依赖原来的Python版本,所以需要安装虚拟环境
[escape@locahost ~]$ cd /opt
[escape@locahost ~]$ python3 -m venv py3
[escape@locahost ~]$ sudo chown -R escape. py3
[escape@locahost ~]$ source /opt/py3/bin/activate

2.3 安装 jumpserver 程序

  • 下载主程序
[escape@locahost ~]$ cd /opt/
[escape@locahost ~]$ sudo git clone --depth=1 https://github.com/jumpserver/jumpserver.git
[escape@locahost ~]$ sudo chown -R escape. jumpserver
  • 安装依赖 RPM 包
[escape@locahost ~]$ cd /opt/jumpserver/requirements
[escape@locahost ~]$ sudo yum install -y $(cat rpm_requirements.txt)
  • 安装 Python 库依赖
[escape@locahost ~]$ pip install -r requirements.txt
  • 安装 Redis 服务
# Jumpserver使用Redis做cache和celery broke
[escape@locahost ~]$ sudo yum install -y redis
[escape@locahost ~]$ sudo systemctl start redis.service
  • 安装 MySQL 服务
# Jumpserver可以使用MySQL作为数据库来存储数据

# CentOS7
[escape@locahost ~]$ sudo yum install -y mariadb mariadb-devel mariadb-server
[escape@locahost ~]$ sudo systemctl start mariadb.service

# CentOS6
[escape@locahost ~]$ sudo yum install mysql mysql-devel mysql-server
[escape@locahost ~]$ sudo service mysqld start
  • 创建数据库并授权
# 这里注意需要使用-u来指定用户,指定的话没有权限创建数据库的
[escape@locahost ~]$ mysql -uroot -p
> create database jumpserver default charset 'utf8';
> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'somepassword';
  • 修改 Jumpserver 配置文件
[escape@locahost ~]$ cd /opt/jumpserver
[escape@locahost ~]$ cp config_example.py config.py
[escape@locahost ~]$ vim config.py
...
class DevelopmentConfig(Config):
    # 如果是正式环境的话,建议不要使用DEBUG调试信息,不安全的
    DEBUG = True
    DB_ENGINE = 'mysql'
    DB_HOST = '127.0.0.1'
    DB_PORT = 3306
    DB_USER = 'jumpserver'
    DB_PASSWORD = 'somepassword'
    DB_NAME = 'jumpserver'
...
config = DevelopmentConfig()
  • 生成数据库表结构和初始化数据
[escape@locahost ~]$ cd /opt/jumpserver/utils
[escape@locahost ~]$ bash make_migrations.sh
  • 运行 Jumpserver 程序
[escape@locahost ~]$ cd /opt/jumpserver
[escape@locahost ~]$ python run_server.py all
  • 访问 Jumpserver 程序
    • 如果运行不报错的话,可以通过浏览器输入 http://192.168.31.110:8080 地址来访问我们刚刚安装的 Jumpserver 工具。这里显示的只是 Jumpserver 的主程序,没有 Web Terminal,所以访问 Web Terminal 会报错的。注意默认的账户和密码都是 admin,直接输入即可。

简述jumpserver堡垒机


2.4 安装 Coco 插件

这里 Coco 程序提供 JumpserverSSH ServerWebSocket Server 服务。

  • 下载项目
# 新开一个终端连接测试机,别忘了激活虚拟环境
[escape@locahost ~]$ cd /opt
[escape@locahost ~]$ source /opt/py3/bin/activate
[escape@locahost ~]$ sudo git clone https://github.com/jumpserver/coco.git
[escape@locahost ~]$ sudo chown -R escape. coco
  • 安装依赖
[escape@locahost ~]$ cd /opt/coco/requirements
[escape@locahost ~]$ sudo yum install -y $(cat rpm_requirements.txt)
[escape@locahost ~]$ pip install -r requirements.txt
  • 查看配置文件并运行
[escape@locahost ~]$ cd /opt/coco
[escape@locahost ~]$ cp conf_example.py conf.py
[escape@locahost ~]$ python run_server.py
  • 配置接受注册
# 这时需要去Jumpserver管理后台-会话管理-终端管理页面中,接受Coco的注册请求信息

简述jumpserver堡垒机


2.5 安装前端 Luna 插件

Luna 已改为纯前端,需要 Nginx 来运行访问

  • 下载 Luna 代码
[escape@locahost ~]$ cd /opt/
[escape@locahost ~]$ sudo wget https://github.com/jumpserver/luna/releases/download/1.3.1/luna.tar.gz
[escape@locahost ~]$ sudo chown -R escape. luna
  • 解压缩代码
[escape@locahost ~]$ tar -xvf luna.tar.gz
[escape@locahost ~]$ sudo rm -f luna.tar.gz

2.6 配置 Nginx 整合各组件

  • 安装 Nginx 服务
[escape@locahost ~]$ sudo yum install -y nginx
  • 修改配置文件
# 修改nginx配置文件的server部分即可
[escape@locahost ~]$ sudo vim /etc/nginx/nginx.conf
......
server {
    listen 80;

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    location /luna/ {
        try_files $uri / /index.html;
        alias /opt/luna/;
    }

    location /media/ {
        add_header Content-Encoding gzip;
        root /opt/jumpserver/data/;
    }

    location /static/ {
        root /opt/jumpserver/data/;
    }

    location /socket.io/ {
        proxy_pass       http://localhost:5000/socket.io/;
        proxy_buffering off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    location /guacamole/ {
        proxy_pass       http://localhost:8081/;
        proxy_buffering off;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
        access_log off;
    }

    location / {
        proxy_pass http://localhost:8080;
    }
}
......
  • 运行Nginx服务
[escape@locahost ~]$ sudo nginx -t
[escape@locahost ~]$ sudo systemtcl start nginx.service
  • 访问完整版本
    • 访问http://192.168.31.110地址即可

简述jumpserver堡垒机

简述jumpserver堡垒机


3. 常用设置

  • 基本信息

简述jumpserver堡垒机

  • 邮件设置

简述jumpserver堡垒机

  • 终端设置

简述jumpserver堡垒机


文章作者: Escape
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Escape !
  目录