企业级堡垒机 JumpServer

news/2024/11/16 14:15:14/文章来源:https://www.cnblogs.com/ludingchao/p/18427914

1 堡垒机和 JumpServer

生产应用场景

2 JumpServer 安装

2.1 基于 Docker 部署

官方说明
https://docs.jumpserver.org/zh/master/install/setup_by_fast/JumpServer 环境要求:
硬件配置: 2个CPU核心, 4G 内存, 50G 硬盘(最低)

 

案例:基于自定义网络利用Docker部署 JumpServer

自定义网络可以通过容器名称通讯,不需要绑定ip地址

#机器需要至少4g内存#创建自定义网络
[root@ubuntu2204 ~]#apt update && apt -y install docker.io
[root@ubuntu2204 ~]#docker network create jumpserver-net
#查看网络
[root@ubuntu ~]#docker network ls
NETWORK ID     NAME             DRIVER    SCOPE
...
135453a87c5f   jumpserver-net   bridge    local
#查看网络ip
[root@ubuntu ~]#ip a
[root@ubuntu ~]#docker inspect jumpserver-net#MySQL8.0需要修改验证插件(创建一个文件)
[root@ubuntu2204 ~]#cat > mysqld.cnf 
[mysqld]
default_authentication_plugin=mysql_native_password#启动MySQL容器(引入上面的配置文件)
[root@ubuntu2204 ~]#docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=jumpserver -e MYSQL_USER=jumpserver -e MYSQL_PASSWORD=123456 -d -v ./mysqld.cnf:/etc/mysql/conf.d/mysqld.cnf --restart always --network jumpserver-net mysql:8.0.29-oracle#查看mysql里面是不是创建好了
[root@ubuntu ~]#docker exec -it mysql sh
sh-4.4# mysql -uroot -p123456
mysql> show databases;
mysql> select user,host from mysql.user;
mysql> show grants for jumpserver@'%';#启动Redis容器
[root@ubuntu2204 ~]#docker run -d --name redis --restart always --network jumpserver-net redis:6.2.14
#进入redis容器(加个密码安全)
[root@ubuntu ~]#docker exec -it redis sh
# redis-cli   
127.0.0.1:6379> CONFIG get requirepass    #查看密码
127.0.0.1:6379> CONFIG set requirepass 123456    #设置密码(临时,重启就没了)
#下次登录
# redis-cli   
127.0.0.1:6379> auth 123456#启动并修改密码(这样就不用像上面修改密码了)
#[root@ubuntu2204 ~]#docker run -d --name redis --restart always --network jumpserver-net redis:6.2.14 redis-server --requirepass 123456#生成jumpserver所需相关key和token(自己存下来,以后有用)
[root@ubuntu2204 ~]#cat /dev/urandom | tr -dc '[:alnum:]' | head -c50
jdjpxwttxSTRSuQYWRilsCV8eZWEAFyE239wERZL1LjOJwqX1K
[root@ubuntu2204 ~]#cat /dev/urandom | tr -dc '[:alnum:]' | head -c30
vWD4bJCCYocvqM7CF6CAA3neJciW2u#启动JumpServer容器 (替换上面的key和token)
#jms_all:v3.10.3
[root@ubuntu2204 ~]#docker run --name jms_all -d \-p 80:80 \-p 2222:2222 \-p 30000-30100:30000-30100 \-e SECRET_KEY=jdjpxwttxSTRSuQYWRilsCV8eZWEAFyE239wERZL1LjOJwqX1K \-e BOOTSTRAP_TOKEN=vWD4bJCCYocvqM7CF6CAA3neJciW2u \-e LOG_LEVEL=ERROR \-e DB_HOST=mysql \-e DB_PORT=3306 \-e DB_USER=jumpserver \-e DB_PASSWORD=123456 \-e DB_NAME=jumpserver \-e REDIS_HOST=redis \-e REDIS_PORT=6379 \-e REDIS_PASSWORD='123456' \--privileged=true \-v /opt/jumpserver/core/data:/opt/jumpserver/data \-v /opt/jumpserver/koko/data:/opt/koko/data \-v /opt/jumpserver/lion/data:/opt/lion/data \-v /opt/jumpserver/magnus/data:/opt/magnus/data \-v /opt/jumpserver/kael/data:/opt/kael/data \-v /opt/jumpserver/chen/data:/opt/chen/data \-v /opt/jumpserver/web/log:/var/log/nginx \--network jumpserver-net \--restart always         \jumpserver/jms_all:v3.10.3

登录jumpserver

#浏览器输入
http://10.0.0.151/
默认用户admin
密码admin    #设置密码123456

 

2.2 Docker-Compose 部署

范例:基于Jumpserver-v3.10.3修改官方的docker-compose.yaml

[root@ubuntu2204 jumpserver]#cat docker-compose.yaml
version: '3.8'
services:mysql:image: mariadb:10.6container_name: jms_mysqlrestart: alwaysenvironment:MARIADB_ROOT_PASSWORD: ${DB_PASSWORD:-123456}MARIADB_DATABASE: ${DB_NAME:-jumpserver}healthcheck:test: "mysql -h127.0.0.1 -uroot -p$$MARIADB_ROOT_PASSWORD -e 'SHOW DATABASES;'"interval: 10stimeout: 5sretries: 3start_period: 30svolumes:- ${VOLUME_DIR:-./data}/mariadb/data:/var/lib/mysqlnetworks:- netredis:image: redis:7.0container_name: jms_redisrestart: alwayscommand: redis-server --requirepass ${REDIS_PASSWORD:-123456}environment:REDIS_PASSWORD: ${REDIS_PASSWORD:-123456}healthcheck:test: "redis-cli -h 127.0.0.1 -a $$REDIS_PASSWORD info Replication"interval: 10stimeout: 5sretries: 3start_period: 10svolumes:- ${VOLUME_DIR:-./data}/redis/data:/datanetworks:- netjumpserver:image: jumpserver/jms_all:v3.10.3#build:#  context: .#  dockerfile: Dockerfile
    container_name: jms_allprivileged: truerestart: alwaysenvironment:SECRET_KEY: ${SECRET_KEY:-SYmfImNk3TfMCmKmb7h3SYZjfTR6e2jVAjfLZxHAQqIxOdAWLv}BOOTSTRAP_TOKEN: ${BOOTSTRAP_TOKEN:-9Gd3SM0tR6gmbirptLYdkqXN82ZrQh}LOG_LEVEL: ${LOG_LEVEL:-ERROR}DB_HOST: ${DB_HOST:-mysql}DB_PORT: ${DB_PORT:-3306}DB_USER: ${DB_USER:-root}DB_PASSWORD: ${DB_PASSWORD:-123456}DB_NAME: ${DB_NAME:-jumpserver}REDIS_HOST: ${REDIS_HOST:-redis}REDIS_PORT: ${REDIS_PORT:-6379}REDIS_PASSWORD: ${REDIS_PASSWORD:-123456}DOMAINS: ${DOMAINS:-}ports:- ${HTTP_PORT:-80}:80/tcp- ${SSH_PORT:-2222}:2222/tcpdepends_on:mysql:condition: service_healthyredis:condition: service_healthyhealthcheck:test: "curl -fsL http://localhost/api/health/ > /dev/null"interval: 10stimeout: 5sretries: 3start_period: 90svolumes:- ${VOLUME_DIR:-./data}/core/data:/opt/jumpserver/core/data- ${VOLUME_DIR:-./data}/koko/data:/opt/jumpserver/koko/data- ${VOLUME_DIR:-./data}/lion/data:/opt/jumpserver/lion/data- ${VOLUME_DIR:-./data}/chen/data:/opt/jumpserver/chen/data- ${VOLUME_DIR:-./data}/kael/data:/opt/jumpserver/kael/data- ${VOLUME_DIR:-./data}/nginx/data:/var/log/nginxnetworks:- netnetworks:net:#安装docker-compose
[root@ubuntu ~]#apt update && apt -y install docker-compose
[root@ubuntu ~]#mkdir jumperserver    #最好建个独立目录放compose文件
#把上面的内容写入
[root@ubuntu ~]#vim docker-compose.yaml
#语法检查
[root@ubuntu jumperserver]#docker-compose config -q#启动(这里看效果,前端执行)
[root@ubuntu jumperserver]#docker-compose up
#后端执行
#[root@ubuntu jumperserver]#docker-compose up -d
#查看容器
[root@ubuntu jumperserver]#docker-compose ps

 

2.3 官方脚本一键安装

官网:
https://docs.jumpserver.org/zh/v3/installation/setup_linux_standalone/online_install/
#最新安装基于jumpserver-v3.6.2 (会根据版本自动安装docker,以微服务方式安装启动)
[root@ubuntu2204 ~]#curl -sSL https://resource.fit2cloud.com/jumpserver/jumpserver/releases/latest/download/quick_start.sh | bash
#安装中途卡住了,我按了ctrl+c又继续下去了...

[root@ubuntu2204 ~]#docker images
REPOSITORY           TAG       IMAGE ID       CREATED       SIZE
jumpserver/web       v3.10.3   0ee78cf967db   4 days ago    1.52GB
jumpserver/core-ce   v3.10.3   63c4dd51406b   4 days ago    1.56GB
jumpserver/koko     v3.10.3   076f77b0aa4b   4 days ago    1.06GB
jumpserver/lion     v3.10.3   c82cbcccb148   4 days ago   255MB
jumpserver/kael     v3.10.3   ff371a084eae   4 days ago   269MB
jumpserver/chen     v3.10.3   a8990c6cf53e   4 days ago   572MB
jumpserver/magnus   v3.10.3   ff5c80e9d2b2   4 days ago   147MB
jumpserver/mariadb   10.6     9ee9424356c4   2 weeks ago   392MB
jumpserver/redis     6.2       c6b27afb23d5   2 weeks ago   113MB#安装完成后,直接访问即可,默认用户名和密码是admin/admin,首次登录需要修改密码,但不能使用原密码
http://jumpserver_ip/1. 可以使用如下命令启动, 然后访问
cd /opt/jumpserver-installer-v3.0.4
./jmsctl.sh start

 

3 JumpServer 常见功能

创建用户和组

MFA: 多因子验证(谷歌app验证码)
#MFA级别: 启用(本人可以选禁用)  强制启用(本人不可禁用)
#手机如果丢了就麻烦了,所以选择自己可以禁用(个人信息里设置)

3.1 创建资产并关联特权用户

通过帐号模版创建系统用户中特权用户(管理用户)

通过模板,后续创建管理机中引用特权用户直接更方便

左侧账号管理下账号模板创建
#名称是注释   特权账号就是管理员账号(这里用root)   密码(被管理机root密码)

创建资产

左侧资产管理下资产列表,资产树下右键创建节点(就是文件夹),创开发组,测试组
点击创建,把资产添加到组里,在账号这添加模板,选上面添加的特权用户

3.2 授权用户使用资产

通过帐号模版创建系统普通用户(系统用户中普通用户)

创建模板,用于被管理机普通用户

左侧账号管理下账号模板创建
#名称是注释   这里不是特权账号,不勾   密码策略随机生成(jumpserver自己连接用)
#点自动推送(jumpserver通过管理用户自动在所有资产机器创用户)  推送参数不用改

创建资产授权规则并在后端主机自动创建普通用户

左侧权限管理下资产授权点创建
#用户栏直接填入用户组   资产栏可以直接选择节点   账号点指定账号(选前面创建的普通用户)
#(这里因为每个资产前面已经关联了被管理机器的管理员账号,所以会通过管理员账号去创建普通用户)
#点击提交#这是,在任一一台开发机器上,能查到对应的普通用户被创建
[root@ubuntu ~]#id dev
uid=1001(dev) gid=1001(dev) groups=1001(dev)

可以文件传输

#上传的文件在/tmp目录下
#右键文件可以下载

审计员可以审计

用审计权限的用户登录,并进入审计台
#左侧能看在线用户,可以让在线用户下线
#会话审计下可以看会话记录,可以点击监控对方命令界面,命令记录看之前的命令

 

3.3 数据库授权

在后端服务器安装MySQL并创建数据库和用户

#在被控机上安装mysql
[root@ubuntu ~]#apt install mysql-server
#注释掉127行
[root@ubuntu ~]#sed -i '/127.0.0.1/s/^/#/' /etc/mysql/mysql.conf.d/mysqld.cnf
[root@ubuntu2204 ~]#systemctl restart mysql
#查看端口
[root@ubuntu ~]#ss -ntl#mysql的项目进行授权(这里模拟用户对某些库有权限)
[root@ubuntu ~]#mysql
mysql> create database wordpress;
mysql> create user wordpress@'10.0.0.%' identified by '123456';
mysql> grant all on wordpress.* to wordpress@'10.0.0.%' ;
mysql> use wordpress;
mysql> create table t1 (id int,name varchar(20));

创建数据库的系统用户

左侧账号管理下账号模板点击创建,把mysql的管理用户wordpress创建出来
#名称为标注,随意起   非特权账号   密码指定123456
#不点自动推送(这个账号是手动建起来的)
点提交

创建数据库应用

左侧资产管理下资产列表内,点创建,类型数据库mysql
#选节点,纳入哪个资产文件夹里   默认数据库写wordpress
账号栏点模板添加,选上面创建的账号模板
点提交

创建数据库授权规则

左侧权限管理下资产授权,点创建
#写入名称(任意),选择用户组   资产栏点击资产,精确选择mysql资产
#账号选择指定账号,wordpress   协议栏选择指定协议(MySQL)
点提交这时登录开发账号,资产就能看到mysql,可以连接了

ssh连接JumpServer

JumpServer 还支持用户通过ssh连接其2222/tcp端口进行访问

[root@ubuntu ~]#ssh -p 2222 xiaoming@10.0.0.150
xiaoming@10.0.0.150's password: 
        xiaoming,  JumpServer 开源堡垒机1) 输入 部分IP,主机名,备注 进行搜索登录(如果唯一).2) 输入 / + IP,主机名,备注 进行搜索,如:/192.168.3) 输入 p 进行显示您有权限的资产.4) 输入 g 进行显示您有权限的节点.5) 输入 h 进行显示您有权限的主机.6) 输入 d 进行显示您有权限的数据库.7) 输入 k 进行显示您有权限的Kubernetes.8) 输入 r 进行刷新最新的机器和节点信息.9) 输入 s 进行中文-English-日本語语言切换.10) 输入 ? 进行显示帮助.11) 输入 q 进行退出.
Opt> pID | 名称                  | 地址       | 平台                | 组织                 | 备注
-----+-----------------------+------------+---------------------+----------------------+---1  | 10.0.0.152-ubuntu-dev | 10.0.0.152 | Linux               | Default              |   2  | MySQL-wordpress       | 10.0.0.152 | MySQL               | Default              |  
页码:1,每页行数:16,总页数:1,总数量:2
提示:输入资产ID直接登录,二级搜索使用 // + 字段,如://192 上一页:b 下一页:n
搜索:

 

3.4 命令过滤器

创建命令过滤器

左侧权限管理下命令过滤,先点击上面命令组,点击创建
#这里点击命令 rm ssh bash   点击提交

再点击上方的命令过滤,点击创建
#用户可以点击属性筛选,点添加,用户组,点任意包含,选择组
#资产点击属性过滤(本身范围在当前组范围下),点任意包含,选择节点
#命令组选上面添加的命令组
#动作选拒绝    点提交#注意刚定义的规则对正在连接命令端的的用户是不生效的,该用户退出命令端再登录就生效了
#但是,只要写入脚本给执行权限,还是能执行脚本。并且如果脚本定义别名,那这别名后面依然可以使用

 

3.5 会话管理

审计台,会话审计下,会话记录,可以看历史会话,可以看回放,下载视频
#下载下来的视频是tar包,需要工具才能播放,播放工具如下:
https://github.com/jumpserver/VideoPlayer/releases
#jumpserver官方出的,定制版播放器,把tar包扔进去就能播放

 

3.6 资产的批量导出和导入

如果很多机器,一台台添加太慢了,这里有批量导入的方法

左侧资产管理下资产列表,右面有导入导出按钮
#导出
#选中资产,点击导出,csv格式,仅导出选择项#导入
#点击上方资产列表下的主机栏,点导入,点击下载模板CSV,在该模板上进行修改
#里面的内容组后面有id,不知道可从上面导出的csv文件里查(也可通过网页跳转地址查看对应信息)
#把修改完的csv文件拖入导入界面,点击导入,即可#这时候导入的资产,缺少账号需要添加
#在导入的资产点击更新,在账号位置关联,点击模板账号,加入管理账号(特权账号),普通账号
这时被导入的资产普通账号就被自动创建出来了登录开发账号,就可以连接新加入的资产了

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/802436.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

9.23 csp

今天模拟赛出了四道zroi的题,挺GG的。 T1、奇观 因为删除的边比较少,所以从m入手,f[i][j]表示长度为i,终点为j的链的方案数。 C 是长度为3的链,F是 1条 长度为3 的链 和 2条 长度为2 的链。 输出 CCF 即可 G T2、铁路 救命的签到题。 因为每次合并时每走一个点就会减少一个…

业财一体化视角下-电商ERP采购模块的设计

本文将深入探讨如何在采购模块的设计中有效体现业财一体化理念,从财务三大报表的基本概念出发,详细解析采购过程中的财务管理关键要素,并分享采购流程设计中应注意的重点,以期为企业提供有价值的参考和指导。业财一体化的重要性日益凸显,越来越多企业认识到业务运营与财务管…

第二十三讲:MySQL是怎么保证主备一致的?

第二十三讲:MySQL是怎么保证主备一致的? 简概开篇 ​ 在前面的文章中,我不止一次地和你提到了 binlog,大家知道 binlog 可以用来归档,也可以用来做主备同步,但它的内容是什么样的呢?为什么备库执行了 binlog 就可以跟主库保持一致了呢?今天我就正式地和你介绍一下它。毫…

破防了,遂刷一节课圆锥曲线放松大脑,原因如图

来个有缘人 #include<bits/stdc++.h> using namespace std; #define int __int128 void _print(__int128 x,bool first=true){if(x<0){putchar(-);_print(-x,false);return;}if(x==0){if(first) putchar(0);return;}_print(x/10,false);putchar((int)(x%10)+0); } #de…

9月23日总结

今天上了数据结构课,学习了线性表的增删改查;正式上了第一节Java课,学习了些Java的基本知识,运行了代码,部分运行结果如下:

动手实验 1

请运行以下代码(TestDouble.java) public class TestDouble { public static void main(String args[]) {System.out.println("0.05 + 0.01 = " + (0.05 + 0.01));System.out.println("1.0 - 0.42 = " + (1.0 - 0.42));System.out.println("4.015 *…

[GXYCTF2019]BabySQli

这题查看源码后发现一个php文件问了ai后发现MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5是一段 base32编码,经过base32解码,base64解码后的结果是select * from user where username = $name 很明显是一个sql语句,在…

以数赋能实景三维创新“科技+文旅”

在数字化时代,科技与文化的融合为我们带来了无限可能。今天,我们将探讨如何利用实景三维技术,推动“科技+文旅”的创新发展。1. 实景三维技术概述实景三维技术,是一种集成了遥感、地理信息系统(GIS)、三维建模等技术的前沿科技。它能够将现实世界的地理信息以三维形式数字…

什么是原子操作?Java如何实现原子操作?

1.什么是原子操作? 我们在学习MYSQL时就了解过原子性,即整个事务是不可分割的最小单位,事务中任何一个语句执行失败,所有已经执行成功的语句也要回滚,整个数据库状态要恢复到执行任务前的状态。Java中的原子性其实就是和数据库中说的相似,就是不可在分割,在我们的多线程…

JAVA基础之八-方法变量作用域和编译器

本文主要讨论方法中变量作用域。不涉及类属性变量、静态变量、线程变量共享等。 虽然知道某类变量的作用域非常重要,但是没有太多需要说的,因为许多东西是显而易见,不言自明。在大部分情况下,或者在老一点版本中,java语法看起来都比较正常,或者说相对古典。 但是随着JAVA…

信息学奥赛复赛复习01-CSP-J2019-01-字符、字符数组、字符串、string、字符串读取

信息学奥赛复赛复习01-CSP-J2019-01-字符、字符数组、字符串、string、字符串读取 PDF文档公众号回复关键字:202409231 2019 CSP-J 题目1 数字游戏 [题目描述] 小 K 同学向小 P 同学发送了一个长度为 8 的 01 字符串来玩数字游戏,小 P 同学想要知道字符串中究竟有多少个 1。 注…