jumpserver企业堡垒机

jumperserver企业堡垒机

一:jumperserver简介

JumpServer 是全球首款完全开源的堡垒机, 使用 GNU GPL v2.0 开源协议, 是符合 4A 的专业运维审计系统。
JumpServer 使用 Python / Django 进行开发, 遵循 Web 2.0 规范, 配备了业界领先的 Web Terminal 解决方案, 交互界面美观、用户体验好。
JumpServer 采纳分布式架构, 支持多机房跨区域部署, 中心节点提供 API, 各机房部署登录节点, 可横向扩展、无并发访问限制。
JumpServer 现已支持管理 SSH、 Telnet、 RDP、 VNC 协议资产。

二:一键部署jumperserver

cd  /etc/yum.repos.d/
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce -y
systemctl restart docker
systemctl enable docker

curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.6.1/quick_start.sh | sh  #要求内核8G

提前安装好docker镜像
vim /tmp/2.sh
#!/bin/bash
docker  tag  docker.mirrors.ustc.edu.cn/jumpserver/nginx:alpine2     jumpserver/nginx:alpine2
docker  tag  docker.mirrors.ustc.edu.cn/jumpserver/core:v2.6.1       jumpserver/core:v2.6.1
docker  tag  docker.mirrors.ustc.edu.cn/jumpserver/koko:v2.6.1       jumpserver/koko:v2.6.1
docker  tag  docker.mirrors.ustc.edu.cn/jumpserver/luna:v2.6.1        jumpserver/luna:v2.6.1
docker  tag  docker.mirrors.ustc.edu.cn/jumpserver/lina:v2.6.1        jumpserver/lina:v2.6.1
docker  tag  docker.mirrors.ustc.edu.cn/jumpserver/guacamole:v2.6.1        jumpserver/guacamole:v2.6.1
docker  tag  docker.mirrors.ustc.edu.cn/jumpserver/elasticsearch:7.9.3     jumpserver/elasticsearch:7.9.3
docker  tag  docker.mirrors.ustc.edu.cn/jumpserver/nginx:alpine2       jumpserver/nginx:alpine2
docker  tag  docker.mirrors.ustc.edu.cn/jumpserver/mysql:5            jumpserver/mysql:5
docker  tag  docker.mirrors.ustc.edu.cn/jumpserver/redis:6-alpine     jumpserver/redis:6-alpine
docker  tag  docker.mirrors.ustc.edu.cn/jumpserver/core:v2.6.1        jumpserver/core:v2.6.1

cd /opt/jumpserver-installer-v2.6.1/
./jmsctl.sh start






用户:登录jumpserver用的

test用户 运维
oldboy用户 开发

资产管理:
管理用户: 被管理机器的root用户
系统用户: 登录资产使用的用户(允许执行的命令)
网域: 进行跳转登录
命令过滤: 阻止运行的命令
资产列表: 添加托管的服务器

权限管理
关联资产和jumpserver

会话管理:
连接服务器

三:手动配置jumpserver

跳板机服务部署过程
环境准备:
1)系统环境 centos7.5 - centos7.6
2)安全优化 selinux关闭 防火墙服务关闭
3)下载优化 yum源优化

1.需要部署跳板机依赖软件

yum -y install git python-pip mariadb-devel gcc automake autoconf python-devel vim sshpass lrzsz readline-devel
git          	--- 用于下载jumpserver软件程序
python-pip   	--- 用于安装python软件
mariadb-devel	--- 数据库依赖软件包 
gcc             --- 解析代码中C语言信息(解释器)
automake        --- 实现软件自动编译过程  
autoconf        --- 实现软件自动配置过程
python-devel    --- 系统中需要有python依赖
readline-devel  --- 在操作python命令信息时,实现补全功能

2.下载jumpserver程序

cd /opt
git clone https://git.coding.net/jumpserver/jumpserver.git

3.python软件依赖安装

cd /opt/jumpserver/install/
pip install -r requirements.txt

4.优化pip源信息

mkdir ~/.pip/
vim ~/.pip/pip.conf
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
    
[install]
trusted-host=mirrors.aliyun.com

5.jumpserer软件初始化安装

yum install -y mariadb-server 
systemctl start mariadb 
python install.py  

​ 注:常见问题:jumpserver服务无法正常启动
​ 原因一:RP值有些低

cd /opt/jumpserver/
./service.sh start		

查看进程信息:

jumpserver第一个重要进程:
python ./manage.py runserver 0.0.0.0:80    --- 开启80端口服务
jumpserver第二个重要进程:
python ./run_websocket.py                  --- 利用此进程实现跳板机可以连接其他主机

原因二:环境准备有问题
执行以下命令

python /opt/jumpserver/manage.py runserver 0.0.0.0:80  --- 启动以上第一个进程

执行以下命令

python /opt/jumpserver/run_websocket.py                --- 启动以上第二个进程

4.浏览器登录jumpserver配置界面
确认是否能登录成功

6.浏览器登录jumpserver配置界面 http://10.0.0.81 admin/admin 用户/密码

7.跳板机服务配置过程
1)企业配置需求说明:
需求01:所有主机想要被管理必须经过跳板机管理 所有主机只监听内网地址
需求02:设置不同用户权限信息
oldboy 老男孩 运维人员 权限大些 企业邮箱 oldboy@xxx.com
oldgirl 老女孩 开发人员 查看数据信息 企业邮箱 oldgirl@xxx.com
olddog 老狗 数据库人员 数据库操作

   2) 用户管理配置
      功能作用:设置可以连接跳板机用户信息
      添加用户信息  --- 用户信息 --- 发送邮件

收到一封创建好用户邮件信息:

您的用户名: oldboy
您的权限: 普通用户
您的web登录密码: HqOlysmTxOUyz8Xn
您的ssh密钥文件密码: 28HOoAJV0fyPwnzj
密钥下载地址: http://10.0.0.62/juser/key/down/?uuid=250dff26be35440fa7b55805e436b954

说明: 请登陆后再下载密钥!

资产管理配置
功能作用:定义跳板机可以访问管理主机信息
添加好资产信息 --- 连接主机地址信息/用户信息(必须是一个管理员用户信息)

授权管理配置

常见问题:授权用户推送失败:

1)远程服务配置是否正确
网络因素 用户信息
2)数据库信息出现异常
进入到数据库中删除jumpserver数据库 重新创建新的数据库

重新初始化部署jumpserver

配置验证过程

官方资料链接
https://github.com/ibuler/jumpserver
https://github.com/jumpserver/jumpserver/wiki 新版本jumpserver项目资料
https://github.com/jumpserver/jumpserver/wiki/v0.3.2-常见问题-FAQ

jumpserver软件web界面操作
利用浏览器登录到jumpserver登录界面

image-20201226223801781

界面管理配置操作官方资料:
https://github.com/jumpserver/jumpserver/wiki/快速开始
①. 添加用户
用户管理 - 查看用户 - 添加用户 填写基本信息,完成用户添加
用户添加完成后,根据提示记住用户账号密码,换个浏览器登录下载key,
ssh登录jumpserver测试

image-20201226223840840

为创建好的普通员工发送邮件通知信息

image-20201226223921926

提示用户添加成功,并且可以收到通知邮件信息
image-20201226223955730

image-20201226224013416

说明信息:
web界面创建用户信息,实质上在程序内部做了两件事
①. 在jumpserver服务程序的数据库中相应表中,添加了新的用户信息
②. 在jumpserver的服务系统中,利用useradd命令创建出来相应的普通用户,并且会生成用户对应的公钥和私钥,利用密钥登录跳板机
普通用户还有一个重要作用,可以用来登录jumpserver的web管理界面

②. 添加资产
资产管理 - 查看资产 - 添加资产 填写基本信息,完成资产添加
添加资产实质的作用是添加通过跳板机可以管理的主机信息

image-20201226224104547

选择单台添加,设置好主机名或IP地址,可以选择管理账号,勾选默认配置
使用默认表示选择默认的用户配置---选择【设置】---编辑【默认设置】,表示定义管理账户的默认设置
如果没有设置,默认是无法进行勾选的

image-20201226224352521

定义管理权限用户,必须在被管理资产主机上真实存在的,并且是具有创建用户 删除用户的等权限的管理用户,比如root

image-20201226224430224

管理用户设置完成,点击提交

image-20201226224455384

输出以下提示信息,表示主机资产添加成功

image-20201226224521645

添加默认管理用户设置
有可能公司所有主机的管理用户和账号密码是一致的,就可以设置默认管理用户

image-20201226224614373

# 在资产主机中创建默认管理用户admin
[root@jumpserver-02 ~]# useradd admin
[root@jumpserver-02 ~]# echo 123456|passwd --stdin admin
更改用户 admin 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@jumpserver-02 ~]# visudo <- 设置非root管理用户的sudo权限
admin ALL=(ALL) NOPASSWD: ALL

image-20201226224655431

如果采用的是密钥登录,也可以在下面的界面输入私钥信息,设置完毕点击确认保存

image-20201226224720725

默认管理用户设置完成

image-20201226224749221

添加资产主机是以主机名作为主键识别唯一性的,可以更改主机名称,再添加一台相同的资产主机
此种逻辑设置,主要考虑到通过远程登录时,公网IP一样,端口映射不一样,所以主机名唯一,ip地址可以进行重复使用

image-20201226224833775

image-20201226224850837

至此,用户添加完毕,主机资产添加完毕,下面就要对管理权限进行授权了
③.授权管理
添加sudo
授权管理 - Sudo - 添加别名 输入别名名称和命令,完成sudo添加
默认跳板机创建的用户都是普通用户,所以需要依赖sudo命令别名功能,使之普通用户具有相应权限,操作管理用户的命令

image-20201226224945317

image-20201226225003017

出现如下提示信息,表示sudo别名命令就创建完毕了

image-20201226225038930

image-20201226225059388

添加系统用户
授权管理 - 系统用户 - 添加 输入基本信息,完成系统用户添加

image-20201226225123091

# 知识点总结回顾
普通用户:实际上类似于公司的员工,不同的员工可以利用创建的普通用户,登录跳板机界面进行管理jumpserver跳板机
管理用户:是必须在系统中存在的用户,后续执行一些特殊权限命令,都需要借助管理用户,比如创建新的的用户信息等
默认用户:就是默认管理用户,有时公司的全部主机会有一个共有的管理用户,比如root用户,就可以进行管理用户的默认配置
系统用户:表示用于管理系统的用户,比如网络系统用户为netadmin 开发为devadmin 运维为sa等,根据职能需求进行创建
系统用户是被管理用户所创建出来的

系统用户进行关联相应sudo权限,并且可以初始化不设置密码信息,后续会自动生成

image-20201226225203829

image-20201226225239423

推送系统用户
授权管理 - 推送 - 选择需要推送的资产或资产组完成推送
推送只支持服务器,使用密钥是指用户从跳板机跳转时使用key,反之使用密码,
授权时会检查推送记录,如果没有推送过则无法完成系统用户在该资产上的授权。
如果资产时网络设备,请不要选择密码和秘钥,模拟一下推送,目的是为了生成
推送记录。
系统用户配置完毕后,需要利用【推送】功能,将需要创建的用户信息,通过ansible批量告知被管理客户端,进行相应用户的创建

image-20201226225642871

# 查看用户信息
[root@jumpserver-02 ~]# id dev
id: dev:无此用户
说明:在推送系统之前,被管理主机客户端是没有定义的dev用户信息的;只有推送之后才有的
进行

image-20201226225719135

如下图所示,系统用户推送成功

image-20201226225748677

[root@jumpserver-02 ~]# id dev
uid=502(dev) gid=502(dev) 组=502(dev)
说明:检验完毕,系统用户推送成功
记忆回顾:模拟推送失败过程
①. 开启主机selinux,并且确认客户端主机未安装libselinux-python软件
②. 回收dev系统用户
③. 重新进行推送
思考:理解推送过程逻辑原理,大致理解libselinux-python软件包作用

添加授权规则
授权管理 - 授权规则 - 添加规则 选择刚才添加的用户,资产,系统用户完成授权

image-20201226225825680

image-20201226225842112

如果资产中存在没有系统用户推送记录的资产信息,就会输出以下错误信息

image-20201226225904597

重新进行配置调整后,进行重新授权

image-20201226225932330

image-20201226225946939

上述报错,是由于存在一些资产信息,没有系统用户推送记录导致,为避免这种问题再次出现,可以将所用资产的系统用户都推送一下

image-20201226230016934

image-20201226230038917

对未推送过系统用户资产,进行系统用户推送

image-20201226230104730

image-20201226230123648

image-20201226230139331

重新修改授权信息

image-20201226230207926

授权用户进行调整,授权资产信息也重新进行调整

image-20201226230238231

image-20201226230255292

image-20201226230314637

利用资产中的连接,进行连接测试,会报错误信息如下图所示

image-20201226230344594

image-20201226230359705

提示以上错误,是因为没有对admin超级管理进行资产信息的授权,下面对admin用户也进行资产授权
取消掉一个普通用户,添加一个管理员用户,然后重新进行授权

image-20201226230426344

授权变更完成

image-20201226230448959

④. 测试登录
用户下载key 登录跳板机,会自动运行connect.py,根据提示登录服务器
用户登陆web 查看授权的主机,点击后面的链接,测试是否可以登录服务器
利用jumpserver即可实现连接相应的主机,进行操作管理,并且使用的系统用户就是之前创建的dev用户

image-20201226230523047

查看dev系统用户的sudo定义的权限信息是否正确

image-20201226230546349

说明信息:
以上连接主机过程,需要依赖之前启动的run_websocket.py 程序服务,否则会出现连接异常问题

⑤. 监控和结束会话
日志审计 - 在线 查看当前登录的用户登录情况,点击监控查看用户执行的命令, 点击阻断,结束用户的会话
重新建立新的浏览窗口,进行监控查看

image-20201226230628077

通过跳板机连接资产主机,输入相应的命令,都会被实时监控到

image-20201226230655314

image-20201226230714623

通过资产操作抓取资产主机硬件信息

image-20201226230744218

image-20201226230812681

image-20201226230827349

可以把主机资产信息批量导出,进行资产管理

image-20201226230853078

还可以对所用资产主机进行批量执行命令,实现主机资产批量管理

image-20201226230918002

image-20201226230935498

⑥. 执行命令
测试命令的执行,命令记录查看 批量执行命令的日志
批量执行的命令操作也是有相应操作记录的

image-20201226231002679

⑦. 查看历史记录
日志审计 - 登录历史 查看登录历史,点击统计查看命令历史,点击回放查看录像
4. jumpserver软件web界面操作-普通用户界面操作
普通用户进行登录
用户名为之前创建的普通用户用户名,密码为邮件发送告知,进行登录

image-20201226231030435

普通用户进行资产主机连接管理,操作步骤基本和上面的admin管理员操作步骤一致

image-20201226231054145

说明信息:
普通用户下是没有审计功能,所以无法对资产主机进行监控管理,只有管理员admin有权限进行对运维人员的操作监控管理

上传下载
测试文件的上传下载,日志审计 - 上传下载 查看上传下载记录
主要是对普通用户进行监控,对系统上的资源文件,进行过哪些上传和下载操作

image-20201226231136470

image-20201226231155328

上传和下载操作也会被进行记录,便于管理员进行监控管理

image-20201226231221074

  1. jumpserver软件命令行界面操作
    要用admin用户进行命令行操作管理

用户进入到命令行界面

[root@jumpserver-01 jumpserver]# python connect.py
没有该用户,或许你是以root运行的 No that user.
[root@jumpserver-01 jumpserver]# su - admin
[admin@jumpserver-01 ~]$ cd /opt/jumpserver/
[admin@jumpserver-01 jumpserver]$ python connect.py

欢迎使用Jumpserver开源跳板机系统

1) 输入 ID 直接登录.
2) 输入 / + IP, 主机名 or 备注 搜索.
3) 输入 P/p 显示您有权限的主机.
4) 输入 G/g 显示您有权限的主机组.
5) 输入 G/g + 组ID 显示该组下主机.
6) 输入 E/e 批量执行命令.
7) 输入 U/u 批量上传文件.
8) 输入 D/d 批量下载文件.
9) 输入 H/h 帮助.
0) 输入 Q/q 退出.
Opt or ID>:
普通用户下是没有审计功能,所以无法对资产主机进行监控管理,只有管理员admin有权限进行对运维人员的操作监控管理

切换到普通用户oldboy进行命令行操作

[root@jumpserver-01 jumpserver]# su - oldboy

### 欢迎使用Jumpserver开源跳板机系统 ###

1) 输入 ID 直接登录.
2) 输入 / + IP, 主机名 or 备注 搜索.
3) 输入 P/p 显示您有权限的主机.
4) 输入 G/g 显示您有权限的主机组.
5) 输入 G/g + 组ID 显示该组下主机.
6) 输入 E/e 批量执行命令.
7) 输入 U/u 批量上传文件.
8) 输入 D/d 批量下载文件.
9) 输入 H/h 帮助.
0) 输入 Q/q 退出.
Opt or ID>:
说明:发现直接就进入到跳板机的命令行界面,因为在/etc/profile.d 目录当中存在一个跳板机脚本 zzjumpserver.sh
模拟利用oldboy普通用户进行管理资产主机
通过邮件信息首先下载key密钥信息
密钥

image-20201226231439744

密钥信息下载完成

image-20201226231506357

利用xshell的密钥登录主机方法,将密钥进行导入,即可直接通过密钥登录到跳板机命令行界面

命令行选项操作说明
### 欢迎使用Jumpserver开源跳板机系统 ###
1) 输入 ID 直接登录.
2) 输入 / + IP, 主机名 or 备注 搜索.
3) 输入 P/p 显示您有权限的主机.
4) 输入 G/g 显示您有权限的主机组.
5) 输入 G/g + 组ID 显示该组下主机.
6) 输入 E/e 批量执行命令.
7) 输入 U/u 批量上传文件.
8) 输入 D/d 批量下载文件.
9) 输入 H/h 帮助.
0) 输入 Q/q 退出.
Opt or ID>:
说明:发现直接就进入到跳板机的命令行界面,因为在/etc/profile.d 目录当中存在一个跳板机脚本 zzjumpserver.sh
# 显示有权限管理的主机信息
Opt or ID>: p
[ID ] 主机名 IP 端口 系统用户 备注
[0 ] jumpclient-01 10.0.0.71 22 ['dev']
[1 ] dbmaster-01 10.0.0.71 22 ['dev']
# 直接输入ID信息,进行登录主机
Opt or ID>: 0
Last login: Tue Jun 27 03:08:36 2017 from 10.0.0.70
[dev@jumpserver-02 ~]$
# 显示帮助信息界面
Opt or ID>: h
### 欢迎使用Jumpserver开源跳板机系统 ###
1) 输入 ID 直接登录.
2) 输入 / + IP, 主机名 or 备注 搜索.
3) 输入 P/p 显示您有权限的主机.
4) 输入 G/g 显示您有权限的主机组.
5) 输入 G/g + 组ID 显示该组下主机.
6) 输入 E/e 批量执行命令.
7) 输入 U/u 批量上传文件.
8) 输入 D/d 批量下载文件.
9) 输入 H/h 帮助.
0) 输入 Q/q 退出.
# 利用搜索功能搜索主机信息
Opt or ID>: /jump
[ID ] 主机名 IP 端口 系统用户 备注
[0 ] jumpclient-01 10.0.0.71 22 ['dev']
posted @ 2021-03-08 20:01  上善若水~小辉  阅读(1301)  评论(0编辑  收藏  举报