Skip to main content
开放网络的先行者与推动者—星融元
加入我们技术支持(Support)  TEL:(+86)4000989811
开源堡垒机

JumpServer-开源堡垒机的部署

JumpServer-开源堡垒机的部署

1 JumpServer简介

Jumpserver 是全球首款完全开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 机制的运维安全审计系统。

Jumpserver 使用 Python / Django 进行开发,遵循 Web 2.0 规范,配备了业界领先的 Web Terminal 方案,交互界面美观、用户体验好。

Jumpserver 采纳分布式架构,支持多机房跨区域部署,支持横向扩展,无资产数量及并发限制。

2 目标

使用Jumpserver统一管理公司内网资源,可以实现不通过内网来访问公司Windows/Linux资源。

3 环境准备

一台server,操作系统CentOS 7.4.1708 镜像CentOS-7-x86_64-DVD-1810.iso,IP 192.168.5.135,服务器具体配置如下:

  • 硬件配置:2个CPU核心, 4G 内存, 50G 硬盘(最低)
  • Python = 3.6.x

4 组件说明

  • JumpServer 为管理后台, 管理员可以通过 Web 页面进行资产管理、用户管理、资产授权等操作, 用户可以通过 Web 页面进行资产登录, 文件管理等操作
  • Koko 为 SSH Server 和 Web Terminal Server 。用户可以使用自己的账户通过 SSH 或者 Web Terminal 访问 SSH 协议和 Telnet 协议资产
  • Luna 为 Web Terminal Server 前端页面, 用户使用 Web Terminal 方式登录所需要的组件
  • Guacamole 为 RDP 协议和 VNC 协议资产组件, 用户可以通过 Web Terminal 来连接 RDP 协议和 VNC 协议资产 (暂时只能通过 Web Terminal 来访问)

5 端口说明

  • JumpServer 默认 Web 端口为 8080/tcp, 默认 WS 端口为 8070/tcp
  • Koko 默认 SSH 端口为 2222/tcp
  • Guacamole 默认端口为 8081/tcp,
  • Nginx 默认端口为 80/tcp
  • Redis 默认端口为 6379/tcp
  • Mysql 默认端口为 3306/tcp

6 部署过程

6.1 关闭SELinux

SELinux不关闭的情况下会发生无法访问的问题。

[root@localhost  ~]# setenforce 0
[root@localhost  ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

6.2 关闭防火墙

防止安装时出现各个组件的端口不能访问的问题。

[root@localhost  ~]#systemctl stop firewalld && systemctl dible firewalld

6.3 安装依赖包

[root@localhost  ~]# yum -y install wget gcc epel-release git

6.4 安装Redis

JumpServer使用Redis做cache和celery broke。

[root@localhost  ~]# yum -y install redis
[root@localhost  ~]# systemctl enable redis
[root@localhost  ~]# systemctl start redis

6.5 安装Mysql并授权

JumpServer使用Mysql做数据库,也支持Sqlite3,Postgres等。

[root@localhost  ~]# yum -y mariadb mairadb-devel mariadb-server
[root@localhost  ~]# systemctl enable mairadb
[root@localhost  ~]# systemctl start mariadb
[root@localhost  ~]# mysql -uroot -e "create database jumpserver default charset 'utf8'; grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'tera123'; flush privileges;"

6.6 Mysql修改存储路径

Mysql yum安装后默认存储路径为根目录,所以需要修改存储路径防止根目录磁盘被占满。

[root@localhost  ~]# vi /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
datadir=/home/mysql
socket=/home/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
[root@localhost  ~]# vi /etc/my.cnf.d/client.cnf 
[client-mariadb]
socket=/home/mysql/mysql.sock
[root@localhost  ~]# systemctl restart mariadb

6.7 安装Nginx

安装Nginx,反向代理JumpServer各个组件。

[root@localhost  ~]#vi /etc/yum.repos.d/nginx.rep
[nginx]
name=nginx 
repobaseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
[root@localhost  ~]# yum -y install nginx
[root@localhost  ~]# systemctl enable nginx

6.8 安装Pyhon3.6

[root@localhost  ~]# yum -y install python36 python36-devel
[root@localhost  ~]# cd /home
[root@localhost  ~]# python3.6 -m venv py3
[root@localhost  ~]# source /home/py3/bin/activate

6.9 安装JumpServer

[root@localhost  ~]# cd /home
[root@localhost  ~]# git clone --depth=1 https://github.com/jumpserver/jumpserver.git
[root@localhost  ~]# yum -y install $(cat /home/jumpserver/requirements/rpm_requirements.txt)

6.10 安装Python依赖库

[root@localhost  ~]# pip install wheel
[root@localhost  ~]# pip install --upgrade pip setuptools
[root@localhost  ~]# pip install -r /home/jumpserver/requirements/requirements.txt

6.11 修改JumpServer配置文件

[root@localhost  ~]# cd /home/jumpserver
[root@localhost  ~]# cp config_example.yml config.yml
[root@localhost  ~]# vi config.yml
SECRET_KEY: FjAvZ0D5c6LwaUJVb7AwPPsiFl2wVVpMGQl41LBbQKi23bPEiK
BOOTSTRAP_TOKEN: e7t4EZ0BBw5GfvlH
DEBUG: false
LOG_LEVEL: ERROR
SESSION_EXPIRE_AT_BROWSER_CLOSE: true
DB_ENGINE: mysql
DB_HOST: 127.0.0.1
DB_PORT: 3306
DB_USER: jumpserver
DB_PASSWORD: tera123
DB_NAME: jumpserver
HTTP_BIND_HOST: 0.0.0.0
HTTP_LISTEN_PORT: 8080
WS_LISTEN_PORT: 8070
REDIS_HOST: 127.0.0.1
REDIS_PORT: 6379

6.12 运行JumpServer

[root@localhost  ~]# cd /home/jumpserver
[root@localhost  ~]# ./jms start all -d

6.13 安装Docker

[root@localhost  ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@localhost~  ] # yum-config-manager\
--add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost  ~]# yum -y install docker-ce wget
[root@localhost  ~]# mkdir /etc/docker
[root@localhost  ~] #yum -y install docker-ce wget
[root@localhost  ~] #systemctl enable docker
[root@localhost  ~] #systemctl start docker

6.14 部署Koko与Guacamole

[root@localhost  ~]# docker run --name jms_koko -d -p 2222:2222\
-p 127.0.0.1:5000:5000\
-e CORE_HOST=http://192.168.5.135:8080\
-e BOOTSTRAP_TOKEN=e7t4EZ0BBw5GfvlH \
--restart=always wojiushixiaobai/jms_koko:1.5.6
[root@localhost  ~]# docker run --name jms_guacamole -d -p 127.0.0.1:8081:8080\
-e JUMPSERVER_SERVER=http://192.168.5.135:8080\ 
-e BOOTSTRAP_TOKEN=e7t4EZ0BBw5GfvlH\ 
--restart=always wojiushixiaobai/jms_guacamole:1.5.6

6.15 部署Luna

Luna为JumpServer的Web前端。

[root@localhost  ~]# cd /home
[root@localhost  ~]# wget https://demo.jumpserver.org/download/luna/1.5.6/luna.tar.gz
[root@localhost  ~]# tar -xvf luna.tar.gz
[root@localhost  ~]# chown -R root:root luna 

6.16 配置Nginx

[root@localhost  ~]# vi /etc/nginx/conf.d/default.conf
server {
    listen 80;
    # server_name _;
    client_max_body_size 1000m;  # 录像及文件上传大小限制
    client_header_timeout 360s;
    large_client_header_buffers 4 16k;
    client_body_buffer_size 128k;
    proxy_connect_timeout 600;
    proxy_read_timeout 600;
    proxy_send_timeout 600;

    location /luna/ {
        try_files $uri / /index.html;
        alias /home/luna/;  # luna 路径, 如果修改安装目录, 此处需要修改
    }
    location /media/ {
        add_header Content-Encoding gzip;
        root /home/jumpserver/data/;  # 录像位置, 如果修改安装目录, 此处需要修改
    }

    location /static/ {
        root /home/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_pass http://localhost:8070;
        proxy_http_version 1.1;
        proxy_buffering off;
        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 / {
        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;
        access_log off;
    }
}
[root@localhost  ~]# systemctl start nginx

6.17 端口检查

检查端口状态,必须有6379,8080,8081,80,5555,8070,3306,2222几个端口。

[root@localhost  ~]# netstat -nlp |grep tcp

6.18 验证JumpServer

默认登录密码,admin:admin,登录成功有欢迎界面,此次部署即成功。

[root@localhost  ~]# ssh -p2222 admin@192.168.5.135

7 参考资料

  1. JumpServer官网:http://www.jumpserver.org/
  2. JumpServer文档:https://jumpserver.readthedocs.io/zh/master/

相关阅读。

如有其它问题,请填写右侧需求表单联系我们。

A-lab-云网络, A-lab-部署验证

对星融元产品感兴趣?

立即联系!

返回顶部

© 星融元数据技术(苏州)有限公司 苏ICP备17070048号-2