JumpServer 简介 跳板机 和 堡垒机
跳板机 :跳板机就是一台服务器,维护人员在维护过程中,首先要统一登录到这台服务器上,然后从这台服务器再登录到目标设备进行维护。但跳板机没有实现对运维人员操作行为的控制和审计,此外,跳板机存在严重的安全风险,一旦跳板机系统被攻入,则将后端资源风险完全暴露无遗。安装 OpenVPN 的机器就是跳板机
堡垒机 :跳板机的升级版,提供了认证、授权、审计、自动化运维等功能
可以同时配置 openvpn 和 jumpserver,运维自己通过 openvpn 连接,比较方便,开发测试等其他人员都通过 jumpserver 连接,便于管理
JumpServer 是全球首款完全开源的堡垒机,使用 Python / Django、Go 进行开发,符合 4A 标准
官方地址: http://www.jumpserver.org/ github 项目: https://github.com/jumpserver
特色优势:
开源
分布式
无插件:仅需浏览器,极致的 Web Terminal 使用体验;
多云系统:一套系统,同时管理不同云上面的资产;
云端存储
多租户:一套系统,多个子公司和部门同时使用。
功能列表 https://docs.jumpserver.org/zh/master/#_3,其中部分功能商业版才具有
JumpServer 组成
安装 JumpServer 文档只介绍了极速部署和负载均衡两种安装方式,其实以前的文档是很详细的,现在大大简化了,可能是为了让你买商业版吧
jumpserver 依赖 MySQL(5.7 及以上)和 Redis(5.0 及以上),这里为了方便,均使用 docker 安装
安装 MySQL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 root@u1:~ root@u1:~ root@u1:~ root@u1:~ [mysql] default-character-set=utf8 EOF root@u1:~ [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@u1:~ /usr/local/jumpserver/etc/mysql/ ├── conf.d │ └── mysql.cnf └── mysql.conf.d └── mysqld.cnf 2 directories, 2 files root@u1:~ -e MYSQL_ROOT_PASSWORD=123456 \ -e MYSQL_DATABASE=jumpserver \ -e MYSQL_USER=jumpserver \ -e MYSQL_PASSWORD=123456 \ -v /data/jumpserver/mysql:/var/lib/mysql \ -v /usr/local/jumpserver/etc/mysql/mysql.conf.d/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \ -v /usr/local/jumpserver/etc/mysql/conf.d/mysql.cnf:/etc/mysql/conf.d/mysql.cnf \ mysql:5.7.32 root@u1:~ ot@829aa7ccf010:/ root@829aa7ccf010:/
安装 Redis 1 2 3 4 5 6 7 8 9 10 11 12 root@u1:~ root@u1:~ [root@c71 ~]$yum install redis -y [root@c71 ~]$redis -cli -h 10.0.0.118 10.0.0.118:6379> info server redis_version:5.0.10 ...
部署 JumpServer 可以单独部署各个组件,为了方便,直接部署全部:jms_all
生成 key 和 token:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 root@u1:/data/wwwroot/test 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 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@u1:/data/wwwroot/test 4NrDPj3azajRYQ6B4MM9pi559G1l3JPOW4i8LkUblSKUM7jojL p4ecZLj7Q2QTLs1s root@u1:/data/wwwroot/test SECRET_KEY=4NrDPj3azajRYQ6B4MM9pi559G1l3JPOW4i8LkUblSKUM7jojL BOOTSTRAP_TOKEN=p4ecZLj7Q2QTLs1s
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 root@u1:~ root@u1:~ -v /opt/jumpserver/data:/opt/jumpserver/data \ -e SECRET_KEY=4NrDPj3azajRYQ6B4MM9pi559G1l3JPOW4i8LkUblSKUM7jojL \ -e BOOTSTRAP_TOKEN=p4ecZLj7Q2QTLs1s \ -e DB_HOST=172.17.0.1 \ -e DB_PORT=3306 \ -e DB_USER=root \ -e DB_PASSWORD=123456 \ -e DB_NAME=jumpserver \ -e REDIS_HOST=172.17.0.1 \ -e REDIS_PORT=6379 \ -e REDIS_PASSWORD='' \ --privileged=true \ jumpserver/jms_all:v2.5.3 root@u1:~ 2021-01-09 11:44:43 Sat Jan 9 11:44:43 2021 2021-01-09 11:44:43 JumpServer version v2.5.3, more see https://www.jumpserver.org 2021-01-09 11:44:43 Check database connection ... ... 2021-01-09 11:44:49 Database connect success 2021-01-09 11:44:49 Check database structure change ... 2021-01-09 11:44:49 Migrate model change to database ... Operations to perform: Apply all migrations: admin, applications, assets, audits, auth, authentication, captcha, common, contenttypes, django_cas_ng, django_celery_beat, jms_oidc_rp, ops, orgs, perms, sessions, settings, terminal, tickets, users Running migrations: ...各种OK... 2021-01-09 11:45:16 Collect static files 2021-01-09 11:45:19 Collect static files done guacd[88]: INFO: Guacamole proxy daemon (guacd) version 1.2.0 started Starting guacd: SUCCESS Tomcat started. Jumpserver ALL v2.5.3 官网 http://www.jumpserver.org 文档 http://docs.jumpserver.org 进入容器命令 docker exec -it jms_all /bin/bash root@u1:~ total 15648 ...
通过 80 端口登录 :浏览器输入 10.0.0.118
默认账号密码都是 admin,第一次登录需要修改密码,修改密码为 123456
通过 2222 端口登录 :另开一台虚拟机
1 2 3 4 5 6 7 8 9 10 11 12 13 14 [root@c71 ~]$ssh -p 2222 admin@10.0.0.118 admin@10.0.0.118's password: # 123456 Administrator, 欢迎使用JumpServer开源堡垒机系统 1) 输入 部分IP,主机名,备注 进行搜索登录(如果唯一). 2) 输入 / + IP,主机名,备注 进行搜索,如:/192.168. 3) 输入 p 进行显示您有权限的主机. 4) 输入 g 进行显示您有权限的节点. 5) 输入 d 进行显示您有权限的数据库. 6) 输入 k 进行显示您有权限的Kubernetes. 7) 输入 r 进行刷新最新的机器和节点信息. 8) 输入 h 进行显示帮助. 9) 输入 q 进行退出. Opt>
使用 JumpServer
配置邮件 系统设置 -> 邮件设置:
用户管理 多因子认证 创建用户的时候,可以选择开启多因子认证 功能,就是需要安装手机 APP 谷歌验证器,在登录的时候,打开谷歌验证器输入验证码,二次验证,加强安全性
注意:启用,未来用户可以自己关闭;强制启用,未来用户不可以强制关闭
注意:服务器的时间需要校准,否则谷歌验证器无法通过验证
1 timedatectl set-timezone Asia/Shanghai
统审计员 系统审计员即查看录像带的人,可以实时共享其他用户的终端,可以以录像的方式查看用户的操作历史
管理资产 jumpserver 内置了 ansible
注意:ubuntu 默认不能使用 root 进行 ssh 连接,需要修改 ssh 配置
1 2 3 4 lujinkai@u1:~$ sudo vim /etc/ssh/sshd_config PermitRootLogin yes UseDNS no lujinkai@u1:~$ sudo systemctl restart sshd.service
管理用户 管理用户是资产(被控服务器)上的 root,或拥有 NOPASSWD: ALL sudo 权限的用户, JumpServer 使用该用户来 推送系统用户
、获取资产硬件信息
等。
系统用户 用户使用自己的用户名登录 JumpServer,JumpServer 使用系统用户 登录资产和应用
命令过滤 只能是间接禁止,因为虽然禁止的命令不能使用,但是可以通过脚本执行
权限管理 资产授权 有了用户,有了资产,就需要将用户和资产关联起来
应用管理 数据库 以 mysql 为例:
应用管理 –> 数据库 –> 创建
权限管理 –> 系统用户 –> 创建,协议选 mysql
权限管理 –> 应用授权 –> 创建
注意:jumpserver2.5.3 版本有 bug,web 终端无法连接数据库,建议选择其他版本,v2.4.4 没有此 bug
会话管理 所有用户的所有行为都会被 jumpserver 以录像的形式记录下来,方便在将来出现问题的时候进行追责