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.6 container_name: jms_mysql restart: always environment: 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: 10s timeout: 5s retries: 3 start_period: 30s volumes: - ${VOLUME_DIR:-./data}/mariadb/data:/var/lib/mysql networks: - net redis: image: redis:7.0 container_name: jms_redis restart: always command: 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: 10s timeout: 5s retries: 3 start_period: 10s volumes: - ${VOLUME_DIR:-./data}/redis/data:/data networks: - net jumpserver: image: jumpserver/jms_all:v3.10.3 #build: # context: . # dockerfile: Dockerfile container_name: jms_all privileged: true restart: always environment: 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/tcp depends_on: mysql: condition: service_healthy redis: condition: service_healthy healthcheck: test: "curl -fsL http://localhost/api/health/ > /dev/null" interval: 10s timeout: 5s retries: 3 start_period: 90s volumes: - ${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/nginx networks: - net networks: 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 [email protected] [email protected]'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> p ID | 名称 | 地址 | 平台 | 组织 | 备注 -----+-----------------------+------------+---------------------+----------------------+--- 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文件拖入导入界面,点击导入,即可 #这时候导入的资产,缺少账号需要添加 #在导入的资产点击更新,在账号位置关联,点击模板账号,加入管理账号(特权账号),普通账号 这时被导入的资产普通账号就被自动创建出来了 登录开发账号,就可以连接新加入的资产了
标签:企业级,账号,root,JumpServer,堡垒,mysql,docker,jumpserver,data From: https://www.cnblogs.com/ludingchao/p/18427914