1 堡垒机和 JumpServer
生产应用场景
官方说明 https://docs.jumpserver.org/zh/master/install/setup_by_fast/JumpServer 环境要求: 硬件配置: 2个CPU核心, 4G 内存, 50G 硬盘(最低)
#机器需要至少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
范例:基于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
官网: 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
MFA: 多因子验证(谷歌app验证码) #MFA级别: 启用(本人可以选禁用) 强制启用(本人不可禁用) #手机如果丢了就麻烦了,所以选择自己可以禁用(个人信息里设置)
通过帐号模版创建系统用户中特权用户(管理用户)
通过模板,后续创建管理机中引用特权用户直接更方便
左侧账号管理下账号模板创建 #名称是注释 特权账号就是管理员账号(这里用root) 密码(被管理机root密码)
创建资产
左侧资产管理下资产列表,资产树下右键创建节点(就是文件夹),创开发组,测试组
点击创建,把资产添加到组里,在账号这添加模板,选上面添加的特权用户
左侧账号管理下账号模板创建 #名称是注释 这里不是特权账号,不勾 密码策略随机生成(jumpserver自己连接用) #点自动推送(jumpserver通过管理用户自动在所有资产机器创用户) 推送参数不用改
创建资产授权规则并在后端主机自动创建普通用户
左侧权限管理下资产授权点创建 #用户栏直接填入用户组 资产栏可以直接选择节点 账号点指定账号(选前面创建的普通用户) #(这里因为每个资产前面已经关联了被管理机器的管理员账号,所以会通过管理员账号去创建普通用户) #点击提交#这是,在任一一台开发机器上,能查到对应的普通用户被创建 [root@ubuntu ~]#id dev uid=1001(dev) gid=1001(dev) groups=1001(dev)
可以文件传输
#上传的文件在/tmp目录下 #右键文件可以下载
审计员可以审计
用审计权限的用户登录,并进入审计台 #左侧能看在线用户,可以让在线用户下线 #会话审计下可以看会话记录,可以点击监控对方命令界面,命令记录看之前的命令
#在被控机上安装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,可以连接了
[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 搜索:
左侧权限管理下命令过滤,先点击上面命令组,点击创建 #这里点击命令 rm ssh bash 点击提交 再点击上方的命令过滤,点击创建 #用户可以点击属性筛选,点添加,用户组,点任意包含,选择组 #资产点击属性过滤(本身范围在当前组范围下),点任意包含,选择节点 #命令组选上面添加的命令组 #动作选拒绝 点提交#注意刚定义的规则对正在连接命令端的的用户是不生效的,该用户退出命令端再登录就生效了 #但是,只要写入脚本给执行权限,还是能执行脚本。并且如果脚本定义别名,那这别名后面依然可以使用
审计台,会话审计下,会话记录,可以看历史会话,可以看回放,下载视频 #下载下来的视频是tar包,需要工具才能播放,播放工具如下: https://github.com/jumpserver/VideoPlayer/releases #jumpserver官方出的,定制版播放器,把tar包扔进去就能播放
如果很多机器,一台台添加太慢了,这里有批量导入的方法
左侧资产管理下资产列表,右面有导入导出按钮 #导出 #选中资产,点击导出,csv格式,仅导出选择项#导入 #点击上方资产列表下的主机栏,点导入,点击下载模板CSV,在该模板上进行修改 #里面的内容组后面有id,不知道可从上面导出的csv文件里查(也可通过网页跳转地址查看对应信息) #把修改完的csv文件拖入导入界面,点击导入,即可#这时候导入的资产,缺少账号需要添加 #在导入的资产点击更新,在账号位置关联,点击模板账号,加入管理账号(特权账号),普通账号 这时被导入的资产普通账号就被自动创建出来了登录开发账号,就可以连接新加入的资产了