跳板机就是一台服务器,开发或运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作
跳板机缺点:没有实现对运维人员操作行为的控制和审计,使用跳板机的过程中还是会出现误操作、违规操作导致的事故,一旦出现操作事故很难快速定位到原因和责任人
堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、及时处理及审计定责
1、堡垒机比跳板机多了实时收集、监控网络环境、集中报警等功能
2、给其它服务器推送sudo用户,并设置权限
3、多了一个用户行为监控的功能(有录像)
Jumpserver 是FIT2CLOUD(飞致云)旗下的软件产品,全球首款完全开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 的专业运维审计系统
Jumpserver 使用 Python / Django 进行开发,遵循 Web 2.0 规范,配备了业界领先的 Web Terminal 解决方案,交互界面美观、用户体验好
Jumpserver 采纳分布式架构,支持多机房跨区域部署,中心节点提供 API,各机房部署登录节点,可横向扩展、无并发限制
为互联网企业提供了认证,授权,审计,自动化运维等功能
身份认证(Authentication) |
|
登录认证 | 资源统一登录与认证 |
LDAP/AD 认证 | |
RADIUS 认证 | |
OpenID 认证(实现单点登录) | |
CAS 认证 (实现单点登录) | |
MFA(多因子)认证 | MFA 二次认证(Google Authenticator) |
RADIUS 二次认证 | |
登录复核(X-PACK) | 用户登录行为受管理员的监管与控制 |
多因子(MULTI-FACTOR-AUTH):认证功能是递升式认证功能的扩展,它允许您指定一个受保护对象策略(POP),该策略强制用户使用比已配置的 POP 认证级别低的所有认证机制来认证。即要求用户在授予访问权之前的必需级别以及低于该级别的所有级别上进行认证。多因子认证也可与重新认证结合使用以强制多因子重新认证
账号管理(Account) |
|
集中账号 | 管理用户管理 |
系统用户管理 | |
用户的角色 | 支持超级管理员、超级审核员、组织管理员(X-Pack)、组织审核员(X-Pack)和普通用户5个角色 |
统一密码 | 支持资产密码管理服务、自动生成密码、密码自动推送、密码到期设置 |
密码更改计划(X-PACK) | 支持通过批量Linux/Windows定期更改密码、生成随机密码、实施多种密码策略 |
多云资产管理(X-PACK) | 对私有云、公有云资产自动统一纳管 |
发现主机状态(X-PACK) | 自定义任务定期收集主机用户 |
密码盒(X-PACK) | 统一对资产主机的用户密码进行查看、更新、测试操作 |
授权控制(Authorization) |
|
多维授权 | 对用户、用户组、资产、资产节点、应用以及系统用户进行授权 |
资产授权 | 1、以树形结构显示 2、可以灵活授权资产树的资产和节点 3、节点中的资产可以自动继承授权 4、子节点自动继承父节点的授权 |
应用授权 | 实现更细粒度的应用级授权 |
数据库授权 | 支持数据库授权,包括MySQL、Oracle数据库(X-Pack)、PostgreSQL (X-Pack)和Mariadb(X-Pack) |
动作授权 | 实现对授权资产的文件上传、下载以及连接动作的控制 |
时间授权 | 实现对授权资源使用时间段的限制 |
特权指令 | 实现对特权指令的使用(支持黑白名单) |
命令过滤 | 实现对授权系统用户所执行的命令进行控制 |
文件传输和管理 | 支持SFTP文件上传/下载和网络SFTP文件管理 |
工单管理(X-PACK) | 支持对用户登录请求行为进行控制 |
子账户管理(x光包) | 支持多租户管理和权限隔离 |
安全审计(Audit) |
|
登录审核 | 支持审核用户登录JumpServer系统的日志,并将审核信息收集到Syslog |
运营审计 | 支持用户操作行为审计 |
会话审计 | 在线会话内容审计、历史会话内容审计 |
视频审计 | 支持通过回放审计资产运营(如Linux、Windows机)和应用运营(如RemoteApp(X-Pack)、MySQL、Kubernetes等)的记录,支持将记录上传到公有云 |
指令审计 | 支持审计资产和应用的操作命令,对高风险的命令进行告警 |
文件传输 | 支持审核文件上传/下载的记录 |
实时监控 | 向管理员/审计员提供实时监控和中断用户操作行为的能力,以提高用户操作的安全性 |
Jumpserver | 管理后台,是核心组件(Core), 使用 Django Class Based View 风格开发,支持 Restful API |
Restful API:Representational State Transfer的缩写。直接翻译的意思是"表现层状态转化"。 Apipost = Api调试工具 + Api文档管理工具 +Mock 工具+Jmeter测试工具;ApiPost是更符合中国开发者使用习惯的开发协同工具,可以为团队提升50%的工作效率 |
|
Coco | 实现了 SSH Server 和 Web Terminal Server 的组件,提供 SSH 和 WebSocket 接口, 使用 Paramiko 和 Flask 开发 |
WebTerminal:基于 Web 的 Linux 终端 | |
Luna | 现在是 Web Terminal 前端,计划前端页面都由该项目提供,Jumpserver 只提供 API,不再负责后台渲染html等 |
Guacamole | Apache 跳板机项目,Jumpserver 使用其组件实现 RDP 功能,Jumpserver 并没有修改其代码而是添加了额外的插件,支持 Jumpserver 调用 |
Jumpserver-Python-SDK | Jumpserver API Python SDK,Coco 目前使用该 SDK 与 Jumpserver API 交互 |
Jumpserver 堡垒机部署架构图
系统 | IP | 主机名 | 服务 |
CentOS 7.4 | 192.168.2.4 | server | JumpServer |
CentOS 7.4 | 192.168.2.9 | DB-R(Mysql和Redis) | 数据库 |
注意: 本次实验使用离线部署
1、 准备一台 2核4G (最低)且可以访问互联网的 64 位 Linux 主机(本次实验使用:CentOS 7.4)
方法一是在一台机器上进行操作全部都安装在server服务上;需要上网
方法二是jumpserver与mysql和redis分离部署在工作环境中可能会用到;提前下载
下载地址:jumpserver 或者执行以下命令
配置一个网卡重启网卡,可以ping通外网
[root@server ~]# systemctl restart network
[root@server ~]# yum -y install wget
[root@server ~]# wget https://github.com/jumpserver/installer/releases/download/v2.17.2/jumpserver-installer-v2.17.2.tar.gz
[root@server ~]# tar -xf jumpserver-installer-v2.17.2.tar.gz
[root@server ~]# cd jumpserver-installer-v2.17.2
以 root 用户执行如下命令一键安装 JumpServer
———————————————————自动安装无需操作———————————————————————————————————
[root@server ~]# curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.17.2/quick_start.sh | bash
download install script to /opt/jumpserver-installer-v2.17.2 (开始下载安装脚本到 /opt/jumpserver-installer-v2.17.2)
██╗██╗ ██╗███╗ ███╗██████╗ ███████╗███████╗██████╗ ██╗ ██╗███████╗██████╗
██║██║ ██║████╗ ████║██╔══██╗██╔════╝██╔════╝██╔══██╗██║ ██║██╔════╝██╔══██╗
██║██║ ██║██╔████╔██║██████╔╝███████╗█████╗ ██████╔╝██║ ██║█████╗ ██████╔╝
██ ██║██║ ██║██║╚██╔╝██║██╔═══╝ ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██╔══╝ ██╔══██╗
╚█████╔╝╚██████╔╝██║ ╚═╝ ██║██║ ███████║███████╗██║ ██║ ╚████╔╝ ███████╗██║ ██║
╚════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝
Version: v2.17.2
1. 检查配置文件
配置文件位置: /opt/jumpserver/config
/opt/jumpserver/config/config.txt [ √ ]
/opt/jumpserver/config/nginx/cert/server.crt [ √ ]
/opt/jumpserver/config/nginx/cert/server.key [ √ ]
完成
................................................
....................................
.....................
.........
——————————————————————————安装完成会提示!!!!!
cd /opt/jumpserver-installer-v2.17.2
./jmsctl.sh start #启动
./jmsctl.sh down #停止
./jmsctl.sh uninstall #卸载
./jmsctl.sh -h #帮助
访问:192.168.2.4
下载离线安装包网址:jumpserver-offline-installer-v2.17.2-amd64-84
如果地址失效可以去官方进行下载
分离部署需要有一台服务器作为数据存储;也可以不分离
msyql安装文献: Mysql数据库管理系统
安装完成后进入mysql数据库
mysql> create databases jumpserver;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on jumpserver.* to 'jumpserver'@'192.168.2.6' identified by '123.com';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
Redis安装文献:Redis高性能数据库
[root@DB-R ~]# redis -h 192.168.2.9 -p 6379 -a 123.com
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.2.9:6379>
把文件上传到 opt 文件中
[root@server ~]# cd /opt
[root@server opt]# ls
jumpserver-offline-installer-v2.17.2-amd64-84.tar.gz
[root@server opt]# tar -xf jumpserver-offline-installer-v2.17.2-amd64-84.tar.gz
[root@server opt]# cd jumpserver-offline-installer-v2.17.2-amd64-84
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
[root@server jumpserver-offline-installer-v2.17.2-amd64-84]# cat config-example.txt
............
.......
## MySQL 配置, USE_EXTERNAL_MYSQL=1 表示使用外置 MySQL, 请输入正确的 MySQL 信息
USE_EXTERNAL_MYSQL=1 #使用外部mysql
DB_HOST=192.168.2.9 #mysql主机IP
DB_PORT=3306 #端口号
DB_USER=jumpserver #授权用户
DB_PASSWORD=123.com #授权密码
DB_NAME=jumpserver #名称库
## Redis 配置, USE_EXTERNAL_REDIS=1 表示使用外置 Redis, 请输入正确的 Redis 信息
USE_EXTERNAL_REDIS=1 #使用外部redis
REDIS_HOST=192.168.2.9 #指定redis地址
REDIS_PORT=6379 #端口号
REDIS_PASSWORD=123.com #登录redis的密码
............
.... 其他配置不更改
保存
注意: 在安装过程中如果没有myslq和redis数据库回车即可;也不设置配置文件;如果要使用邮箱需要开启对外访问默认就可
这里设置对外访问端口:需要使用到邮箱服务
[root@server jumpserver-offline-installer-v2.17.2-amd64-84]# ./jmsctl.sh install
██╗██╗ ██╗███╗ ███╗██████╗ ███████╗███████╗██████╗ ██╗ ██╗███████╗██████╗
██║██║ ██║████╗ ████║██╔══██╗██╔════╝██╔════╝██╔══██╗██║ ██║██╔════╝██╔══██╗
██║██║ ██║██╔████╔██║██████╔╝███████╗█████╗ ██████╔╝██║ ██║█████╗ ██████╔╝
██ ██║██║ ██║██║╚██╔╝██║██╔═══╝ ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██╔══╝ ██╔══██╗
╚█████╔╝╚██████╔╝██║ ╚═╝ ██║██║ ███████║███████╗██║ ██║ ╚████╔╝ ███████╗██║ ██║
╚════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝
Version: v2.17.2
1. 检查配置文件
配置文件位置: /opt/jumpserver/config
/opt/jumpserver/config/config.txt [ √ ]
/opt/jumpserver/config/nginx/cert/server.crt [ √ ]
/opt/jumpserver/config/nginx/cert/server.key [ √ ]
完成
2. 备份配置文件
备份至 /opt/jumpserver/config/backup/config.txt.2022-01-07_04-42-28
完成
>>> 安装配置 Docker
1. 安装 Docker
完成
2. 配置 Docker
是否需要自定义 docker 存储目录, 默认将使用目录 /var/lib/docker? (y/n) (默认为 n):
完成
3. 启动 Docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /etc/systemd/system/docker.service.
完成
>>> 加载 Docker 镜像
........................
...........
.... ———————————————————————— 如果其他不更改自己回车
..
4. 配置 MySQL
是否使用外部 MySQL? (y/n) (默认为 y): y #输入y 使用外部mysql 后一直回车
请输入 mysql 的主机地址 (默认为 192.168.2.9):
请输入 mysql 的端口 (默认为 3306):
请输入 mysql 的数据库 (默认为 jumpserver):
请输入 mysql 的用户名 (默认为 jumpserver):
请输入 mysql 的密码 (默认为 123.com):
完成
5. 配置 Redis
是否使用外部 Redis? (y/n) (默认为 y): #输入y 使用外部Redis 后一直回车
请输入 Redis 的主机地址 (默认为 192.168.2.9):
请输入 Redis 的端口 (默认为 6379):
请输入 Redis 的密码 (默认为 123.com):
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
Warning: AUTH failed
redis_version:6.2.6
完成
6. 配置对外端口
是否需要配置 JumpServer 对外访问端口? (y/n) (默认为 n): y #配置对外访问端口
JumpServer web 端口 (默认为 80):
JumpServer ssh 端口 (默认为 2222):
完成
..........................
............
........
>>> 安装完成了
1. 可以使用如下命令启动, 然后访问
cd /opt/jumpserver-offline-installer-v2.17.2-amd64-84
./jmsctl.sh start
2. 其它一些管理命令
./jmsctl.sh stop
./jmsctl.sh restart
./jmsctl.sh backup
./jmsctl.sh upgrade
更多还有一些命令, 你可以 ./jmsctl.sh --help 来了解
3. Web 访问
http://192.168.2.6:80
默认用户: admin 默认密码: admin
4. SSH/SFTP 访问
ssh -p2222 [email protected]
sftp -P2222 [email protected]
5. 更多信息
我们的官网: https://www.jumpserver.org/
我们的文档: https://docs.jumpserver.org/
安装完成后启动
[root@server jumpserver-offline-installer-v2.17.2-amd64-84]# cd /opt/jumpserver-offline-installer-v2.17.2-amd64-84
[root@server jumpserver-offline-installer-v2.17.2-amd64-84]# ./jmsctl.sh start
Creating jms_core ... done
Creating jms_koko ... done
Creating jms_web ... done
Creating jms_celery ... done
Creating jms_lion ... done
测试登录成功说明部署完成
[root@C7--06 ~]# ssh [email protected] -p 2222 #使用admin账号登录,密码默认admin
[email protected]'s password:
Administrator, JumpServer 开源堡垒机
1) 输入 部分IP,主机名,备注 进行搜索登录(如果唯一).
2) 输入 / + IP,主机名,备注 进行搜索,如:/192.168.
3) 输入 p 进行显示您有权限的主机.
4) 输入 g 进行显示您有权限的节点.
5) 输入 d 进行显示您有权限的数据库.
6) 输入 k 进行显示您有权限的Kubernetes.
7) 输入 r 进行刷新最新的机器和节点信息.
8) 输入 h 进行显示帮助.
9) 输入 q 进行退出.
Opt>
3.1、创建jumpserver新用户并且让用户修改密码登录
修改当前站点的URL为本机的IP或域名,否则新建的用户发送过去的邮件无法修改密码
可以进行测试连接
创建用户
登录成功
3.2、给用户组创建管理服务器用户
1、创建用户组
2、 创建命令过滤
系统用户可以绑定一些命令过滤器,一个过滤器可以定义一些规则 当用户使用这个系统用户登录资产,然后执行一个命令 这个命令需要被绑定过滤器的所有规则匹配,高优先级先被匹配,当一个规则匹配到了,如果规则的动作是允许,这个命令会被放行,如果规则的动作是禁止,命令将会被禁止执行,否则就匹配下一个规则,如果最后没有匹配到规则,则允许执行
3、 添加特权用户
4、添加资产(服务器)
右击Default====>创建节点(修改名称为linux)
设置完成后提交
5、 资产授权
提交
测试:使用小V的 用户root 密码123.com 登录进行操作
注意:这里使用root用户登录到linux服务器上;如果要使用其他用户需要先在linux服务器上创建用户授权登录才行
在admin用户上可以 查看历史记录
其实还有很多功能这里就说这么多有时间在继续扩展