企业堡垒机-jumpserver

实现jumpserver堡垒机做管理

架构图:

 

 实现原理:A主机安装Docker环境,作为jumpserver堡垒机,后端B主机作为MySQL和Redis服务器,MySQL和Redis对普通用户的账号和密码做认证,如果账号密码不正确,不让其登陆jumpserver,如果A主机挂掉,不会丢失数据,因为数据都在MySQL和Redis上,此时只需要将B主机环境搭建和A主机一致即可。

环境准备:

A主机:jumpseerver   IP地址:192.168.7.100

B主机:MySQL/Redis  IP地址:192.168.7.101

一、A主机安装docker软件

docker容器进行安装jumpserver:为了使用最新版本的docker,需要在阿里云上下载最新的rpm包:

1、官方下载路径:https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

[root@centos-7 yum.repos.d]# cd  /etc/yum.repos.d/
[root@centos-7 yum.repos.d]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  #下载yum源仓库
[root@centos-7 yum.repos.d]# yum install docker-ce -y  #安装docker-ce软件
[root@centos-7 yum.repos.d]#systemctl start docker

2、启动docker服务,并下载对应的docker-ce包

下载的指导书网址:https://jumpserver.readthedocs.io/zh/master/dockerinstall.html

配置一个加速器,指向阿里云的下载路径,会下载docker镜像比较快,没有加速器就算了

[root@centos-7 ~]# vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://9916wlow.mirror.aliyuncs.com"]
}

重启docker服务,并下载docker镜像

[root@centos-7 ~]# systemctl restart docker
[root@centos-7 yum.repos.d]# docker pull jumpserver/jms_all:latest  #下载docker镜像

二、B主机安装数据库 

1、安装mariadb数据库

[root@centos-7 yum.repos.d]# yum install centos-release-openstack-rocky.noarch  -y   #安装openstack包,自带mariadb最新版包,此次是为了方便,最好是二进制编译安装
[root@centos-7 yum.repos.d]# yum install mariadb-server  -y   #安装mariadb包

2、启动mariadb数据库,创建账号并授权

[root@centos-7 yum.repos.d]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.3.10-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)]> create database jumpserver default charset 'utf8'; #创建账号
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> grant all on jumpserver.* to 'jumpserver'@'%' identified by 'centos';  #授权
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> 

3、最好在其他客户端验证是否可以连接mysql数据库

[root@centos-7 ~]# mysql -ujumpserver -pcentos -h192.168.7.100  #远程登录数据库服务,此时可以看到可以登录
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.3.10-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)]> show databases ;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| jumpserver         |
+--------------------+
2 rows in set (0.001 sec)

MariaDB [(none)]> 

三、B主机安装redis服务

[root@centos-7 ~]# yum install redis -y   #安装redis
[root@centos-7 ~]# vim  /etc/redis.conf  #修改配置文件
bind 0.0.0.0  #端口绑定到0.0.0.0
requirepass centos  #密码设置为mariadb数据库的密码

1、启动redis服务,并设置为开机启动

[root@centos-7 ~]# systemctl start redis
[root@centos-7 ~]# systemctl enable  redis

四、A主机创建docker容器

1、生成随机加密秘钥并创建docker容器

# 生成随机加密秘钥, 勿外泄
$ 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  
$ 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

$ docker run --name jms_all -d -p 80:80 -p 2222:2222 -e SECRET_KEY=$SECRET_KEY -e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN jumpserver/jms_all:latest

# macOS 生成随机 key 可以用下面的命令
$ if [ "$SECRET_KEY" = "" ]; then SECRET_KEY=`LC_CTYPE=C tr -dc A-Za-z0-9 < /dev/urandom | head -c 50`; echo "SECRET_KEY=$SECRET_KEY" >> ~/.bash_profile; echo $SECRET_KEY; else echo $SECRET_KEY; fi
$ if [ "$BOOTSTRAP_TOKEN" = "" ]; then BOOTSTRAP_TOKEN=`LC_CTYPE=C tr -dc A-Za-z0-9 < /dev/urandom | head -c 16`; echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bash_profile; echo $BOOTSTRAP_TOKEN; else echo $BOOTSTRAP_TOKEN; fi

2、创建docker容器

[root@centos-7 ~]# mkdir /opt/jumpserver #创建一个目录

#创建容器的命令如下:
docker run --name linux_docker1 -d \
  -v /opt/jumpserver:/opt/jumpserver/data/media \
  -p 80:80 \
  -p 2222:2222 \
  -e SECRET_KEY=6oNPRN7NCEWnkmB45XCRmozmzdvZ93KGQoz8PmZvDxAPPnxDRw \
  -e BOOTSTRAP_TOKEN=xPSBe9nnQc8l3GOy \
  -e DB_HOST=192.168.7.101 \
  -e DB_PORT=3306 \
  -e DB_USER=jumpserver \
  -e DB_PASSWORD=centos \
  -e DB_NAME=jumpserver \
  -e REDIS_HOST=192.168.7.101 \
  -e REDIS_PORT=6379 \
  -e REDIS_PASSWORD=centos \
  jumpserver/jms_all:latest

3、查看docker状态

[root@openstack-2 yum.repos.d]# docker ps #查看docker状态
CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS              PORTS                                        NAMES
103cc0190e3b        jumpserver/jms_all:latest   "entrypoint.sh"     7 seconds ago       Up 4 seconds        0.0.0.0:80->80/tcp, 0.0.0.0:2222->2222/tcp   linux_docker1
[root@openstack-2 yum.repos.d]# docker logs -f 103cc0190e3b  #后面加上查到的ID号,对docker进行初始化

  

 查看此时的端口号是:2222

 

3、在网页进行登录jumpserver堡垒机,默认用户名是admin,密码是admin。

 

 五、在jumpserver创建组和用户

1、创建组

 

  

2、创建用户

① 点击页面左侧"用户列表"菜单下的"用户列表",进入用户列表页面。

② 点击页面左上角"创建用户"按钮,进入创建用户页面,填写账户,角色安全,个人等信息。

其中,用户名即 Jumpserver 登录账号。用户组是用于资产授权,当某个资产对一个用户组授权后,这个用户组下面的所有用户就都可以使用这个资产了。角色用于区分一个用户是管理员还是普通用户。

 

 六、创建资产

1、创建linux资产

(1)创建系统账号

① 系统用户是 Jumpserver 跳转登录资产时使用的用户,可以理解为登录资产用户,如 web, sa, dba(ssh web@some-host), 而不是使用某个用户的用户名跳转登录服务器(ssh xiaoming@some-host); 简单来说是 用户使用自己的用户名登录Jumpserver, Jumpserver使用系统用户登录资产。

② 系统用户的 Sudo 栏填写允许当前系统用户免sudo密码执行的程序路径,如默认的/sbin/ifconfig,意思是当前系统用户可以直接执行 ifconfig 命令或 sudo ifconfig 而不需要输入当前系统用户的密码,执行其他的命令任然需要密码,以此来达到权限控制的目的。

Sudo /bin/su  # 当前系统用户可以免sudo密码执行sudo su命令(也就是可以直接切换到root,生产环境不建议这样操作)
Sudo /usr/bin/git,/usr/bin/php,/bin/cat,/bin/more,/bin/less,/usr/bin/head,/usr/bin/tail  # 当前系统用户可以免sudo密码执行git php cat more less head tail
# 此处的权限应该根据使用用户的需求汇总后定制,原则上给予最小权限即可。

④ 系统用户创建时,如果选择了自动推送 Jumpserver 会使用 Ansible 自动推送系统用户到资产中,如果资产(交换机、Windows )不支持 Ansible, 请手动填写账号密码。

Linux 系统协议项务必选择 ssh 。如果用户在系统中已存在,请去掉自动生成密钥、自动推送勾选。

 

 (2)创建管理用户

  管理用户是服务器的 root,或拥有 NOPASSWD: ALL sudo 权限的用户,Jumpserver 使用该用户来推送系统用户、获取资产硬件信息等。

   注意:资产管理里面的所以信息,都是和资产有关,包括创建的所有用户;jumpserver的root用户密码,只给jumpserver管理员登录安装了jumpserver的服务器使用。除此之外不用在任何地方;不用搞混了(我就搞混了)

   密码是通过ssh远程连接需要输入主机root的密码。

  

 (3)创建资产

  

 点击以下地方,可以对当前创建的资产进行测试:

 

出现测试任务结束,说明此时的资产没问题:

 

 (4)进行资产授权

① 节点,对应的是资产,代表该节点下的所有资产。

② 用户组,对应的是用户,代表该用户组下所有的用户。

③ 系统用户,及所选的用户组下的用户能通过该系统用户使用所选节点下的资产。

④ 节点,用户组,系统用户是一对一的关系,所以当拥有 Linux、Windows 不同类型资产时,应该分别给 Linux 资产和 Windows 资产创建授权规则。

将创建的系统用户(www)授权于创建的用户dev组,而dev组内包含zhangxiaoming用户。

 

七、用户使用资产

用户登录 Jumpserver

创建授权规则的时候,选择了用户组,所以这里需要登录所选用户组下面的用户才能看见相应的资产。

  

用户正确登录后的页面:

 

 用户使用资产

(1)连接资产

① 点击页面左边的 Web 终端:

② 打开资产所在的节点:

③ 双击资产名字,就连上资产了:

如果显示连接超时,请检查为资产分配的系统用户用户名和密钥是否正确,是否正确选择 Windows 操作系统,协议 rdp,端口3389,是否正确选择 Linux 操作系统,协议 ssh,端口22,以及资产的防火墙策略是否正确配置等信息。接下来,就可以对资产进行操作了。

④ 测试

创建一个test

在服务器上,确实有test 文件

(2)连接windows 资源

断开资产

点击页面顶部的 Server 按钮会弹出选个选项,第一个断开所选的连接,第二个断开所有连接。

会话管理

可以查看普通用户登录到指定的账号,能回放此用户操作的内容,防止某些心存歹意之人进行其他操作。

 

 

  

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

  

  

 

  

  

 

posted @ 2020-01-12 18:54  一叶知秋~~  阅读(1297)  评论(0编辑  收藏  举报