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 /pos.d/
wget mirrors.aliyun/docker-ce/linux/po
yum install docker-ce -y
systemctl restart docker
systemctl enable docker
curl -sSL github/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/jumpserver/nginx:alpine2 jumpserver/nginx:alpine2
docker tag docker.mirrors.ustc.edu/jumpserver/core:v2.6.1 jumpserver/core:v2.6.1
git设置用户名和邮箱docker tag docker.mirrors.ustc.edu/jumpserver/koko:v2.6.1 jumpserver/koko:v2.6.1
docker tag docker.mirrors.ustc.edu/jumpserver/luna:v2.6.1 jumpserver/luna:v2.6.1
docker tag docker.mirrors.ustc.edu/jumpserver/lina:v2.6.1 jumpserver/lina:v2.6.1
docker tag docker.mirrors.ustc.edu/jumpserver/guacamole:v2.6.1 jumpserver/guacamole:v2.6.1
docker tag docker.mirrors.ustc.edu/jumpserver/elasticsearch:7.9.3 jumpserver/elasticsearch:7.9.3
docker tag docker.mirrors.ustc.edu/jumpserver/nginx:alpine2 jumpserver/nginx:alpine2
docker tag docker.mirrors.ustc.edu/jumpserver/mysql:5 jumpserver/mysql:5
docker tag docker.mirrors.ustc.edu/jumpserver/redis:6-alpine jumpserver/redis:6-alpine
docker tag docker.mirrors.ustc.edu/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 ding/jumpserver/jumpserver.git
3.python软件依赖安装
cd /opt/jumpserver/install/
pip install -
4.优化pip源信息
mkdir ~/.pip/
vim ~/.f
[global]
index-url = mirrors.aliyun/pypi/simple/
[install]
trusted-host=mirrors.aliyun
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配置界⾯
确认是否能登录成功
7.跳板机服务配置过程
1)企业配置需求说明:
需求01:所有主机想要被管理必须经过跳板机管理 所有主机只监听内⽹地址
需求02:设置不同⽤户权限信息
oldboy ⽼男孩 运维⼈员 权限⼤些 oldboy@xxx
oldgirl ⽼⼥孩 开发⼈员 查看数据信息 oldgirl@xxx
olddog ⽼狗 数据库⼈员 数据库操作
2) ⽤户管理配置
功能作⽤:设置可以连接跳板机⽤户信息
添加⽤户信息 --- ⽤户信息 --- 发送邮件
收到⼀封创建好⽤户邮件信息:
说明: 请登陆后再下载密钥!
资产管理配置
功能作⽤:定义跳板机可以访问管理主机信息
添加好资产信息 --- 连接主机地址信息/⽤户信息(必须是⼀个管理员⽤户信息)
授权管理配置
常见问题:授权⽤户推送失败:
1)远程服务配置是否正确
⽹络因素 ⽤户信息
2)数据库信息出现异常
进⼊到数据库中删除jumpserver数据库 重新创建新的数据库
重新初始化部署jumpserver
配置验证过程
jumpserver软件web界⾯操作
利⽤浏览器登录到jumpserver登录界⾯
为创建好的普通员⼯发送邮件通知信息
提⽰⽤户添加成功,并且可以收到通知邮件信息
说明信息:
web界⾯创建⽤户信息,实质上在程序内部做了两件事
①. 在jumpserver服务程序的数据库中相应表中,添加了新的⽤户信息
②. 在jumpserver的服务系统中,利⽤useradd命令创建出来相应的普通⽤户,并且会⽣成⽤户对应的公钥和私钥,利⽤密钥登录跳板机普通⽤户还有⼀个重要作⽤,可以⽤来登录jumpserver的web管理界⾯
②. 添加资产
资产管理 - 查看资产 - 添加资产 填写基本信息,完成资产添加
添加资产实质的作⽤是添加通过跳板机可以管理的主机信息
选择单台添加,设置好主机名或IP地址,可以选择管理账号,勾选默认配置
使⽤默认表⽰选择默认的⽤户配置---选择【设置】---编辑【默认设置】,表⽰定义管理账户的默认设置
如果没有设置,默认是⽆法进⾏勾选的
定义管理权限⽤户,必须在被管理资产主机上真实存在的,并且是具有创建⽤户 删除⽤户的等权限的管理⽤户,⽐如root
管理⽤户设置完成,点击提交
输出以下提⽰信息,表⽰主机资产添加成功
添加默认管理⽤户设置
有可能公司所有主机的管理⽤户和账号密码是⼀致的,就可以设置默认管理⽤户
# 在资产主机中创建默认管理⽤户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
如果采⽤的是密钥登录,也可以在下⾯的界⾯输⼊私钥信息,设置完毕点击确认保存
默认管理⽤户设置完成
添加资产主机是以主机名作为主键识别唯⼀性的,可以更改主机名称,再添加⼀台相同的资产主机
此种逻辑设置,主要考虑到通过远程登录时,公⽹IP⼀样,端⼝映射不⼀样,所以主机名唯⼀,ip地址可以进⾏重复使⽤
⾄此,⽤户添加完毕,主机资产添加完毕,下⾯就要对管理权限进⾏授权了
③.授权管理
添加sudo
授权管理 - Sudo - 添加别名 输⼊别名名称和命令,完成sudo添加
默认跳板机创建的⽤户都是普通⽤户,所以需要依赖sudo命令别名功能,使之普通⽤户具有相应权限,操作管理⽤户的命令
出现如下提⽰信息,表⽰sudo别名命令就创建完毕了
添加系统⽤户
授权管理 - 系统⽤户 - 添加 输⼊基本信息,完成系统⽤户添加
# 知识点总结回顾
普通⽤户:实际上类似于公司的员⼯,不同的员⼯可以利⽤创建的普通⽤户,登录跳板机界⾯进⾏管理jumpserver跳板机
管理⽤户:是必须在系统中存在的⽤户,后续执⾏⼀些特殊权限命令,都需要借助管理⽤户,⽐如创建新的的⽤户信息等
默认⽤户:就是默认管理⽤户,有时公司的全部主机会有⼀个共有的管理⽤户,⽐如root⽤户,就可以进⾏管理⽤户的默认配置
系统⽤户:表⽰⽤于管理系统的⽤户,⽐如⽹络系统⽤户为netadmin 开发为devadmin 运维为sa等,根据职能需求进⾏创建
系统⽤户是被管理⽤户所创建出来的
系统⽤户进⾏关联相应sudo权限,并且可以初始化不设置密码信息,后续会⾃动⽣成
推送系统⽤户
授权管理 - 推送 - 选择需要推送的资产或资产组完成推送
推送只⽀持服务器,使⽤密钥是指⽤户从跳板机跳转时使⽤key,反之使⽤密码,
授权时会检查推送记录,如果没有推送过则⽆法完成系统⽤户在该资产上的授权。
如果资产时⽹络设备,请不要选择密码和秘钥,模拟⼀下推送,⽬的是为了⽣成
推送记录。
系统⽤户配置完毕后,需要利⽤【推送】功能,将需要创建的⽤户信息,通过ansible批量告知被管理客户端,进⾏相应⽤户的创建
# 查看⽤户信息
[root@jumpserver-02 ~]# id dev
id: dev:⽆此⽤户
说明:在推送系统之前,被管理主机客户端是没有定义的dev⽤户信息的;只有推送之后才有的
进⾏
如下图所⽰,系统⽤户推送成功
[root@jumpserver-02 ~]# id dev
uid=502(dev) gid=502(dev) 组=502(dev)
说明:检验完毕,系统⽤户推送成功
记忆回顾:模拟推送失败过程
①. 开启主机selinux,并且确认客户端主机未安装libselinux-python软件
②. 回收dev系统⽤户
③. 重新进⾏推送
思考:理解推送过程逻辑原理,⼤致理解libselinux-python软件包作⽤
添加授权规则
授权管理 - 授权规则 - 添加规则 选择刚才添加的⽤户,资产,系统⽤户完成授权
如果资产中存在没有系统⽤户推送记录的资产信息,就会输出以下错误信息
重新进⾏配置调整后,进⾏重新授权
上述报错,是由于存在⼀些资产信息,没有系统⽤户推送记录导致,为避免这种问题再次出现,可以将所⽤资产的系统⽤户都推送⼀下
对未推送过系统⽤户资产,进⾏系统⽤户推送
重新修改授权信息
授权⽤户进⾏调整,授权资产信息也重新进⾏调整
利⽤资产中的连接,进⾏连接测试,会报错误信息如下图所⽰
提⽰以上错误,是因为没有对admin超级管理进⾏资产信息的授权,下⾯对admin⽤户也进⾏资产授权
取消掉⼀个普通⽤户,添加⼀个管理员⽤户,然后重新进⾏授权
授权变更完成
④. 测试登录
⽤户下载key 登录跳板机,会⾃动运⾏connect.py,根据提⽰登录服务器
⽤户登陆web 查看授权的主机,点击后⾯的链接,测试是否可以登录服务器
利⽤jumpserver即可实现连接相应的主机,进⾏操作管理,并且使⽤的系统⽤户就是之前创建的dev⽤户
查看dev系统⽤户的sudo定义的权限信息是否正确
说明信息:
以上连接主机过程,需要依赖之前启动的run_websocket.py 程序服务,否则会出现连接异常问题
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论