JumpServer 堡垒机

  • 一、JumpServer 简介
    • 1.JumpServer 组件
  • 二、部署 JumpServer 堡垒机
    • 1.安装 Python
    • 2.安装 JumpServer
      • 1)安装 Python 库
      • 2)安装 Redis
      • 3)安装 MySQL
      • 4)生成密钥
      • 5)运行 JumpServer
    • 3.安装 Web Terminal 组件
    • 4.安装 Luna 组件
    • 5.设置 Nginx 整合各组件
  • 三、JumpServer 使用
    • 1.配置 JumpServer 基本设置
    • 2.创建用户
    • 3.创建用户组
    • 4.添加资产
    • 5.资产授权
    • 6.验证

一、JumpServer 简介

  • JumpServer 是全球首款完全开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 的专业运维审计系统。
  • 使用 Python/Diango 进行开发,遵循 Web 2.0 规范,配备了业界领先的 Web Terminal 解决方案,交互界面美观、用户体验好。
  • 采用分布式架构,支持多机房跨区域部署,中间节点提供 API,各机房部署登录节点,可横向扩展、无并发显示。
  • 为互联网企业提供了认证、授权、审计,自动化运维等功能。

特点:

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

JumpServer 实现的功能:

  • 功能列表
  • 主要功能:身份验证 Authentication | 账号管理 Account | 授权控制 Authorization | 安全审计 Audit

1.JumpServer 组件

组件 作用
Coco(Koko) 用于通过 SSH 来登录 JumpServer 进行管理。
Luna 用于通过 Web 界面来提供一个 Linux Terminal(Linux 终端)管理。
JumpServer 主要就是用来提供数据管理的服务,如:管理、认证、授权、审计等。
Guacamole 为 Windows 组件,用于可以通过 Web Terminal 来连接 Windows 资产(暂时只能通过 Web Terminal 来访问)
  • 注意:Coco 和 Luna 是无状态的,可以部署多份,支持 HA(高可用) 和 LB(负载均衡)

二、部署 JumpServer 堡垒机

准备工作:

主机名 操作系统 硬件 Python MySQL Mariadb Redis
JumpServer CentOS 7.4 CPU 核心数:2,内存:4G,硬盘:50G+ = 3.6.x 5.6 5.5.56
  • 实验所需软件包从这个连接下载:https://pan.baidu.com/s/1WBM_Qm1hWtX-TvFX-P_ezw
  • 提取码:9iqe

1.安装 Python

1)上传安装包

[root@JumpServer ~]# ls
anaconda-ks.cfg  jumpserver-master.zip  jumpserver-packs.tar.gz  pip-packs.tar.gz  Python-3.6.8.tgz
[root@localhost ~]# tar xf jumpserver-packs.tar.gz
[root@localhost ~]# tar xf pip-packs.tar.gz
[root@localhost ~]# tar xf Python-3.6.8.tgz -C /usr/local/src/


2)配置本地 JumpServer 的 yum

[root@localhost ~]# cat <<END > /etc/yum.repos.d/jumpserver.repo
[JumpServer]
name=CentOS7
baseurl=file:///root/jumpserver-packs
enable=1
gpgcheck=0
END
[root@JumpServer ~]# yum makecache                                     # 建立缓存

3)安装依赖包

[root@localhost ~]# yum -y install gcc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel openldap-devel sshpass

4)编译安装

[root@localhost ~]# cd /usr/local/src/Python-3.6.8/
[root@localhost Python-3.6.8]# ./configure --prefix=/usr/local/python
[root@localhost Python-3.6.8]# make -j `cat /proc/cpuinfo | grep processor | wc -l`          #根据 CPU 核心数来进行编译
[root@localhost Python-3.6.8]# make install                                                    #安装

5)配置软连接优化执行路径

[root@JumpServer ~]# ln -s /usr/local/python/bin/* /usr/local/bin/
[root@JumpServer ~]# python3 -V
Python 3.6.8
[root@JumpServer ~]# pip3 -V
pip 18.1 from /usr/local/python/lib/python3.6/site-packages/pip (python 3.6)


6)配置 Python 虚拟环境

  • 因为 CentOS 6/7 自带的是 Python2,而 yum 等工具依赖原来的 Python,目的就是为了不扰乱原来的环境。
[root@JumpServer ~]# python3.6 -m venv /opt/py3                                         # 创建 Py3 虚拟环境
[root@JumpServer ~]# source /opt/py3/bin/activate                                      # 进入 Py3 虚拟环境
(py3) [root@JumpServer ~]# echo "source /opt/py3/bin/activate" >> .bashrc              # 加入到开机自启

2.安装 JumpServer

(py3) [root@JumpServer ~]# yum -y install unzip
(py3) [root@JumpServer ~]# unzip jumpserver-master.zip -d /opt/
(py3) [root@JumpServer ~]# mv /opt/jumpserver-master/ /opt/jumpserver
(py3) [root@JumpServer ~]# yum -y install $(cat /opt/jumpserver/requirements/rpm_requirements.txt)     # 安装依赖包

1)安装 Python 库

方式一:安装 Python 库(没网)

(py3) [root@JumpServer ~]# pip install --no-index --find-links=/root/pip-packs/ pyasn1 six cffi pytest-runner
(py3) [root@JumpServer ~]# pip install --no-index --find-links=/root/pip-packs/ -r /opt/jumpserver/requirements/requirements.txt

注解:

  • --no-index:忽略包索引(仅仅从 --find-links 的链接地址中去查找包)
  • --find-links <url>:如果指定为 IP 地址,就会从该地址进行查找依赖包并进行下载,如果指定的是本地文件,则直接从本地文件下载。

方式二:安装 Python 库(有网)

(py3) [root@JumpServer ~]# mkdir /root/.pip
(py3) [root@JumpServer ~]# cat <<END> /root/.pip/pip.conf
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple                       # 指定清华源
[install]
trusted-host=mirrors.aliyun.com
END
(py3) [root@JumpServer ~]# pip install --upgrade pip                       # 更新 pip
(py3) [root@JumpServer ~]# pip install -r /opt/jumpserver/requirements/requirements.txt

2)安装 Redis

(py3) [root@JumpServer ~]# yum -y install redis
(py3) [root@JumpServer ~]# systemctl start redis

3)安装 MySQL

(py3) [root@JumpServer ~]# yum -y install mariadb mariadb-server mariadb-devel
(py3) [root@JumpServer ~]# systemctl start mariadb
(py3) [root@JumpServer ~]# mysql
MariaDB [(none)]> create database jumpserver default charset 'utf8';
MariaDB [(none)]> grant all on jumpserver.* to jumpserver@127.0.0.1 identified by 'jumpserver';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit

4)生成密钥

(py3) [root@JumpServer ~]# cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 49;echo
tmctZBlMSF6TEo02tQL6qWNPDBduJ2dAN2eMO6DRDeGekDVro
(py3) [root@JumpServer ~]# cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16;echo
R9e1h2ZFuf8WDDbi

修改 JumpServer 配置文件

(py3) [root@JumpServer ~]# cd /opt/jumpserver/
(py3) [root@JumpServer jumpserver]# cp config_example.yml config.yml
(py3) [root@JumpServer jumpserver]# vim config.yml
# 配置密钥
SECRET_KEY: tmctZBlMSF6TEo02tQL6qWNPDBduJ2dAN2eMO6DRDeGekDVro
BOOTSTRAP_TOKEN: R9e1h2ZFuf8WDDbi
# 数据库设置
DB_ENGINE: mysql
DB_HOST: 127.0.0.1
DB_PORT: 3306
DB_USER: jumpserver
DB_PASSWORD: jumpserver
DB_NAME: jumpserver
# Redis配置
REDIS_HOST: 127.0.0.1
REDIS_PORT: 6379
# REDIS_PASSWORD:

生成数据库表结构和初始化数据

(py3) [root@JumpServer jumpserver]# cd utils/
(py3) [root@JumpServer utils]# sh make_migrations.sh

5)运行 JumpServer

(py3) [root@JumpServer ~]# vim /usr/lib/systemd/system/jms.service
[Unit]
Description=jms
After=network.target mariadb.service redis.service docker.service
Wants=mariadb.service redis.service docker.service[Service]
Type=forking
Environment="PATH=/opt/py3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
ExecStart=/opt/jumpserver/jms start all -d
ExecRestart=/opt/jumpserver/jms restart all -d
ExecStop=/opt/jumpserver/jms stop[Install]
WantedBy=multi-user.target
(py3) [root@JumpServer ~]# systemctl daemon-reload
(py3) [root@JumpServer ~]# systemctl start jms

登录验证:http://192.168.1.1:8080

  • 这里只是部署了 JumpServer,没有 Web Terminal,所以访问 Web Terminal(Web Linux 终端)会报错。

3.安装 Web Terminal 组件

(py3) [root@JumpServer ~]# ls
anaconda-ks.cfg  koko-master-6d4e69b-linux-amd64.tar.gz  ...
(py3) [root@JumpServer ~]# tar xf koko-master-6d4e69b-linux-amd64.tar.gz -C /opt/
(py3) [root@JumpServer ~]# chown -R root:root /opt/kokodir/
(py3) [root@JumpServer ~]# cd /opt/kokodir/
(py3) [root@JumpServer kokodir]# cp config_example.yml config.yml
(py3) [root@JumpServer kokodir]# vim config.yml                                    #密钥要跟 JumpServer 密钥一致
BOOTSTRAP_TOKEN: R9e1h2ZFuf8WDDbi
SECRET_KEY: tmctZBlMSF6TEo02tQL6qWNPDBduJ2dAN2eMO6DRDeGekDVro
(py3) [root@JumpServer kokodir]# nohup ./koko &                                    #后台运行
(py3) [root@JumpServer kokodir]# netstat -anpt | egrep '2222|5000'

将 KoKo 加入到开启自启

(py3) [root@JumpServer kokodir]# echo "cd /opt/kokodir && nohup ./koko &" >> /etc/rc.local
(py3) [root@JumpServer kokodir]# chmod +x /etc/rc.local

验证:

  • 有了 Web Terminal 以后,我们便可以远程堡垒机,然后通过堡垒机来登录内部服务器来进行管理。

4.安装 Luna 组件

(py3) [root@JumpServer ~]# ls
anaconda-ks.cfg  luna.tar.gz  ...
(py3) [root@JumpServer ~]# tar xf luna.tar.gz -C /opt/
(py3) [root@JumpServer ~]# chown -R root:root /opt/luna/

5.设置 Nginx 整合各组件

(py3) [root@JumpServer ~]# yum -y install nginx
(py3) [root@JumpServer ~]# vim /etc/nginx/nginx.conf
server {...client_max_body_size 100m;                                       #录像及文件上传大小限制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";proxy_set_header X-Real-IP $remote_addr;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;access_log off;}location /coco/ {proxy_pass http://localhost:5000/coco/;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;access_log off;}location / {proxy_pass http://localhost:8080;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}......
(py3) [root@JumpServer ~]# nginx -t                                        #检查配置文件是否正确
(py3) [root@JumpServer ~]# systemctl start nginx                       #启动 Nginx 服务


登录 JumpServer

三、JumpServer 使用

1.配置 JumpServer 基本设置

  • 修改当前站点的 URL 为本机 IP 或 JumpServer 的域名,不然新建用户发送过去的邮件修改不了密码。


设置 JumpServer 邮件

2.创建用户


查看邮件:

3.创建用户组

4.添加资产

准备工作:(只需要开启两台机器即可,并不需要做相应配置)

主机名 操作系统 IP 地址
Docker CentOS 7.4 192.168.1.2
Kubernetes CentOS 7.4 192.168.1.3

1)添加被管理端 root 账号

2)添加资产

3)创建命令过滤器

4)创建过滤器规则

5)创建系统用户

5.资产授权

6.验证

1)使用 Web 终端验证

  • 需要切换为管理用户 zhangsan —— 会话管理 —— Web 终端


2)使用 Xshell 登录验证

(py3) [root@localhost ~]# ssh zhangsan@192.168.1.1 -p 2222

JumpServer 堡垒机相关推荐

  1. jumpserver 堡垒机环境搭建(图文详解)

    Jumpserver 是一款由python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能.基于ssh协议来管理,客户端无需安装agent. 特点: 完全开源,GPL授权 Python编写,容易 ...

  2. activiti动态增加节点_支持动态系统用户,JumpServer 堡垒机 V1.5.7 发布

    3月23日,JumpServer堡垒机发布V1.5.7版本.该版本新增动态系统用户和录像离线播放等功能,并完成了若干功能优化和 Bug修复.在JumpServer V1.5.7版本中,新增的动态系统用 ...

  3. CentOS下搭建Jumpserver堡垒机

    什么是堡垒机? 堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段监控和记录运维人员对网络内的服务器.网络设备.安全设备.数据库等设备的操作行为 ...

  4. jumpserver堡垒机 (资源)

    23.5 jumpserver介绍 • 官网www.jumpserver.org • 跳板机概述: 跳板机就是一台服务器,开发戒运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标 设备迚 ...

  5. 添加负载机_从 Coco 转向 Koko,Jumpserver 堡垒机 V1.5.3 发布

    2019年9月30日,Jumpserver堡垒机发布V1.5.3版本.自 V1.5.3 版本起,Koko(即基于Go语言开发的SSH客户端)将担任Coco(即基于Python语言开发的SSH客户端)在 ...

  6. 哇哦,教你如何使用jumpserver堡垒机添加windows资产

    文章目录 一.背景 二.前提 2.1.准备 2.2.打开 Windows 远程设置 三.jumpserver配置windows资产 3.1.创建资产时 系统平台 选择 Windows 3.2.正常创建 ...

  7. 支持国产ARM64架构部署,支持使用rz、sz命令上传下载文件,JumpServer堡垒机v2.12.0发布

    支持国产ARM64架构部署,JumpServer堡垒机v2.12.0发布 7月19日,JumpServer开源堡垒机正式发布v2.12.0版本.在这一版本中,JumpServer新增支持ARM64架构 ...

  8. 社区分享丨雪花啤酒的JumpServer堡垒机使用体会

    编者注:2022年1月,JumpServer开源社区与雪花啤酒(成都)有限公司的王工就堡垒机使用的话题进行了在线访谈.以下内容根据本次访谈的内容整理而成. 华润雪花啤酒成立于1993年,总部位于北京, ...

  9. 【堡垒机测评】关于纽盾堡垒机、jumpserver堡垒机、行云管家堡垒机的使用对比

    公司的业务开展得越来越广,对IT的支撑能力要求也越来越高了.有几个方面表现得特别突出:一是业务系统在不断膨胀,用到的主机和服务(如数据库)也随之膨胀:二是业务系统在逐渐往云上搬,使用的云资源在逐渐增多 ...

  10. 三、JumpServer堡垒机用户使用手册

    本文主要介绍JumpServer堡垒机的用户常用功能,包括使用ssh.web方式登录管理服务器.服务器文件上传.批量命令管理服务器等. 目录 一.WEB管理服务器 1.浏览器登录 2.资产管理 3.批 ...

最新文章

  1. python cv2 hsv数组,len()与 size字段的区别
  2. 用边缘计算为智能制造提速,行业的破局者是他们
  3. servlet——登录练习(登录页面登录请求登录请求处理)
  4. java字符串10_十个最常见的Java字符串问题
  5. 解决media player内部应用程序错误
  6. 一站式体验腾讯云音视频及融合通信技术
  7. LeetCode题解 343.Integer Break
  8. 机器视觉--图像形态学
  9. ShadowMap Sample
  10. POJ1637 Sightseeing tour(判定混合图欧拉回路)
  11. 中文核心期刊是什么?
  12. ADB连接手机和简单命令
  13. python实现广义线性模型
  14. qq传输文件的软件测试点,QQ传文件速度对比测试活动
  15. OceanBase部署observer启动后log日志狂写问题
  16. 一站式解决网站死链问题
  17. UG NX二次开发(C#)-建模-分割曲线
  18. 计算机版音乐教学,计算机音乐技术在高职音乐教学的应用
  19. vscode+authorized_keys登录不上的原因
  20. java毕业设计学生社团管理与评价系统Mybatis+系统+数据库+调试部署

热门文章

  1. iOS之block基础及传值
  2. 深度学习ReLU激活函数
  3. 音乐播放器获取音乐列表
  4. 如何判断一个度数数列能否构成简单图
  5. 掌握Tiles 框架 (一)---Tiles入门和Tiles 框架和体系结构
  6. 浅谈大数据建模的主要技术:维度建模
  7. AC自动机(算法介绍)
  8. python提取时间段日期_Python 获取起止日期段中的时间列表
  9. 初级应急响应-Windows-常用工具
  10. CAD 初学者心得体会