Jumpserver部署及使用

Jumpserver部署及使用

总体介绍:

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

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

Jumpserver 采纳分布式架构, 支持多机房跨区域部署, 中心节点提供 API, 各机房部署登录节点, 可横向扩展、无并发访问限制

Jumpserver 现已支持管理 SSH、 Telnet、 RDP、 VNC 协议资产

jumpserver组件说明:

jumpserver:jumpserver的管理后台:

coco:实现了ssh server和web终端 的组件,提供ssh和websocket接口

luna:是web terminal的前端(用来展示用户和与用户进行交互)前端页面都是由该项目完成的

guancamole:apache的跳板机项目,jumpserver使用其组件实现RDB(远程桌面)功能,jumpderver在guacamole中添加额外

Jumpserver的特点:

  • 完全开源
  • Python编写,容易二次开发使用
  • 集成了ansible,批量命令等
  • 支持web Terminal (web终端,可以在浏览器web页面运行终端,管理服务器资源)
  • Bootstrap编写,界面美观(前段页面效果,有web前端人员完成的)
  • 自动回收硬件信息(如后端服务器的磁盘空间、内存大小等信息)
  • 录像回放
  • 命令搜索
  • 实时监控

 

安装部署:

Jumpserver 环境要求:

  • 硬件配置: 2个CPU核心, 4G 内存, 50G 硬盘(最低)
  • 操作系统: Linux 发行版 x86_64
  • Python = 3.6.x
  • Mysql Server ≥ 5.6
  • Mariadb Server ≥ 5.5.56
  • Redis

部署环境:

  • 系统: CentOS 7
  • IP: 192.168.1.10
  • 关闭 selinux 和防火墙
  •  

安装步骤:

将系统环境字体设置成中文,因为jumpserver的日志文件里面的内容会包含中文字符,不支持可能会乱码

localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8

export LC_ALL=zh_CN.UTF-8

echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf

  • 装备python3和python虚拟环境:

配置网络yum源:

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

Yum 加速设置请参考 http://mirrors.163.com/.help/centos.html

运行一下命令生成缓存:

yum  clean  all

yum  makecache

1、安装依赖包:

yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git

2、编译安装python3

[root@localhost ~]# tar  xvf  Python-3.6.1.tar.xz

[root@localhost Python-3.6.1]# cd  Python-3.6.1/

[root@localhost Python-3.6.1]# ./configure  &&  make  &&  make  install

3、建立python虚拟环境

因为 CentOS 6/7 自带的是 Python2,而 Yum 等工具依赖原来的 Python,为 了不扰乱原来的环境我们来使用 Python 虚拟环境

[root@localhost ~]# cd  /opt/

[root@localhost opt]# python3  -m  venv  py3

[root@localhost opt]# source  /opt/py3/bin/activate

看到下面的提示符代表成功,以后运行 Jumpserver 都要先运行以上 source 命令,以下所有命令均 在该虚拟环境中运行

(py3) [root@localhost opt]#

4、设置自动在任意python虚拟环境

(py3) [root@localhost opt]# cd  /opt/

(py3) [root@localhost opt]# unzip  autoenv.zip

(py3) [root@localhost opt]#  echo 'source /opt/autoenv/activate.sh' >> ~/.bashrc

(py3) [root@localhost opt]# source ~/.bashrc

  • 安装第一个组件jumpserver并配置

(py3) [root@localhost opt]# cd  /opt/

(py3) [root@localhost opt]# unzip jumpserver.zip

(py3) [root@localhost opt]# echo "source /opt/py3/bin/activate" > /opt/jumpserver/.env

(py3) [root@localhost opt]# cd  jumpserver/

//首次进入按y即可

安装依赖RPM包:

(py3) [root@localhost jumpserver]# cd  requirements/

(py3) [root@localhost requirements]# yum  -y  install   $(cat  rpm_requirements.txt)

安装python库依赖:

(py3) [root@localhost requirements]# pip  install  --upgrade  pip

(py3) [root@localhost requirements]#pip  install  -r  requirements.txt  -I  https://pypi.python.org/simple

安装mysql,版本必须是5.5以上

(py3) [root@localhost requirements]# yum  -y  install   mariadb*

(py3) [root@localhost requirements]# systemctl   start  mariadb

(py3) [root@localhost requirements]# netstat   -anput  |  grep  3306

(py3) [root@localhost requirements]# mysqladmin  -u  root  password 123.com

MariaDB [(none)]> create database  jumpserver  default  charset  'utf8';

MariaDB [(none)]> grant  all on jumpserver.*  to  [email protected]  identified  by  '123.com';

MariaDB [(none)]> flush  privileges;

安装redis:

(py3) [root@localhost ~]# tar  zxf  redis-4.0.14.tar.gz

(py3) [root@localhost ~]# cd  redis-4.0.14/

(py3) [root@localhost redis-4.0.14]# make  &&   make   install

(py3) [root@localhost redis-4.0.14]# cd  utils/

(py3) [root@localhost utils]# ./install_server.sh   //一路回车

(py3) [root@localhost utils]# /etc/init.d/redis_6379  start

(py3) [root@localhost utils]# netstat  -anput  |  grep  6379

修改jumpserver的配置文件:

(py3) [root@localhost ~]# cd  /opt/jumpserver/

(py3) [root@localhost jumpserver]# cp  config_example.yml   config.yml

(py3) [root@localhost jumpserver]# cat  /dev/urandom  |  tr  -dc  A-Za-z0-9  |  hend  -c  49

NjGA1lRO87Cp6HBngf6yvJbCkbdyYeCFbpxCJtMGgQqIRiOkT  //添加到配置文件里

(py3) [root@localhost jumpserver]# cat  /dev/urandom  |  tr  -dc  A-Za-z0-9  |  head  -c  16

MvRlnZvmNt9V4uY5

修改一下内容:

(py3) [root@localhost jumpserver]# grep  -v  ^#  config.yml  |  grep -v  ^$

SECRET_KEY: NjGA1lRO87Cp6HBngf6yvJbCkbdyYeCFbpxCJtMGgQqIRiOkT

BOOTSTRAP_TOKEN: MvRlnZvmNt9V4uY5

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: 123.com

DB_NAME: jumpserver

HTTP_BIND_HOST: 0.0.0.0

HTTP_LISTEN_PORT: 8080

REDIS_HOST: 127.0.0.1

REDIS_PORT: 6379

运行jumpserver:

(py3) [root@localhost jumpserver]# ./jms  start  all  -d    //-d:在后台运行

第一次初始化的时候会有点慢

(py3) [root@localhost jumpserver]# netstat  -anput  |  grep  8080

  • 安装coco组件并配置:

(py3) [root@localhost jumpserver]# cd  /opt/

(py3) [root@localhost opt]# unzip  coco.zip

(py3) [root@localhost opt]# cd  coco/

(py3) [root@localhost coco]#  echo "source /opt/py3/bin/activate" > /opt/coco/.env  //进入coco目录时自动载入python虚拟环境

(py3) [root@localhost coco]# cd  requirements/

首次进入 coco 文件夹会有提示,按 y 即可

安装依赖:

(py3) [root@localhost requirements]# yum  -y  install  $(cat rpm_requirements.txt)

(py3) [root@localhost requirements]# pip install -r requirements.txt -i https://pypi.python.org/simple

修改配置文件并运行:

修改内容如下:

BOOTSTRAP_TOKEN: MvRlnZvmNt9V4uY5   //和前面的那个一样

LOG_LEVEL: ERROR

(py3) [root@localhost coco]# ./cocod  start  -d

(py3) [root@localhost coco]# netstat  -anput  |  grep  2222

  • 安装guacmole,这个服务在安装过程中比较复杂,采用docker仓库打包号的镜像

安装docker:

(py3) [root@localhost opt]# yum install -y yum-utils device-mapper-persistent-data lvm2

添加docker官方源:

(py3) [root@localhost opt]# yum-config-manager --add-repo  https://download.docker.com/linux/centos/docker-ce.repo

(py3) [root@localhost opt]# yum makecache fast

(py3) [root@localhost opt]# yum install docker-ce   //会有两个提示,输入y即可

(py3) [root@localhost opt]# systemctl  start  docker

(py3) [root@localhost opt]# systemctl  enable  docker

(py3) [root@localhost opt]# ps  -ef  |  grep  docker    //这个docker是作为进程在运行

(py3) [root@localhost opt]#  docker run --name jms_guacamole -d  -p 8081:8080 -v /opt/guacamole/key:/config/guacamole/key  -e JUMPSERVER_KEY_DIR=/config/guacamole/key  -e  -e JUMPSERVER_SERVER=http://192.168.1.10:8080  jumpserver/guacamole:latest

  • 安装luna,只需要解压到/opt目录就好了

(py3) [root@localhost opt]# tar zxf  luna.tar.gz

  • 安装nginx反向代理

(py3) [root@localhost nginx-1.14.0]# tar zxf  nginx-1.14.0.tar.gz

(py3) [root@localhost nginx-1.14.0]# cd  nginx-1.14.0/

(py3) [root@localhost nginx-1.14.0]# ./configure &&  make  &&  make  install

修改配置文件:

在server模块中添加,注释掉原有的 /

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

 

    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 /socket.io/ {

        proxy_pass       http://localhost:5000/socket.io/;  # 如果coco安装在别的服务器, 请填写它的ip

        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/;  # 如果coco安装在别的服务器, 请填写它的ip

        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/;  # 如果guacamole安装在别的服务器, 请填写它的ip

        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 / {

        proxy_pass http://localhost:8080;  # 如果jumpserver安装在别的服务器, 请填写它的ip

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header Host $host;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

修改完后启动nginx:

(py3) [root@localhost ~]# /usr/local/nginx/sbin/nginx

(py3) [root@localhost ~]# netstat  -anput  |  grep  nginx

  • 检查应用是否正常运行

(py3) [root@localhost ~]# cd  /opt/jumpserver/

(py3) [root@localhost jumpserver]# ./jms  status

(py3) [root@localhost jumpserver]# cd  /opt/coco/

(py3) [root@localhost coco]# ./cocod  status

(py3) [root@localhost coco]# docker  ps

服务全部启动后,访问http://192.168.1.10,访问nginx代理端口,不要再通过8080端口访问了

  • 访问

浏览器输入192.168.1.10

账号:admin

密码:admin   //都是默认的

登录进来后的操作:

用户管理-------用户列表-------创建用户

资产管理-------管理用户-------创建管理用户

资产管理-------管理用户-------创建系统用户(用户名尽量为root,选择手动登录,这个用户用来连接后端资产的)

资产管理-------资产列表-------创建资产-------新开一台主机填写新开主机的IP地址

权限管理-------资产授权-------创建授权规则

会话管理-------web终端--------可以进行连接

创建文件测试:

发布了27 篇原创文章 · 获赞 14 · 访问量 581

猜你喜欢

转载自blog.csdn.net/weixin_45636702/article/details/102933630