博客内容提示
下面的博客是我 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 哈哈~
1.2 组件说明
- Jumpserver
- 核心组件,使用Django Class Based View风格开发,支持Restful API
- Jumpserver 的 Github 地址
- Coco
- 实现了SSH Server和Web Terminal Server的组件,提供SSH和WebSocket接口
- Coco 的 Github 地址
- Luna
- 现在是Web Terminal前端,计划前端页面都由该项目提供,Jumpserver只提供API
- Luna 的 Github 地址
- Guacamole
- Apache 跳板机项目,Jumpserver使用其组件实现RDP功能,支持Jumpserver调用
- Jumpserver-Python-SDK
- Jumpserver API Python SDK,Coco目前使用该SDK与Jumpserver API交互
- Jumpserver-Python-SDK 的 Github 地址
2. 安装操作步骤
这里是根据官方的文档进行整理和补充的安装步骤,避免各位重复走坑。
2.1 环境配置
- 基础配置
# 1. 我这里使用的是CentOS7.4的系统 # 2. IP地址为192.168.31.110
- 安全配置
# 记得这里需要使用管理员类权限进行操作 [[email protected] ~]# setenforce 0 [[email protected] ~]# systemctl stop iptables.service [[email protected] ~]# systemctl stop firewalld.service
2.2 Python 环境
- 安装依赖包
[[email protected] ~]$ sudo yum install -y wget xz gcc automake git [[email protected] ~]$ sudo yum install -y sqlite-devel zlib-devel openssl-devel epel-release
- 下载编译安装
[[email protected] ~]$ cd /home/escape; mkdir software; cd software [[email protected] ~]$ wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz [[email protected] ~]$ tar xvf Python-3.6.1.tar.xz && cd Python-3.6.1 [[email protected] ~]$ ./configure && make && make install
- 创建虚拟环境
# 因为CentOS自己带的是Python2,而Yum等工具依赖原来的Python版本,所以需要安装虚拟环境 [[email protected] ~]$ cd /opt [[email protected] ~]$ python3 -m venv py3 [[email protected] ~]$ sudo chown -R escape. py3 [[email protected] ~]$ source /opt/py3/bin/activate
2.3 安装 jumpserver 程序
- 下载主程序
[[email protected] ~]$ cd /opt/ [[email protected] ~]$ sudo git clone --depth=1 https://github.com/jumpserver/jumpserver.git [[email protected] ~]$ sudo chown -R escape. jumpserver
- 安装依赖 RPM 包
[[email protected] ~]$ cd /opt/jumpserver/requirements [[email protected] ~]$ sudo yum install -y $(cat rpm_requirements.txt)
- 安装 Python 库依赖
[[email protected] ~]$ pip install -r requirements.txt
- 安装 Redis 服务
# Jumpserver使用Redis做cache和celery broke [[email protected] ~]$ sudo yum install -y redis [[email protected] ~]$ sudo systemctl start redis.service
- 安装 MySQL 服务
# Jumpserver可以使用MySQL作为数据库来存储数据 # CentOS7 [[email protected] ~]$ sudo yum install -y mariadb mariadb-devel mariadb-server [[email protected] ~]$ sudo systemctl start mariadb.service # CentOS6 [[email protected] ~]$ sudo yum install mysql mysql-devel mysql-server [[email protected] ~]$ sudo service mysqld start
- 创建数据库并授权
# 这里注意需要使用-u来指定用户,指定的话没有权限创建数据库的 [[email protected] ~]$ mysql -uroot -p > create database jumpserver default charset 'utf8'; > grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'somepassword';
- 修改 Jumpserver 配置文件
[[email protected] ~]$ cd /opt/jumpserver [[email protected] ~]$ cp config_example.py config.py [[email protected] ~]$ 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()
- 生成数据库表结构和初始化数据
[[email protected] ~]$ cd /opt/jumpserver/utils [[email protected] ~]$ bash make_migrations.sh
- 运行 Jumpserver 程序
[[email protected] ~]$ cd /opt/jumpserver [[email protected] ~]$ python run_server.py all
- 访问 Jumpserver 程序
- 如果运行不报错的话,可以通过浏览器输入 http://192.168.31.110:8080 地址来访问我们刚刚安装的 Jumpserver 工具。这里显示的只是 Jumpserver 的主程序,没有 Web Terminal,所以访问 Web Terminal 会报错的。注意默认的账户和密码都是 admin,直接输入即可。
2.4 安装 Coco 插件
这里 Coco 程序提供 Jumpserver 的 SSH Server 和 WebSocket Server 服务。
- 下载项目
# 新开一个终端连接测试机,别忘了激活虚拟环境 [[email protected] ~]$ cd /opt [[email protected] ~]$ source /opt/py3/bin/activate [[email protected] ~]$ sudo git clone https://github.com/jumpserver/coco.git [[email protected] ~]$ sudo chown -R escape. coco
- 安装依赖
[[email protected] ~]$ cd /opt/coco/requirements [[email protected] ~]$ sudo yum install -y $(cat rpm_requirements.txt) [[email protected] ~]$ pip install -r requirements.txt
- 查看配置文件并运行
[[email protected] ~]$ cd /opt/coco [[email protected] ~]$ cp conf_example.py conf.py [[email protected] ~]$ python run_server.py
- 配置接受注册
# 这时需要去Jumpserver管理后台-会话管理-终端管理页面中,接受Coco的注册请求信息
2.5 安装前端 Luna 插件
Luna 已改为纯前端,需要 Nginx 来运行访问
- 下载 Luna 代码
[[email protected] ~]$ cd /opt/ [[email protected] ~]$ sudo wget https://github.com/jumpserver/luna/releases/download/1.3.1/luna.tar.gz [[email protected] ~]$ sudo chown -R escape. luna
- 解压缩代码
[[email protected] ~]$ tar -xvf luna.tar.gz [[email protected] ~]$ sudo rm -f luna.tar.gz
2.6 配置 Nginx 整合各组件
- 安装 Nginx 服务
[[email protected] ~]$ sudo yum install -y nginx
- 修改配置文件
# 修改nginx配置文件的server部分即可 [[email protected] ~]$ 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服务
[[email protected] ~]$ sudo nginx -t [[email protected] ~]$ sudo systemtcl start nginx.service
- 访问完整版本
- 访问http://192.168.31.110地址即可
3. 常用设置
- 基本信息
- 邮件设置
- 终端设置