安装JumpServer (基于容器部署)
环境:一台机器实现
JumpServer:
MySQL:
Redis:
安装要求:
硬件配置:2个CPU核心,4G内存,50G硬盘(最低)
安装docker环境
[root@ubuntu2004 ~]#apt -y install docker.io
(docker安装是从镜像来获取安装包,镜像来源于美国,可开启镜像加速)
[root@ubuntu2004 ~]#echo '{"registry-mirrors": ["http://si7y70hh.mirror.aliyuncs.com"]}' > /etc/docker/daemon.json
[root@ubuntu2004 ~]#cat /etc/docker/daemon.json
{"registry-mirrors": ["http://si7y70hh.mirror.aliyuncs.com"]}
[root@ubuntu2004 ~]#systemctl restart docker.service
[root@ubuntu2004 ~]#docker info 查看是否生效
Registry Mirrors: 镜像加速
http://si7y70hh.mirror.aliyuncs.com/
Live Restore Enabled: false
安装mysql服务
[root@ubuntu2004 ~]#docker run --rm --name mysql -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=jumpserver -e MYSQL_USER=jumpserver -e MYSQL_PASSWORD=123456 -d -p 3306:3306 mysql:5.7.30
安装MySQL并配置密码,创建jumpserver数据库和用户并指定用户密码
下载MySQL客户端用于连接docker中的MySQL
[root@ubuntu2004 ~]#apt -y install mysql-client
连接docker中的MySQL
[root@ubuntu2004 ~]#mysql -uroot -p123456 -h127.0.0.1
查看字符集
mysql> status;
为latinl
在宿主机准备MySQL配置文件
准备相关目录
[root@ubuntu2004 ~]#mkdir -p /etc/mysql/mysql.conf.d/
[root@ubuntu2004 ~]#mkdir -p /etc/mysql/conf.d/
#生成服务器配置文件,指定字符集
[root@ubuntu2004 ~]#tee /etc/mysql/mysql.conf.d/mysqld.cnf <<EOF
[mysqld]
pid-file= /var/run/mysqld/mysqld.pid
socket= /var/run/mysqld/mysqld.sock
datadir= /var/lib/mysql
symbolic-links=0
character-set-server=utf8 #添加此行,指定字符集
EOF
#生成客户端配置文件,指定字符集
[root@ubuntu2004 ~]#tee /etc/mysql/conf.d/mysql.cnf <<EOF
[mysql]
default-character-set=utf8 #添加此行,指定字符集
EOF
删除原有容器的MySQL
[root@ubuntu2004 ~]#docker rm -f mysql
启动MySQL容器
将上面宿主机设置好的配置文件挂载至MySQL容器
[root@ubuntu2004 ~]#docker run -d -p 3306:3306 --name mysql --restart always \
-e MYSQL_ROOT_PASSWORD=123456 \
-e =jumpserver \
-e MYSQL_USER=jumpserver \
-e =123456\
-v /data/mysql:/var/lib/mysql \ #-v 把宿主机的文件夹让容器使用
-v /etc/mysql/mysql.conf.d/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
-v /etc/mysql/conf.d/mysql.cnf:/etc/mysql/conf.d/mysql.cnf mysql:5.7.30
查看docker进程
[root@ubuntu2004 ~]#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9823abed7dc0 mysql:5.7.30 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
重新连接docker中的MySQL
[root@ubuntu2004 ~]#mysql -uroot -p123456 -h127.0.0.1
查看字符集
mysql> status;
为utf8
安装redis服务
[root@ubuntu2004 ~]#docker run -d -p 6379:6379 --name redis --restart always redis:6.2.7
部署JumpServer
脚本生成key和token:cat key.sh
#!/bin/bash
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=$SECRET_KEY;
else
echo SECRET_KEY=$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=$BOOTSTRAP_TOKEN;
else
echo BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN;
fi
[root@ubuntu2004 ~]#bash key.sh
SECRET_KEY=kMjEQH5jFgaO2iatLxIyIG7etZ8cpRr0irVi2gQ0IbNRLDPeUN
BOOTSTRAP_TOKEN=kHzBGU4LU4Te4cDF
docker run --name jms_all -d \
-v /opt/jumpserver/core/data:/opt/jumpserver/data \
-v /opt/jumpserver/koko/data:/opt/koko/data \
-v /opt/jumpserver/lion/data:/opt/lion/data \
-p 80:80 \
-p 2222:2222 \
-e SECRET_KEY=QabRlIzG7EadnZofxq5Zchb94ewJRvdxv5UMnbI9xeCUb3NDUR \ #替换key
-e BOOTSTRAP_TOKEN=0MoIAZmTyPGAEf24 \ #替换token
-e LOG_LEVEL=ERROR \
-e DB_HOST=10.0.0.100 \ #(注意IP为宿主机IP,不是127.0.0.1)
-e DB_PORT=3306 \
-e DB_USER=jumpserver \
-e DB_PASSWORD=123456 \
-e DB_NAME=jumpserver \
-e REDIS_HOST=10.0.0.100 \
-e REDIS_PORT=6379 \
-e REDIS_PASSWORD='' \
--privileged=true \
--restart always \
jumpserver/jms_all:v2.25.5
安装好后查看日志验证是否成功:
[root@ubuntu2004 ~]#docker logs -f jms_all 显示JumpServer就是成功
DNS解析本机IP, 10.0.0.100 jumpserver.meng.org
去本机网页访问
账号admin
密码admin
jumpserver用户管理,对不同的用户采取不同的管理
1、为不同的用户创建不同的jumpserver用户账号和密码
2、在后端被管理机器上创建账户,让jumpserver用户拿此账号连接后端机器进行管理(jumpserver内置anseble)
3、把后端被管理机器的账号与jumpserver的用户建立连接关系
设置邮件
set form=1153454651@qq.com #SMTP账号
set smtp=smtp.qq.com #SMTP主机
set smtp-auth-user=1153454651@qq.com
set smtp-auth-passord=lpleqzkvwbaeiejh #SMTP密码
SMTP端口:使用加密端口465,在下面使用SSL
不加密端口25,不适用SSL
提交
创建用户和组
创建账号:jumpserver支持三种登录用户
管理员
普通用户
审计员
视图控制台(用户管理--创建用户组、普通用户和审计员)
1、用户组创建 如:开发组 提交
测试组 提交
2、用户列表创建
如:
名称和用户名:曼曼
邮件:
用户组:开发组
设置密码:123456,勾选下次登录修改密码
MFA(双因子验证):禁用(如果开启,需要手机下载)
来源:数据库
系统角色:用户,勾选激活。
保存继续添加
如:
名称和用户名:王昊
邮件:
用户组:测试组
设置密码:123456,勾选下次登录修改密码
MFA(双因子验证):禁用(如果开启,需要手机下载)
来源:数据库
系统角色:用户,勾选激活。
提交
3、创建审计员
如:
名称和用户名:凡超
邮件:
用户组:
设置密码:123456,勾选下次登录修改密码
MFA(双因子验证):禁用(如果开启,需要手机下载)
来源:数据库
系统角色:系统审计员,勾选激活。
提交
资产管理:
1、创建管理账号特权账号:控制台 (此账号使jumpserver具有了管理后台机器的权限)
资产管理-系统用户-特权用户
名称和用户名:root
密码:后台资产root密码
提交
2、创建资产-资产列表
资产树右键增加节点:开发机、测试机
3、资产管理-资产列表-创建
主机名:10.0.0.7-dev
IP:10.0.0.7
系统平台:linux
协议组:ssh 22
特权用户:root
节点:开发机
主机名:10.0.0.8-dev
IP:10.0.0.8
系统平台:linux
协议组:ssh 22
特权用户:root
节点:开发机
主机名:10.0.0.101-test
IP:10.0.0.101
系统平台:linux
协议组:ssh 22
特权用户:root
节点:测试机
主机名:10.0.0.102-test
IP:10.0.0.102
系统平台:linux
协议组:ssh 22
特权用户:root
节点:测试机
4、创建普通帐号:让jumpserver用户拿这个帐号来连接后台服务器(不要拿特权账号让jumpserver用户使用)
资产管理-系统用户-普通帐号-创建
用ssh协议(此协议选择根据用的系统来决定),不同用户创建不同的后台管理帐号
如:
名称:devuser
协议:SSH
用户名:devuser
认证方式:托管密码并自动生成 自动推送打开
提交
名称:testuser
协议:SSH
用户名:testuser
认证方式:托管密码并自动生成 自动推送打开
提交
让jumpserver用户与普通用户还有后端资产建立关联关系:
让jumpserver的用户曼曼与资产管理普通用户devuser、还有后台服务器101.102关联起来
让jumpserver的用户王昊与资产管理普通用户testuser、还有后台服务器8.18关联起来
控制台-权限管理-资产授权-创建
名称:dev资产授权
用户组:开发组
节点:开发机
系统用户:devuser
名称:test资产授权
用户组:测试组
节点:测试机
系统用户:testuser
提交后在后端被管理服务器上查看账号是否被推送
getent passwd
有可能不自动推送,需要手动推送
用户管理-系统用户-普通用户 点击用户名称-资产列表-推送
推送之后查看后台服务器有没有这个账户
getent passwd 如果有,还不能连接,就查看jumpserver并重启
[root@ubuntu2004 ~]#docker ps
[root@ubuntu2004 ~]#docker restart jms_all
审计账号可以实时观看到jumpserver用户在线状态,对机器做了什么操作,还可以观看历史会话,下载历史会话,拖入到播放器内观看。需下载jumpserver播放器
https://github.com/jumpserver/VideoPlayer/releases
命令过滤器
控制台-资产管理-命令过滤-创建
名称:dev规则
用户组:开发组
资产:10.0.0.7 10.0.0.8
系统用户:devuser 勾选激活
提交
dev规则
命令过滤器规则-创建
过滤器:dev规则
内容:rm
动作:拒绝
提交
对MySQL资产做授权,管理MySQL
创建连接数据库账号,对应在MySQL中创建的账号
mysql> create user dev@'10.0.0.%' identified by '123456';
Query OK, 0 rows affected (0.07 sec)
mysql> create database devdb;
Query OK, 1 row affected (0.01 sec)
mysql> grant all on devdb.* to dev@'10.0.0.%';
Query OK, 0 rows affected (0.00 sec)
创建MySQL应用
应用管理-应用授权-数据库-创建MySQL
名称:MySQL-dev
类型:MySQL
主机:10.0.0.8
数据库:devdb
创建连接MySQL的jumpserver账号:
资产管理-系统用户-普通用户-创建-MySQL
名称:MySQL-dev
用户名:dev #在MySQL数据库中创建的用户
认证方式:托管密码:123456 #在MySQL数据库中创建的用户的密码
提交
应用授权:
权限管理-应用授权-创建
名称:MySQL-dev
用户组:开发组
应用:MySQL-dev(MySQL)
系统用户:MySQL-dev
提交
命令行界面连接
进入命令行页面:ssh -p 2222 manman@10.0.0.101
资产的导出导入
资产批量管理
资产列表 右上角导入导出 提供csv xlsx两种模板
打开模板:特权用户:点击root,复制ID 节点:资产列表,前边不保留,后边是=号之后的
节点名称/test|dev
改好模板后,导入
网域管理
实际生产环境中混合云使用很常见,但是jumpserver无法直接管理公有云服务器 可以通过JumpServer的网域功能实现混合云服务器的统一管理
网域的管理流程
1、购买几台云主机,且有一台云主机必须具备公网IP, 此主机充当网关服务器
2、让网关服务器与所有的云主机(包括网关服务器)免密(可选)
3、jumpserver要与网关服务器免密(可选)
4、创建网域名称
5、创建网关,指定网关服务器的公网IP,认证指定root和jumpserver的root的私钥文件(或者网关服务器 的root密码)
6、添加一个特权用户(阿里云root): 阿里云网关服务器root用户和其私钥(或者root密码)
7、添加资产(所有云主机,包括网关服务器),输入云主机的IP,并选择从上面创建网域进行跳转,认证选上面创建的特权用户
8、授权给用户组管理上面创建的资产
9、测试完成,不要忘记释放云主机和公网IP资源
第一步:购买云主机(购买多台云主机,至少一台主机有公网IP,充当网关服务器 配置ssh 免密钥验证,此步可选)
1、义购买云服务器ECS
付费模式:按量付费
地域及可用区:华北3(张家口) 随机分配
实例规格:共享标准型s6,2cpu,4Gib
购买实例数量:2台
镜像:rocky Linux 8.6 64位
存储:40G
下一步:网络和安全组
创建交换机,选择专有网络,并给交换机起名M50-NET,取消弹性公网IP并确认订单,创建实例
2、控制台-为其中一台ECS实例购买公网地址(弹性IP)
选择某一台实例停止-普通停机
在停机的实例上点击更多-网络和安全组-绑定弹性IP-创建公网IP(公网IP的地域要和实例在一起)
付费模式:按量付费
地域和可用区:华北3(张家口)
按流量收费:200Mbps
购买-确认订单-立即开通
绑定弹性IP
3、实例关机重置实例密码 (此root和密码需在创建jumpserver网关时使用)
第二步:创建网域
1、控制台-资产管理-网域列表-创建
名称:公有云-阿里
提交
2、网关-创建
名称:39.103.226.57-阿里云
ip:39.103.226.57
端口:22
协议:ssh
网域:公有云-阿里
用户名:root
密码:阿里云公网地址实例服务器密码
提交
第三步:创建特权账户(让jumpserver控制和管理阿里云后端服务器)
资产管理-系统用户-特权用户-创建
名称:root-阿里云
用户名:root(阿里云后端服务器的root账号)
密码:(阿里云后端服务器的root密码)
保存
第四步:添加资产(把阿里云上的服务器加进来管理)
资产管理-资产列表-资产树邮件新增-阿里云
主机名:172.30.0.202
IP(域名):172.30.0.202
网域:公有云-阿里
节点:阿里云
提交
第五步:资产授权
权限管理-资产授权-阿里云-创建
名称:开发-阿里云
用户组:dev
资产:172.30.0.202
节点:阿里云
系统用户:devuser (阿里云上没有,会推送过去)
提交