博客内容提示
下面的博客是我 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
- 安全配置
# 记得这里需要使用管理员类权限进行操作
[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
,直接输入即可。
- 如果运行不报错的话,可以通过浏览器输入
2.4 安装 Coco 插件
这里
Coco
程序提供Jumpserver
的SSH Server
和WebSocket 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的注册请求信息
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
地址即可
- 访问
3. 常用设置
- 基本信息
- 邮件设置
- 终端设置