实现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 按钮会弹出选个选项,第一个断开所选的连接,第二个断开所有连接。
会话管理
可以查看普通用户登录到指定的账号,能回放此用户操作的内容,防止某些心存歹意之人进行其他操作。