Jumpserver简介与配置

Jumpserver

官方文档:http://docs.jumpserver.org/zh/master/

Jumpserver通常在公司内部架设,被称作“堡垒机”,使公司内部员工,通过堡垒机,在家也可以联通到公司内的服务器。
Jumpserver可以管理和设置用户权限,针对不同的用户,授予不同的服务器访问权限;还提供有监控机制,记录用户登陆后所做的操作,如出现严重事件,可用于追责。提供命令规则限制,使用户不能执行规则定义的shell命令,防止出现不可挽回的损失
openstac与Jumpserver不同的是,日志功能过于简单,不会记录所做的操作,so,不适用于给一些初级开发使用。仅适用于高级开发和运维人员使用。

默认情况下,Jumpserver版本过低

访问阿里云镜像仓库,可直接下载rpm包安装或者下载官方提供的repo文件,即可安装新版Jumpserver。

https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/docker-ce-18.09.7-3.el7.x86_64.rpm

# wget https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/docker-ce-18.09.7-3.el7.x86_64.rpm
或者
# cd /etc/yum.repos.d/
# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
默认docker下载镜像走国外网站,但阿里云为每个账号提供了镜像加速器,访问网址,并按照相应系统配置说明进行设置。

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

上述在安装docker-ce完成后完成如下配置:

[Mon Jul 01 19:56
 root@Centos7 ~]$ systemctl start docker
[Mon Jul 01 19:56
 root@Centos7 ~]$ ll /etc/docker/
total 4
-rw------- 1 root root 244 Jul  1 19:56 key.json
[Mon Jul 01 19:56
 root@Centos7 ~]$  tee /etc/docker/daemon.json <<-'EOF'
> {
>   "registry-mirrors": ["https://14u7urs6.mirror.aliyuncs.com"]
> }
> EOF
[Mon Jul 01 19:56
 root@Centos7 ~]$ systemctl daemon-reload
[Mon Jul 01 19:57
 root@Centos7 ~]$ systemctl restart docker
配置完成后,查看docker info,即可查看到加速网址

使用docker命令拉取jumpserver/jms_all:1.4.8镜像文件

# docker pull jumpserver/jms_all:1.4.8

根据Jumpserver配置说明文档进行下列操作:

环境图示如下

创建数据库

> create database jumpserver default charset 'utf8';
> grant all on jumpserver.* to 'jumpserver'@'%' identified by 'jumpserver123';
# systemctl start mariadb
# systemctl enable mariadb

在Jumpserver上通过数据库用户名和密码远程连接测试:

[Tue Jul 02 23:53
 root@Centos7 ~]$ mysql -ujumpserver -pjumpserver123 -h172.16.36.132
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 10.1.20-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

配置redis访问密码

# vim /etc/redis.conf
 61 bind 0.0.0.0
480 requirepass redis
# systemctl start redis
# systemctl enable redis

检查数据库和redis端口

生成SECRET_KEY和BOOTSTRAP_TOKEN,注意保存好,设定600权限

[Tue Jul 02 23:53
 root@Centos7 ~]$  if [ "$SECRET_KEY" = "" ]; then SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`; echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc; echo $SECRET_KEY; else echo $SECRET_KEY; fi
F2LYgIF3NTswUvhzhGxzbkawsRqvHESeQErTaIvZMA9OKIlanA
[Wed Jul 03 00:15
 root@Centos7 ~]$ if [ "$BOOTSTRAP_TOKEN" = "" ]; then BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`; echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc; echo $BOOTSTRAP_TOKEN; else echo $BOOTSTRAP_TOKEN; fi
f0TRbWLunlRsrtqS

设定额外的环境变量:

 # mkdir /opt/{mysql,jumpserver}
 $ docker run --name martinhe-docker1 -d \
    -v /opt/mysql:/var/lib/mysql \
    -v /opt/jumpserver:/opt/jumpserver/data/media \
    -p 80:80 \
    -p 2222:2222 \
    -e SECRET_KEY=F2LYgIF3NTswUvhzhGxzbkawsRqvHESeQErTaIvZMA9OKIlanA \
    -e BOOTSTRAP_TOKEN=f0TRbWLunlRsrtqS \
    -e DB_HOST=172.16.36.132 \
    -e DB_PORT=3306 \
    -e DB_USER=jumpserver \
    -e DB_PASSWORD=jumpserver123 \
    -e DB_NAME=jumpserver \
    -e REDIS_HOST=172.16.36.132 \
    -e REDIS_PORT=6379 \
    -e REDIS_PASSWORD=redis123 \
    jumpserver/jms_all:1.4.8

查看是否创建成功:

# docker ps
CONTAINER ID        IMAGE                      COMMAND             CREATED             STATUS              PORTS                                        NAMES
0a4fe670566c        jumpserver/jms_all:1.4.8   "entrypoint.sh"     29 seconds ago      Up 28 seconds       0.0.0.0:80->80/tcp, 0.0.0.0:2222->2222/tcp   martinhe-docker1

# docker logs -f 0a4fe670566c
...
gunicorn is running: 53
celery is running: 73
beat is running: 75
guacd[96]: INFO:        Guacamole proxy daemon (guacd) version 0.9.14 started
Starting guacd: SUCCESS
Tomcat started.
Use eventlet dispatch
Start coco process
Use eventlet dispatch
Start coco process
Use eventlet dispatch
Start coco process
Jumpserver ALL 1.4.8
官网 http://www.jumpserver.org
文档 http://docs.jumpserver.org
有问题请参考 http://docs.jumpserver.org/zh/docs/faq.html

进入容器命令 docker exec -it jms_all /bin/bash

进行网页访问Jumpserver

Jumpserver中,所有用户授权全部在界面里,admin账号必须掌握在运维手中,不可外传,需要使用跳板机的用户,申请开账号,由运维进行授权。

Jumpserver使用简单介绍:

使用步骤

  1. 用户管理–用户列表界面,管理和创建用户,用户相当于公司的开发人员xiaoming。
  2. 用户管理–用户组界面,创建用户组,如Devop在一个组,网络在一组,后期对组进行设定资产连接权限

  3. 资产管理–管理用户界面,创建管理用户,该管理用户用于管理Jumpserver登陆服务器统计资产信息以及推送系统用户的时候使用,所以此用户一定是一个具备root权限用户或者超级用户root。

  4. 资产管理–系统用户界面,创建系统用户,若该系统账户存在,则不创建,直接使用,后期jumpserver的普通用户会使用该账户登陆系统并管理资产信息(服务器),推荐的账户名称为:nginx,www,apache,tomcat,mysql等
  5. 资产管理–资产列表界面,创建资产,资产为物理机或者虚拟机。

  6. 权限管理–授权管理界面,创建授权规则,将资产授权给某个用户,即创建用户时可指定。

  7. 会话管理–命令记录,历史会话里面就可以看到用户执行的命令和已退出记录。

  8. 使用Jumpserver普通账户登陆,并测试后端服务器的连接与使用。

创建用户组Devop

创建用户xiaoming

如果未配置发送密码邮箱链接的话,点击用户名后方的更新,进行密码设置。

创建系统用户

创建管理用户

创建资产

资产授权:通常不会针对某用户授权,只针对组授权。

验证xiaoming可操控主机:

记录历史回放,监控恶意删库: