JumpServer 堡垒机

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: JumpServer 是全球首款完全开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 的专业运维审计系统。

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 组件


image.png


  • 注意:Coco 和 Luna 是无状态的,可以部署多份,支持 HA(高可用) 和 LB(负载均衡)


二、部署 JumpServer 堡垒机



准备工作:


image.png



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/


image.png


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)


image.png


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 :如果指定为 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


image.png


  • 这里只是部署了 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


验证:


image.png


  • 有了 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 服务


image.png


登录 JumpServer


image.png


三、JumpServer 使用



1.配置 JumpServer 基本设置


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


image.png


设置 JumpServer 邮件


image.png

image.png


2.创建用户


image.png


查看邮件:

image.png



3.创建用户组


image.png


4.添加资产


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


image.png



1)添加被管理端 root 账号


image.png


2)添加资产


image.png


3)创建命令过滤器


image.png


4)创建过滤器规则


image.png


5)创建系统用户


image.png


5.资产授权


image.png


6.验证


1)使用 Web 终端验证


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


image.png


2)使用 Xshell 登录验证


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


image.png

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
运维 安全 Linux
实现远程访问Linux堡垒机:通过JumpServer系统进行安全的服务器管理
实现远程访问Linux堡垒机:通过JumpServer系统进行安全的服务器管理
|
运维 安全 Linux
Jumpserver堡垒机部署和基本使用
Jumpserver堡垒机部署和基本使用
1096 2
|
3月前
|
Linux 数据安全/隐私保护 Windows
【JumpServer教程】简便添加Windows资产:JumpServer堡垒机使用指南
本文是JumpServer堡垒机使用指南,介绍了如何在JumpServer中简便添加Windows资产的步骤,包括准备工作、开启Windows远程设置、在JumpServer中配置Windows资产以及授权使用。
649 1
【JumpServer教程】简便添加Windows资产:JumpServer堡垒机使用指南
|
6月前
|
运维 安全 Linux
如何在CentOS部署JumpServer堡垒机并实现无公网ip环境远程访问
如何在CentOS部署JumpServer堡垒机并实现无公网ip环境远程访问
205 0
|
6月前
|
运维 安全 Linux
如何在Linux部署JumpServer堡垒机并实现远程访问本地服务
如何在Linux部署JumpServer堡垒机并实现远程访问本地服务
224 0
|
6月前
|
运维 安全 Linux
开源堡垒机JumpServer本地安装并配置公网访问地址
开源堡垒机JumpServer本地安装并配置公网访问地址
547 0
|
6月前
|
运维 安全 Linux
Linux JumpServer 堡垒机远程访问
Linux JumpServer 堡垒机远程访问
|
网络协议 NoSQL 关系型数据库
jumpserver堡垒机
jumpserver堡垒机
133 0
|
网络安全 数据安全/隐私保护
【JumpServer-初识篇】一键搭建JumpServer堡垒机、对接server服务器主机(下)
【JumpServer-初识篇】一键搭建JumpServer堡垒机、对接server服务器主机(下)
434 0
|
运维 Kubernetes 监控
【JumpServer-初识篇】一键搭建JumpServer堡垒机、对接server服务器主机(上)
【JumpServer-初识篇】一键搭建JumpServer堡垒机、对接server服务器主机
653 0

相关实验场景

更多
下一篇
无影云桌面