1.首先
前面我们谈到了部署和使用OpenVPN,它允许您通过OpenVPN从Internet连接到公司的内网服务器以进行远程管理。
然而,openvpn 的缺点是它无法记录你的内网服务器上发生的事情。您可以使用客户端的证书和私钥以及CA 的证书和客户端设置直接连接到不安全的企业Intranet。一些解决方案。
今天我们要说的是jumpserver,一个和openvpn功能类似的软件。 Jumpserver和openVPN都允许用户从Internet连接到公司的内联网服务器,但jumpserver通常不位于Internet上。
主要供运维、开发、测试人员连接公司内网服务器,实现对公司内网服务器的集中管理。同时Jump Server还具有权限管理、用户管理、重定向监控等功能。
2.跳转服务器架构图
3.安装Jumpserver服务器
环保说明:
主机名
角色
IP地址
节点01
跳转服务器网站
192.168.0.41
节点02
mysql/redis
192.168.0.42
1.部署mariadb到节点02
(最低版本为5.5.6,对于mysql版本,最低版本为5.6)
配置mariadb yum 存储库。
[root@node02 ~]# cat /etc/yum.repos.d/mariadb.repo[mariadb]name=mariadb repobaseurl=https://mirrors.tuna.tsinghua.edu.cn/mariadb//mariadb-10.1.46/yum/centos /7/x86_64/gpgcheck=0[root@node02 ~]#
安装MariaDB 服务器。
[root@node02 ~]# yum install -y MariaDB-server
配置mariadb 以忽略名称解析。
启动mariadb。
连接到mariadb 并创建数据库和用户。
[root@node02 ~]# 欢迎使用mysqlMariaDB 监视器。命令以; 或\g 结尾。 MariaDB 连接ID 为3Server version: 10.1.46-MariaDB MariaDB ServerCopyright (c) 2000、2018、Oracle、MariaDB Corporation Ab 等。如需帮助,请输入“help;”或“\h”。要清除当前输入语句,请键入“\c”。 MariaDB [(none)] 为数据库跳转服务器创建默认字符集。匹配“utf8”。 ‘utf8_bin’;查询正常,1 行受影响。 (0.00 秒)MariaDB [(none)] 将Jumpserver.* 上的所有内容授予由’admin123.com’ 标识的’jumpserver’@’%’;查询正常,0 行受影响(0.00 秒)MariaDB [(none)] 刷新权限; 查询正常,0 行受影响(0.00 秒)MariaDB [(none)]
验证:使用Jumpserver登录数据库。
[root@node02 ~]# mysql -ujumpserver -padmin123.com -h192.168.0.42欢迎使用MariaDB监控。命令以; 或\g 结尾。 MariaDB 连接ID 为4Server version: 10.1.46-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab 等。如需帮助,请键入“help;”或“\h”以清除当前输入语句。 MariaDB [(无)] 显示数据库。 +——————–+| 数据库|+——————–+|跳转服务器|| 测试|+——————-+3 行(0.01 秒)MariaDB [(none)] exitBye[root@node02 ~] #就是这样,您的数据服务已准备就绪。
2、在node02上部署Redis
安装Redis。
[root@node02 ~]# yum -y 安装redis
配置redis监听本机所有地址并设置密码。
[root@node02 ~]# grep -Ei ‘^(bind|requirepass)’ /etc/redis.confbind 0.0.0.0requirepass admin123.com[root@node02 ~]#启动redis
验证:登录Redis。
[root@node02 ~]# redis-cli -h 192.168.0.42192.168.0.42:6379 KEYS *(错误)需要NOAUTH 身份验证。 192.168.0.42:6379 AUTH admin123.comOK192.168.0.42:6379 KEYS *(空列表或设置)192.168.0.42:6379 exit[root@node02 ~]#
至此,redis就准备好了。
3. 将Jumpserver Web 容器部署到节点01。
配置docker-ce的yum源。
[root@node01 ~]# cat /etc/yum.repos.d/docker-ce.repo[docker-ce-stable]name=Docker CE stable – $basearchbaseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/stableenabled=1gpgcheck=1gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-stable-debuginfo]name=Docker CE Stable – 调试信息$basearchbaseurl=https://mirrors. aliyun.com/docker-ce/linux/centos/7/debug-$basearch/stableenabled=0gpgcheck=1gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-stable-source ]名称=Docker CE稳定版- Sourcesbaseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/stableenabled=0gpgcheck=1gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[ docker- ce- Edge]name=Docker CE Edge – $basearchbaseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/edgeenabled=0gpgcheck=1gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-edge-debuginfo]name=Docker CE Edge – 调试信息$basearchbaseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/edgeenabled=0gpgcheck=1gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-edge-source]name=Docker CE Edge-Sourcesbaseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/edgeenabled=0gpgcheck=1gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-test]name=Docker CE 测试- $basearchbaseurl=https://mirrors.aliyun.com/docker-ce/linux /centos /7/$basearch/testenabled=0gpgcheck=1gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-test-debuginfo]name=Docker CE 测试-调试信息$basearchbaseurl=https://mirrors .aliyun .com/docker -ce/linux/centos/7/debug-$basearch/testenabled=0gpgcheck=1gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-test-source] name=Docker CE测试- Sourcesbaseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/testenabled=0gpgcheck=1gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker- ce- nightly]name=Docker CE Nightly – $basearchbaseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/nightlyenabled=0gpgcheck=1gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-nightly-debuginfo]name=Docker CE Nightly – 调试信息$basearchbaseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/nightlyenabled=0gpgcheck=1gpgkey=https://mirrors. aliyun.com/docker -ce/linux/centos/gpg[docker-ce-nightly-source]name=Docker CE Nightly – Sourcesbaseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/nightlyenabled=0gpgcheck=1gpgkey=https://mirrors .aliyun.com/docker-ce/linux/centos/gpg[root@node01 ~]#安装docker-ce。
[root@node01 ~]# yum install -y docker-ce
启动码头工人。
[root@node01 ~]# systemctl start docker[root@node01 ~]# docker infoClient: 调试模式: falseServer: 容器: 0 运行: 0 暂停: 0 停止: 0 映像: 0 服务器版本: 19.03.13 存储驱动程序: 覆盖文件系统: xfs d_type: true 本机覆盖Diff: 支持true 日志记录Driver: json 文件Cgroup Driver: cgroupfs Plugins: Volume: 本地Network: 网桥主机ipvlan macvlan null 覆盖Log: awslogs fluidd gcplogs gelfjournald j son-file 本地日志splunk syslog 60 非活动Runtime: runc 默认Runtime33 360 runc Init Binary: docker -initcontainerd version: 8fba4e9a7d01810a393d5d25a3621dc101981175 runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd init 版本: fec3683 安全选项: seccomp 配置文件: 默认内核版本: 3.10.0-693.el7.x86_64 操作系统: CentOS Linux 7(核心) OSType : linux 架构: x86_64 CPU : 2 总内存: 1.781 GiB 名称33 360 node01.test.org ID: JQY2:LCCM:EU6J:ARI7:UCEL:5HUV:FGE4:6RTY:PWR3:NKJI:EA3K3336 0BK SA Docker Root Dir:/var/lib/docker 调试模式: false Registry: https://index.docker.io/v1/Labels: Experimental: false 不安全注册表: 127.0.0.0/8 Live Restore Enabled: false[ root @node01 ~]#配置Docker加速器。
[root@node01 ~]# cat /etc/docker/daemon.json{ ‘registry-mirrors’: [‘https://registry.docker-cn.com’,’https://cyr1uljt.mirror.aliyuncs.com’]}[root@node01 ~ ]#重启docker:
[root@node01 ~]# systemctl 重新启动docker
使用doker info命令查看加速器地址是否已应用。
cle.pc_detail&lk3s=953192f4&x-expires=1717774033&x-signature=z8va4EsMSt7%2FK%2BeRLt3d6f6XxuA%3D” />
下载jumpserver网站:
[root@node01 ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE[root@node01 ~]# docker pull jumpserver/jms_all:v2.4.0v2.4.0: Pulling from jumpserver/jms_all75f829a71a1c: Pull completef9c494d6df5d: Pull complete5135b4193f02: Pull complete918e815b1dc8: Pull complete0334369c4479: Pull complete64a0f2a7663a: Pull completeDigest: sha256:2081c88eca6dffb41bc42d8fe06d18c4379eacdbb354fa56dffd2a918738274dStatus: Downloaded newer image for jumpserver/jms_all:v2.4.0docker.io/jumpserver/jms_all:v2.4.0[root@node01 ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEjumpserver/jms_all v2.4.0 3418bbaaded1 9 days ago 1.54GB[root@node01 ~]#编写生成SECRET_KEY和BOOTSTRAP_TOKEN的脚本:
[root@node01 ~]# cat key_gen.sh#!/bin/bashif [ ! “$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[root@node01 ~]#提示:上面脚本主要是判断是否有SECRET_KEY和BOOTSTRAP这两个键,如果没有就生成,并把SECRET_KEY保存到SECRET_KEY并放到当前家目录的.bashrc中,并打印出来,如果有就直接打印出来。
运行脚本生成SECRET_KEY和BOOTSTRAP_TOKEN:
[root@node01 ~]# bash key_gen.shwIUaeZtCbtTNUDL9igEIImALjjaMo9ygPwfMWmPZcyWD0c3K9QLx15DW9xDxqOkiCq[root@node01 ~]#提示:这两个随机密钥很重要,它已加密数据库并行用的,所以在环境迁移和升级都会用到这两个密钥。
创建用户保存jumpserver容器中的数据目录:
[root@node01 ~]# mkdir /data/jumpserver/ -pvmkdir: created directory ‘/data’mkdir: created directory ‘/data/jumpserver/’[root@node01 ~]#启动jumpserver / jms_all:v2.4.0兼为容器:
[root@node01 ~]# docker run –name jms_all -d \> -v /data/jumpserver/:/opt/jumpserver/data \> -p 80:80 \> -p 2222:2222 \> -e SECRET_KEY=wIUaeZtCbtTNUDL9igEIImALjjaMo9ygPwfMWmPZcyWD0c3K9Q \> -e BOOTSTRAP_TOKEN=Lx15DW9xDxqOkiCq \> -e DB_HOST=192.168.0.42 \> -e DB_PORT=3306 \> -e DB_USER=jumpserver \> -e DB_PASSWORD=admin123.com \> -e DB_NAME=jumpserver \> -e REDIS_HOST=192.168.0.42 \> -e REDIS_PORT=6379 \> -e REDIS_PASSWORD=admin123.com \> –privileged=true \> jumpserver/jms_all:v2.4.08974115a714c5000bac47a8a457190408861ad1967429435ad4f6a0b838c2fe3[root@node01 ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES8974115a714c jumpserver/jms_all:v2.4.0 “./entrypoint.sh” 14 seconds ago Up 12 seconds 0.0.0.0:80->80/tcp, 0.0.0.0:2222->2222/tcp jms_all[root@node01 ~]# ss -tnlState Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 :::2222 :::* LISTEN 0 128 :::80 :::* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::* [root@node01 ~]#
提示:以上启动容器主要指定了maradb和redis服务器的相关地址和密码端口信息,其中在主机上暴露了80和2222端口。
查看日志:
提示:使用docker logs -f容器id能够看到上图中的信息,说明jumpserver容器就跑起来了。
访问jumpserver:
提示:访问jumpserver容器所在主机的ip地址即可访问到jumpserver,设置用户名和密码都是admin。
提示:第一次登陆时,它将为我们重设密码。
提示:重设密码后,重新登录,jumpserver的家就是上图这样。后续我们就可以在这个界面来管理内网服务器了。
到此,jumpserver服务器就建造好了。
四.jumpserver使用
1.jumpserver基本设置:
提示:基本设置是必须设置当前jumpserver的网址和邮件主题前缀,这样在用户收到邮件中的链接都会指向这个jumpserver的网址。
2.配置jumpserver发邮件的邮件服务器和用户名密码:
提示:在系统设置—>邮件设置,把对应的帐户信息,邮件服务器信息都填写好。然后测试连接,如果可以正常收到邮件,说明邮件服务器信息和邮件用户名密码没有问题,最后点提交即可。
3.创建用户:
提示:在用户管理—>用户列表—>创建,填写好用户相关信息后,点击最下面的提交。
提示:新建用户成功以后,对应的用户邮箱就会收到一份有跳转服务器发送到用户创建成功的邮件,用户可以点击此邮件中的链接进行密码设置。
提示:密码设定好了,点击设置,用户会收到一份密码更新成功的邮件。
4.创建用户组,并把测试用户添加到对应的组中:
提示:用户管理—>用户组—->创建,填充好组信息和选择好用户后,点击提交即可。
5.jumpserver资产管理—>管理用户创建:
提示:资产管理—->管理用户—->创建,填写好对应被管控端的管理员和密码点击提交。管理用户是资产(被控服务器)上的root,或拥有NOPASSWD:ALL sudo权限的用户,JumpServer使用该用户来推进系统用户,获取资产硬件信息等。
6.创建系统用户,这里的系统用户是指我们使用jumpserver登录到对应的被管控主机时用的用户:
提示:资产管理—>系统用户—>新建,填充好用户名,切换自动推和自动生成密钥,单击最下方的提交即可。
这里填充的用户会使用jumpserver上登录对应的主机用到用户,如果被管控端没有这个用户,jumpserver就会利用我们刚才添加的管理用户去创建一个这里的系统用户。
7.创建资产:
提示:资产管理—>资产列表—>新建,填写对应被管控的主机信息和ip地址信息,以及管理用户,点击最下方的提交。
提示:提交完成后,我们就可以在资产列表中看到我们刚才添加到主机。
8.资产授权:
提示:权限管理—>资产授权—>创建,填充好名称后,要选择用户和组以及资产和系统用户,然后单击最下方的提交,到此一个资源就授权给测试用户和测试组中的成员了。
这里需要注意一点,一个例程中有很多服务器,如果你只想授权单台服务器给某个用户,下面的例程就留空。如果你想授权一个例程给用户你可以选择分组,上面的资产就可以留空。
如果你又想授权代理资产和某处给用户,就选择对应的资产和中断即可。如果这里选择默认实例,则表示将默认上游下的所有主机都授权给用户,默认默认包含所有主机。
验证:使用test用户登录jumpserver,看看test用户是否能够看到我们创造的资源?
提示:首次登陆,它将为我们更新用户的信息,然后同一些条款,这个我们按照实际信息来修改即可。在我的资产中可以看到当前用户有点资产。
验证:使用test用户连接node01看看是否可以连接到node01?
提示:可以看到测试用户是可以正常使用我们配置的jumpserver用户正常正常的连接到node01。
9.查看用户操作预览:
提示:点击会话管理—->会话管理—->历史会话—->找到对应会话后面的替换即可查看对应用户在过去会话中执行的操作。
jumpserver的基本操作就到此为止,后续其他日志等,都可以在网站上点击对应的菜单查看,这里就不加以描述了。
原创文章,作者:小条,如若转载,请注明出处:https://www.sudun.com/ask/83424.html