Jumpserver堡垒机安装部署

JumpServer

  • umpServer 是全球首款完全开源的堡垒机, 使用 GNU GPL v2.0 开源协议, 是符合 4A 的专业运维审计系统。
  • JumpServer 使用 Python / Django 进行开发, 遵循 Web 2.0 规范, 配备了业界领先的 Web Terminal 解决方案, 交互界面美观、用户体验好。
  • JumpServer 采纳分布式架构, 支持多机房跨区域部署, 中心节点提供 API, 各机房部署登录节点, 可横向扩展、无并发访问限制。
  • JumpServer 现已支持管理 SSH、 Telnet、 RDP、 VNC 协议资产。

组件说明:

  • Jumpserver 为管理后台,管理员可以通过Web页面进行资产管理、用户管理、资产授权等操作
  • koko为SSH Server和Web Terminal Server。用户可以通过使用自己的账户登录SSH或者WebSocket 接口直接访问被授权的资产。不需要知道服务器的账户密码
  • Lina 是 JumpServer 的前端 UI
  • Luna为Web Terminal Server 前端页面,用户使用Web Terminal方式登录所需要的组件
  • Guacamole为Windows组件,用户可以通过Web Terminal来连接 Windows资产 (暂时只能通过 Web Terminal 来访问)。Apache 跳板机项目,Jumpserver 使用其组件实现 RDP 功能,Jumpserver 并没有修改其代码而是添加了额外的插 件,支持 Jumpserver 调用

端口说明:

  • Jumpserver 默认端口为 8080/tcp 配置文件在 jumpserver/config.py
  • koko 默认SSH 端口为 2222/tcp ,默认Web Terminal 端口为 5000/tcp 配置文件在 coco/conf.py
  • Guacamole 默认端口为 8081/tcp 在 docker run 时指定
  • Nginx 默认端口为 80/tcp 配置在 nginx/nginx.conf 中指定

JumpServer功能

身份验证Authentication登录认证资源统一登录和认证;LDAP / AD 认证;RADIUS 认证;实现单点登录(OpenID 认证、CAS 认证);SSO 对接;
多因⼦认证MFA 二次认证(Google Authenticator);RADIUS 二次认证;
登录复核(X-Pack)用户登录行为受管理员的监控与控制;
授权控制Authorization多维度授权可对用户、用户组、资产、资产节点、应用以及系统用户进行授权;
资产授权资产树以树状结构进行展示;资产和节点均可灵活授权;节点内资产自动继承授权;子节点自动继承父节点授权;
应用授权实现更细粒度的应用级授权;
Kubernetes 授权支持用户通过 JumpServer 连接 Kubernetes 集群;
RemoteApp 远程应用(X-Pack)针对 Windows 系统实现更细粒度的应用级授权,并对应用操作录像进行回放审计;
动作授权实现对授权资产的文件上传、下载以及连接动作的控制;支持剪切板复制 / 粘贴(Windows 资产);
时间授权实现对授权资源使用时间段的限制;
特权指令实现对特权指令的使用,支持黑白名单;
命令过滤实现对授权系统用户所执行的命令进行控制;
文件传输与管理支持 SFTP 文件上传 / 下载;支持 Web SFTP 文件管理;
工单管理(X-Pack)支持对用户登录请求行为进行控制;支持授权工单申请;
组织管理(X-Pack)实现多租户管理与权限隔离;
账号管理Accounting集中账号管理管理⽤户管理;系统用户管理;
⽤户⻆⾊支持超级管理员、超级审计员、组织管理员(X-Pack)、组织审计员(X-Pack)、普通用户五种角色;
统⼀密码管理资产密码托管;⾃动⽣成密码;密码自动推送;密码过期设置;
改密计划(X-Pack)Linux / Windows 定期批量修改密码;⽣成随机密码;多种密码策略;
多云资产纳管(X-Pack)对私有云、公有云资产⾃动统⼀纳管;
收集⽤户(X-Pack)⾃定义任务定期收集主机⽤户;
密码匣子(X-Pack)统⼀对资产主机的⽤户密码进查看、更新、测试等操作;
安全审计Auditing登录审计支持对用户登录到 JumpServer 系统的日志进行审计;支持将审计信息收集至 Syslog;
操作审计用户操作行为审计;
会话审计⽀持在线会话内容审计;历史会话内容审计;
录像审计支持对 Linux、Windows 等资产操作的录像进行回放审计;支持对 RemoteApp(X-Pack)、MySQL、Kubernetes 等应用操作的录像进行回放审计;支持将录像上传至公有云;
指令审计支持对资产和应用等操作的命令进⾏审计;
⽂件传输审计⽀持对⽂件的上传 / 下载记录进⾏审计;
实时监控支持管理员 / 审计员实时监控用户的操作行为,并可进行实时中断,以提升用户操作的安全性;
数据库审计Database Auditing连接方式命令行方式;Web UI 方式(X-Pack);
支持的数据库MySQL 数据库;Oracle 数据库(X-Pack);MariaDB 数据库(X-Pack);PostgreSQL 数据库(X-Pack);
功能亮点语法高亮;SQL 格式化;支持快捷键;支持选择执行;SQL 历史查询;支持页面创建 DB、Table;
会话审计命令记录;录像回放。

jumpserver部署

推荐使用 极速安装 快速部署,资产规模较大参考 分布式部署 进行部署
需要提前安装 Python3.6 MySQL Redis

1.配置国内镜像源

  • yum源配置 ,详情见清华园官网 https://mirrors.tuna.tsinghua.edu.cn/help/centos/
    [wyhui]➜  ~ cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
    [wyhui]➜  ~ vim /etc/yum.repos.d/CentOS-Base.repo
    name=CentOS-$releasever - Base
    baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-7
    
    #released updates
    [updates]
    name=CentOS-$releasever - Updates
    baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/updates/$basearch/
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-7
    
    
    
    #additional packages that may be useful
    [extras]
    name=CentOS-$releasever - Extras
    baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/extras/$basearch/
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-7
    
    
    
    #additional packages that extend functionality of existing packages
    [centosplus]
    name=CentOS-$releasever - Plus
    baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/centosplus/$basearch/
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-7
    
  • 国内节点的epel源创建,详情见 https://mirrors.tuna.tsinghua.edu.cn/help/epel/
    [wyhui]➜  ~ vim /etc/yum.repos.d/epel.repo
    [epel]
    name=Extra Packages for Enterprise Linux 7 - $basearch
    baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/$basearch
    #mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
    failovermethod=priority
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
    
    [epel-debuginfo]
    name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
    baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/$basearch/debug
    #mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch
    failovermethod=priority
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
    gpgcheck=1
    
    [epel-source]
    name=Extra Packages for Enterprise Linux 7 - $basearch - Source
    baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/SRPMS
    #mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch
    failovermethod=priority
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
    gpgcheck=1
    
  • 虚拟机内DNS替换为 114DNS
    [wyhui]➜  ~ sed -i 's/nameserver 192.168.127.2/nameserver 114.114.114.114/g' /etc/resolv.conf
    

2.Redis安装

Jumpserver使用redis做cache和celery broker ( celery是python做异步通信的工具包,celery使用了非常 简单的方式实现了异步。主要是celery sender broker 到consumer的过程)

[wyhui]➜  ~ yum install redis -y 
[wyhui]➜  ~ systemctl enable redis 
[wyhui]➜  ~ systemctl start redis

3.安装mysql

3.1. 配置YUM源

yum -y localinstall http://mirrors.ustc.edu.cn/mysql-repo/mysql57-community-release-el7.rpm #执行此命令之后无需执行 下面的操作

  • 或者
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
3.2. 安装
[root@jumpserver yum.repos.d]# yum install mysql-community-server mysql-community-devel -y

##需要安装的包
mysql-community-client-5.7.32-1.el7.x86_64
mysql-community-libs-5.7.32-1.el6.x86_64
mysql-community-common-5.7.32-1.el7.x86_64
mysql-community-devel-5.7.32-1.el7.x86_64
mysql-community-server-5.7.32-1.el7.x86_64
3.3. 启动服务并修改root密码
[wyhui]➜  ~  systemctl enable mysqld.service
[wyhui]➜  ~  systemctl start mysqld.service
[wyhui]➜  ~  systemctl status mysqld.service 
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 二 2020-12-08 07:44:42 CST; 32min ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
····
  • 修改root密码
[wyhui]➜  ~ grep 'temporary' /var/log/mysqld.log
2020-12-08T06:39:43.413206Z 1 [Note] A temporary password is generated for root@localhost: VX7dXhqqhV;d  
2020-12-08T06:39:45.781230Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables
[wyhui]➜  ~ mysql -uroot -p
Enter password:  **VX7dXhqqhV;d**
Welcome to the MySQL monitor.  Commands end with ; or \g.
···
mysql> alter user 'root'@'localhost' identified by 'YUNhe123!@#';
Query OK, 0 rows affected (0.00 sec)
  • 创建jumpserver所用数据库
mysql> create database jumpserver default charset 'utf8' collate 'utf8_bin';
Query OK, 1 row affected (0.00 sec)s
mysql>  grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'ZcgDqOr5BOL6ZvKBoG3h3WRp#'; #此密码可自定义可用命令生成 后面配置文件中与之需要相同
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

4安装Python

4.1 安装 python 环境

[wyhui]➜  ~ yum install -y python36 python36-devel

4.2构建python虚拟环境

[wyhui]➜  ~ python3.6 -m venv /opt/py3
[wyhui]➜  ~ source /opt/py3/bin/activate
(py3) [wyhui]➜  ~ pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U #使用临时源升级pip,不升级后面换源可能会报错
(py3) [wyhui]➜  ~ pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple  ## 将pip源替换为国内源
(py3) [wyhui]➜  ~ yum install install -y krb5-devel -y #python所需依赖
(py3) [wyhui]➜  ~ requirements yum install gcc libffi-devel python-devel openssl-devel -y #python所需依赖

5安装jumpserver

5.1获取jumpserver的代码

(py3) [wyhui]➜  ~ cd /opt && \
cmdand> wget https://github.com/jumpserver/jumpserver/releases/download/v2.5.3/jumpserver-v2.5.3.tar.gz
···
正在保存至: “jumpserver-v2.5.3.tar.gz”

100%[==============================================================================>] 6,593,
2020-12-08 15:18:04 (1.16 MB/s) - 已保存 “jumpserver-v2.5.3.tar.gz” [6593244/6593244])
(py3) [wyhui]➜  /opt tar zxvf jumpserver-v2.5.3.tar.gz
(py3) [wyhui]➜  /opt mv jumpserver-v2.5.3 jumpserver

5.2 安装编译环境的依赖(已提前更换国内源)

(py3) [wyhui]➜  /opt cd jumpserver/requirements
(py3) [wyhui]➜  requirements python -m pip install --upgrade setuptools #  若遇到这些报错‘ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.’ 执行这些句即可
(py3) [wyhui]➜  requirements yum install -y $(cat rpm_requirements.txt)
(py3) [wyhui]➜  requirements pip install -r requirements.txt -i  https://pypi.doubanio.com/simple/ # 临时使用豆瓣源配置编译环境

5.3修改配置文件

[wyhui]➜  ~ cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 49;echo
vVPkw0jwfR2shvMJ6kxiebBo6s1TQxT72x74WNpzdQgdw2wpo  # SECRET_KEY
[wyhui]➜  ~ cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16;echo
E25QcoEOUp7Yxml9#  #BOOTSTRAP_TOKEN
(py3) [wyhui]➜  jumpserver cp config_example.yml config.yml
(py3) [wyhui]➜  jumpserver vim config.yml # 修改项如下
  SECRET_KEY: y5It9fT5DKAnlhOgtRDHwIb5KxulPuOEDdMMuibjjLPmb2lvv
  BOOTSTRAP_TOKEN: E25QcoEOUp7Yxml9#
  LOG_LEVEL: REEOR
  DB_PASSWORD: ZcgDqOr5BOL6ZvKBoG3h3WRp# #与mysql jumpserver库密码相同
  SESSION_EXPIRE_AT_BROWSER_CLOSE: true

5.4启动jumpserver

  • 后台运行使用 -d 参数./jms start all -d
  • 重启命令:./jms restart
(py3) [wyhui]➜  jumpserver ./jms start
2020-12-09 09:03:01 Wed Dec  9 09:03:01 2020
2020-12-09 09:03:01 JumpServer version v2.5.3, more see https://www.jumpserver.org
  • 访问:运行不报错,请浏览器访问 http://192.168.127.132:8080/ 默认账号: admin 密码: admin 页面 显示不正常先不用处理,搭建 nginx 代理就可以正常访问了
# 若启动遇到次错误from Crypto.Util.py3compat import byte_str  执行以下步骤即可
(py3) [wyhui]➜  pip3 uninstall pycrypto
(py3) [wyhui]➜  pip3 uninstall pycryptodome
(py3) [wyhui]➜  pip3 install pycryptodome

6. 部署koko组件

http://10.2.48.19/ 为内网源


(py3) [wyhui]cd /opt && \
wget https://github.com/jumpserver/koko/releases/download/v2.5.3/koko-v2.5.3-linux-amd64.tar.gz
tar -xf koko-v2.5.3-linux-amd64.tar.gz && \
mv koko-v2.5.3-linux-amd64 koko && \
chown -R root:root koko && \

cd koko \
mv kubectl /usr/local/bin/ && \
wget https://download.jumpserver.org/public/kubectl.tar.gz && \
tar -xf kubectl.tar.gz && \
chmod 755 kubectl && \
mv kubectl /usr/local/bin/rawkubectl && \
rm -rf kubectl.tar.gz

# 两文件都可用内网源替换
http://10.2.48.19/koko-v2.5.3-linux-amd64.tar.gz
http://10.2.48.19/kubectl.tar.gz
  • 启动koko
[wyhui]➜  /opt cd koko
[wyhui]➜  koko cp config_example.yml config.yml
[wyhui]➜  koko vim config.yml
# Bootstrap Token, 预共享秘钥, 用来注册coco使用的service account和terminal
# 请和jumpserver 配置文件中保持一致,注册完成后可以删除
BOOTSTRAP_TOKEN: E25QcoEOUp7Yxml9#
# 运行
./koko  
可以 -d 参数在后台运行
./koko -d

image.png

  • 若报错2020-12-09 19:09:25 [ERRO] POST http://127.0.0.1:8080/api/v2/terminal/terminal-registrations/ failed, get code: 401, {"detail":"身份认证信息未提供。","code":"not_authenticated"}可执行如下命令重新安装此django模块
pip install --target=/opt/py3b/python3.6/site-packages django  -i https://pypi.tuna.tsinghua.edu.cn/simple

7.下载lina组件

cd /opt &&
wget http://10.2.48.19/lina-v2.5.3.tar.gz
tar -xf lina-v2.5.3.tar.gz
mv lina-v2.5.3 lina
chown -R nginx:nginx lina

8.下载luna组件

(py3) [wyhui]➜  /opt cd /opt && \
wget http://10.2.48.19/luna-v2.5.3.tar.gz

tar -xf luna-v2.5.3.tar.gz
mv luna-v2.5.3 luna
chown -R nginx:nginx luna

9. 配置 Nginx 整合各组件

9.1 配置Nginx官方源

[wyhui]➜  ~ vim /etc/yum.repos.d/nginx.repo   
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

9.2安装,启动Nginx并修改相应配置文件

[wyhui]➜  ~ yum install nginx -y
[wyhui]➜  ~ systemctl enable nginx.service
[wyhui]➜  ~ systemctl start nginx.service
[wyhui]➜  ~ echo > /etc/nginx/conf.d/default.conf
[wyhui]➜  ~ vim /etc/nginx/conf.d/jumpserver.conf
server {
    listen 80;

    client_max_body_size 100m;  # 录像及文件上传大小限制

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

    location /luna/ {
        try_files $uri / /index.html;
        alias /opt/luna/;  # luna 路径, 如果修改安装目录, 此处需要修改
    }

    location /media/ {
        add_header Content-Encoding gzip;
        root /opt/jumpserver/data/;  # 录像位置, 如果修改安装目录, 此处需要修改
    }

    location /static/ {
        root /opt/jumpserver/data/;  # 静态资源, 如果修改安装目录, 此处需要修改
    }

    location /koko/ {
        proxy_pass       http://localhost:5000;
        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 /guacamole/ {
        proxy_pass       http://localhost:8081/;
        proxy_buffering off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
        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 /ws/ {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:8070;
        proxy_http_version 1.1;
        proxy_buffering off;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    location /api/ {
        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;
    }

    location /core/ {
        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;
    }

    location / {
        rewrite ^/(.*)$ /ui/$1 last;
    }
}

9.3 重载Nginx

nginx -t
nginx -s reload

13. 开始使用 JumpServer

  • web页面管理
    image.png
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值