zoukankan      html  css  js  c++  java
  • 企业堡垒机-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 按钮会弹出选个选项,第一个断开所选的连接,第二个断开所有连接。

    会话管理

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

      

      

     

      

      

      

     

      

      

     

  • 相关阅读:
    python开发学习-day01 (python安装与版本、字符串、字典、运算符、文件)
    js数组中的常用方法总结
    js与jquery常用数组方法总结
    常用原生JS方法总结(兼容性写法)
    左右切换
    改变奇数行颜色
    toogle
    jQuery 表单验证
    css选择器
    两句话帮你彻底记住gdb之eXamining memory
  • 原文地址:https://www.cnblogs.com/struggle-1216/p/12181337.html
Copyright © 2011-2022 走看看