堡垒机介绍
为什么要用堡垒机:
- 数据安全与防止泄露成为政府和企业都非常关心的议题,因此堡垒机也应运而生,主要是为了保证服务器的安全,误操作的追查,等等。
- 场景:在某旅游出行平台官网及APP上登录、下单或交易时,跳转均出现问题,导致操作无法顺利完成。造成直接经济损失巨大,按照其上一季度的财报公布的数据,宕机的损失为平均每小时106.48万美元。最终,平台回应此事称系由于员工误操作删除了服务器上的执行代码导致。不论是因为黑客攻击还是员工误操作,真金白银800万美元的经验教训告诫我们对于数据的安全和备份必须要引起重视!堡垒机能解决这2个问题,一是攻击面小,二是可定制双机备份
- 总体来说,堡垒机可以保证运维人员或者开发人员更为规范的进行操作服务器,真的出现问题,可以通过回溯等方式恢复误操作的内容。
堡垒机起源:
- 理念来源于跳板机,认识到跳板机的不足,需要更新、更好的安全技术理念来实现运维操作管理,需要一种能满足角色管理与授权审批、信息资源访问控制、操作记录和审计、系统变更和维护控制要求,并生成一些统计报表配合管理规范来不断提升IT内控的合规性的产品。
- 2005年前后,运维堡垒机开始以一个独立的产品形态被广泛部署,有效地降低了运维操作风险,使得运维操作管理变得更简单、更安全。2005年齐治科技研发出世界第一台运维堡垒机
堡垒机作用:
- 核心系统运维和安全审计管控。
- 过滤和拦截非法访问、恶意攻击,阻断不合法命令,审计监控、报警、责任追踪。
- 报警、记录、分析、处理。
- 核心功能:
- 单点登录功能
- 账户管理功能
- 身份验证
- 资源授权
- 访问控制
- 操作审计
- 4A服务:
- 身份验证(authentication):登录审核,用户登录会受到管理员的监督,对登录的ip进行限制访问。
- 授权控制(authorization):更为细粒度的进行权限限制,限制权限命令,文件权限,ssh权限,数据库权限,基于sudo限制,显示那些文件权限,以及数据库链接权限限制。
- 账户管理(Accounting):用户管理,普通用户,超级管理员用户,统一密码管理,过期时间,密码修改策略等,不仅仅是/etc/passwd 还可以接入第三方数据库,如ldap统一认证服务。
- 安全审计(Auditing):登录审计,用户登录行为的日志记录,记录用户的操作,限制ssh用户登录的链接会话,录像用户操作,实时的监控户监控用户的行为,可以实时中断。比如记录用户A在服务器的一举一动,每个敲击命令,同时还有录屏功能等等。
应用场景:
- 多个用户使用同一账号: 多出现在同一工作组中,由于工作需要,同时系统管理员账号唯一,因此只能多用户共享同一账号;如果发生安全事故,不仅难以定位账号的实际使用者和责任人,而且无法对账号的使用范围进行有效控制,存在较大的安全风险和隐患。
- 一个用户有多个账户: 目前一个维护人员使用多个账号时较为普遍的情况,用户需要记忆多套口令同时在多套主机系统、网络设备之间切换,降低工作效率,增加工作复杂度。
- 缺少统一的权限管理平台,难以实现更细粒度的命令权限控制: 维护人员的权限大多是粗放管理,无基于最小权限分配原则的用户权限管理,难以实现更细粒度的命令权限控制,系统安全性无法充分保证。
- 无法制定统一的访问审计策略,审计粒度粗:各个网络设备、主机系统、数据库是分别单独审计记录访问行为,由于没有统一审计策略,而且各系统自身审计日志内容深浅不一,难以及时通过系统自身审计发现违规操作行为和追查取证;
- 传统的网路安全审计系统无法对维护人员经常使用的SSH、RDP等加密、图形操作协议进行内容审计
跳板机:
- 跳板机就是一台服务器,运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作,跳板机是开发者登录到服务器的唯一途径,开发者必须先登录跳板机,再通过跳板机登录到应用服务器。
- 跳板机属于内控堡垒机范畴,是一种用于单点登陆的主机应用系统。跳板机就是一台服务器,维护人员在维护过程中,首先要统一登录到这台服务器上,然后从这台服务器再登录到目标设备进行维护。但跳板机并没有实现对运维人员操作行为的控制和审计,此外,跳板机存在严重的安全风险,一旦跳板机系统被攻入,则将后端资源风险完全暴露无遗。
- 缺点与优点:
- 优势:集中式进行管理
- 缺点:没有实现对运维人员操作行为的控制和审计,使用跳板机的过程中还是会出现误操作,违规操作等导致的事故,一旦出现操作事故很难定位到原因和责任人。
- 功能:
- 跳板机不让操作人员直接登录服务器操作,而是通过跳板机作为媒介,在跳板机中进行对服务器的操作,在服务器中做了iptables的限制,类似于只有跳板机的ip才能允许,其他的ip不可以。
堡垒机总结:
- 堡垒机就是跳板机的超级升级版本,不仅仅有跳板机的全部作用,同时具备了,对用户的管理,资产管理,权限控制,同时也具备审计功能,通过实时监控、录像回放等方式,也有效地解决了操作过程不透明的问题
JunpServer堡垒机
文档:https://docs.jumpserver.org/zh/master/
运行方式:
主要组件:v2版本,现如今已经到达v4版本。
lina组件: 前端的代码,提供美化的前端网页,也就是网页展示,前端进程 是 JumpServer 的前端 UI 项目, 主要使用 Vue, Element UI 完成, 名字来源于 Dota 英雄 Lina luna组件: 实现网页办的命令行程序 是 JumpServer Web Terminal 前端项目(网页命令行) core: python的后端,处理用户的请求逻辑,运行的是django框架的代码,提供json数据,发给前端,前端解析json数据展示在页面上 是 JumpServer 的核心组件,由 Django 二次开发而来。 coco/koko: 基于golang开发的程序,实现client ssh > koko服务,也就是命令行登录的junmpserver入口 是 Go 版本的 coco,重构了 coco 的 SSH/SFTP 服务和 Web Terminal 服务。 guacamole: 实现vnc远程桌面的服务器,与阿里云vnc远程连接与腾讯云的vnc远程连接类似,防止服务器ssh服务器挂了,无法登录服务器 使用了 Apache 软件基金会的开源项目 Guacamole,JumpServer 使用 Golang 和 Vue 重构了 Guacamole 实现 RDP/VNC 协议跳板机功能。 每个组件就是一个进程,只有运行成功后还需要进行整合起来,整合成为一个可以访问的同意入口,这个里就使用到了nginx
架构图:
说明:
安装的说明文档:https://docs.jumpserver.org/zh/v2/dev/build/#_17 注意: 这种开源工具,没必要追求太新的,功能太多,用不上,且部署繁琐 选择的版本:v2 相关变量说明:https://docs.jumpserver.org/zh/v3/guide/env/
1.安装Mysql
# 要求数据库版本为mysql大于等于5.7
1.装mysql的yum的仓库源
yum -y localinstall http://mirrors.ustc.edu.cn/mysql-repo/mysql57-community-release-el7.rpm
2.关闭秘钥检查
sed -i '/gpgcheck=/ s#1#0#' /etc/yum.repos.d/mysql-community*
3.重置yum的缓存
yum clean all && yum makecache
4.安装mysql
yum install -y mysql-community-server
6.启动mysql,查看默认密码
密码的说明文档:https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html
systemctl start mysqld
sudo grep 'temporary password' /var/log/mysqld.log # 默认密码
登录后执行:
set global validate_password_policy=LOW; # 让mysql支持弱密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678';# 进去重置密码
8.设置授权密码
mysql -uroot -p12345678 -e "create database jumpserver default charset 'utf8';" # 创建一个数据库支持中文
mysql -uroot -p12345678 -e "create user 'jumpserver'@'%' identified by 'jumpserver';" # 设置远程授权账户
mysql -uroot -p12345678 -e "grant all privileges on jumpserver.* to 'jumpserver'@'%';" # 设置当前用户可以访问的权限
mysql -uroot -p12345678 -e "flush privileges;" # 刷新权限表
9.通过新创建的账户进行验证
mysql -ujumpserver -pjumpserver -e "show databases;"
2.安装Redis
# redis大于等于5.0
1.安装编译依赖
yum -y install epel-release wget make gcc-c++
2.下载源码包
wget -P /opt https://download.redis.io/releases/redis-6.2.4.tar.gz
3.解压进入目录
tar -xzvf redis-6.2.4.tar.gz && cd redis-6.2.4
4.编译安装
# 没有就生成makefile文件
./configure
make && make install
ln -s /opt/redis-6.2.4/src/ /opt/redis
6.修改配置文件
cp /opt/redis-6.2.4/redis.conf /opt/redis
sed -i "s/bind 127.0.0.1/bind 0.0.0.0/g" /opt/redis/redis.conf # 设置往外可以访问
sed -i "s/daemonize no/daemonize yes/g" /opt/redis/redis.conf # 守护进程执行,后台执行
sed -i "561i maxmemory-policy allkeys-lru" /opt/redis/redis.conf # 内存优化
sed -i "481i requirepass jumpserver" /opt/redis/redis.conf # 修改密码
7.配置systemctl 命令启动脚本
vim /etc/systemd/system/redis.service
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=/opt/redis/redis-server /opt/redis/redis.conf # 启动
ExecReload=/bin/kill -s HUP $MAINPID # 重启
ExecStop=/bin/kill -s QUIT $MAINPID # 停止的
[Install]
WantedBy=multi-user.target
8.重载并启动reids,添加环境变量
systemctl daemon-reload
systemctl start redis
vim /etc/profile
PATH=$PATH:$HOME/bin:/opt/redis/
source /etc/profile # 重载
3.配置基础环境
1.关闭防火墙,防止防火导致各个组件之间不同信。
systemctl stop firewalld #
iptables -F
sed -i '/^SELINUX=/ s#enforcing#disabled#' /etc/selinux/config # 关闭selinux防火墙
2.配置数据源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
3.基础软件安装
yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2unix htop iftop iotop unzip telnet sl psmisc nethogs glances bc ntpdate openldap-devel gcc gcc-c++
yum -y install git python-pip automake autoconf python-devel vim sshpass lrzsz readline-devel zlib zlib-devel openssl openssl-devel
4.配置字符集
echo 'LANG="en_US.UTF-8"' > /etc/locale.conf
4.安装Core
4-1.安装Python环境
# 当前是2.12.0 版本需要使用到 3.6的python环境
1.安装python3的编译依赖
yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y
2.下载源码文件包
wget -P /opt https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
tar xzf Python-3.6.9.tgz && cd Python-3.6.9
3.编译安装
./configure --prefix=/opt/python3.6.9
make && make install
4.添加环境变量
vim /etc/profile
PATH=$PATH:$HOME/bin:/opt/python3.6.9/bin/
source /etc/profile
4-2.安装Core
1.下载Core源码
wget -O /opt/jumpserver-v2.12.0.tar.gz https://github.com/jumpserver/jumpserver/archive/refs/tags/v2.12.0.tar.gz
2.解压,安装依赖
# 依赖在:
requirements/rpm_requirements.txt 文件中
cd /opt/ && tar xzf jumpserver-v2.12.0.tar.gz && yum install -y `cat /opt/jumpserver-2.12.0/requirements/rpm_requirements.txt `
3.配置虚拟环境,进如虚拟环境
python3 -m venv jumpser_venv
source jumpser_venv/bin/activate # 进入环境
deactivate # 退出环境
4.安装环境依赖
pip3 install -r /opt/jumpserver-2.12.0/requirements/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
5.为了方便进入虚拟环境,配置环境变量
vim /etc/profile
PATH=$PATH:$HOME/bin:/opt/jumpserver-2.12.0/jumpserver_venv/bin/
source /etc/profile
6.编写生成秘钥脚本
vim key.sh
#! /bin/bash
if [ "$SECRET_KEY" = "" ];
then SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`;
echo "SECRET_KEY=$SECRET_KEY" >> /ect/profile; 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" >> /ect/profile;
echo $BOOTSTRAP_TOKEN;
else echo $BOOTSTRAP_TOKEN;
fi
bash key.sh # 生成秘钥,写入到 /ect/profile 文件中
4-3.配置Core文件
# 配置路径:
/opt/jumpserver-2.12.0/config_example.yml
cp config_example.yml config.yml # 需要先进行拷贝一份,因为读取的文件名称时config.yml
SECRET_KEY: "$SECRET_KEY"
BOOTSTRAP_TOKEN: "$BOOTSTRAP_TOKEN"
DEBUG: true # 开发建议打开 DEBUG, 生产环境应该关闭
LOG_LEVEL: DEBUG # 开发建议设置 DEBUG, 生产环境推荐使用 ERROR
SESSION_EXPIRE_AT_BROWSER_CLOSE: true # 浏览器关闭 session 过期
DB_ENGINE: mysql #使用的数据库
DB_HOST: 127.0.0.1 # 数据库ip
DB_PORT: 3306 #数据库端口
DB_USER: jumpserver # 登录用户
DB_PASSWORD: jumpserver # 数据库密码
DB_NAME: jumpserver # 创建的数据库
HTTP_BIND_HOST: 0.0.0.0 # 运行时的ip
HTTP_LISTEN_PORT: 8080 # 运行时的端口
WS_LISTEN_PORT: 8070 # 后端 websetock 端口
REDIS_HOST: 127.0.0.1 # redisip
REDIS_PORT: 6379 # redis 端口
REDIS_PASSWORD: jumpserver # redis密码
1.数据库转移 # 需要再虚拟环境中进行
python3 /opt/jumpserver/jumpserver-2.12.0/apps/manage.py makemigrations
python3 /opt/jumpserver/jumpserver-2.12.0/apps/manage.py migrate
2.查看验证
mysql -ujumpserver -pjumpserver -e 'show tables from jumpserver;'
4-4.启动Core服务,登录
# 项目依赖在虚拟环境中,在非虚拟环境中执行,在虚拟环境中运行。
1.启动与关闭
/opt/jumpserver-2.12.0/jms start # 启动,使用-d 后台运行不占用窗口
/opt/jumpserver-2.12.0/jms stop # 关闭
/opt/jumpserver-2.12.0/jms status # 查看状态
2.访问 ip:8080 第一访问需要进行重置密码
默认账户密码:admin admin
新密码:jumpserver
5.安装Luna
是什么:Luna 是 JumpServer 的前端 UI 项目, 主要使用 Angular CLI 完成。
作用:提供网页版命令行,也是基于前端vue的前后端交互的网页版命令行。
5-1.下载Luna源码
1.下载源码
wget -O /opt/luna-v2.12.0.tar.gz https://github.com/jumpserver/luna/archive/refs/tags/v2.12.0.tar.gz
3.解压到指定目录下
-C 指定解压的目录
--strip-components 1 直解压引导部分,第一层不要
tar -xf /opt/luna-v2.12.0.tar.gz -C /opt/
5-2.安装Node环境
# 需要nodejs 10.以上的版本,最好是版本高一些
1.下nodejs(2进制包,下载解压就可以用)
wget https://nodejs.org/dist/v14.16.1/node-v14.16.1-linux-x64.tar.gz
2.解压到指定目录中
tar -xf /opt/node-v14.16.1-linux-x64.tar.gz -C /opt/
4.因为是2进制包,解压即用,直接设置环境变量
vim /etc/profile
PATH=$PATH:$HOME/bin:/opt/node-v14.16.1-linux-x64/bin/
source /etc/profile # 重置生效环境变量文件
5.查看当前的版本 nodejs 与 npm(与python pip作用一样负责安装依赖包) <图-1>
node -v && npm -v
5-3.安装Luna依赖
1.配置npm加速源
npm config set registry https://mirrors.cloud.tencent.com/npm/ # 配置加速源
npm config get registry # 查看加速源
2.安装yarn工具
npm install -g yarn # 安装yarn工具
3.安装luna的依赖
cd /opt/luna-2.12.0 && yarn install
5-4.修改Luna配置文件运行
# 不同的版本,luna配置文件可以能不同,请按照官方文档进行操作
1.打开配置文件
vim /opt/luna-2.12.0/proxy.conf.json
2.按照要求进行修改
{
"/koko": {
"target": "http://localhost:5000", # KoKo 地址
"secure": false,
"ws": true
},
"/media/": {
"target": "http://localhost:8080", # Core 地址
"secure": false,
"changeOrigin": true
},
"/api/": {
"target": "http://localhost:8080", # Core 地址
"secure": false, # https ssl 需要开启
"changeOrigin": true
},
"/core": {
"target": "http://localhost:8080", # Core 地址
"secure": false,
"changeOrigin": true
},
"/static": {
"target": "http://localhost:8080", # Core 地址
"secure": false,
"changeOrigin": true
},
"/lion": {
"target": "http://localhost:9529", # Lion 地址
"secure": false,
"pathRewrite": {
"^/lion/monitor": "/monitor"
},
"ws": true,
"changeOrigin": true
},
"/omnidb": {
"target": "http://localhost:8082",
"secure": false,
"ws": true,
"changeOrigin": true
}
}
3.运行
yarn start
4.安装ng启动
1.安装ng命令
npm install -g @angular/cli@1.3.2
原因:
npm 出于安全考虑不支持以 root 用户运行,即使你用 root 用户身份运行了,npm 会自动转成一个叫 nobody 的用户来运行,而这个用户几乎没有任何权限[只有在旧的版本中才有这种,新版本已经移除]
使用参数 --unsafe-perm
npm install -g @angular/cli@1.3.2 --unsafe-perm
2.查看安装成功
ng --version
3.运行
ng serve --proxy-config proxy.conf.json --host 0.0.0.0
6.安装Lina
Lina 是 JumpServer 的前端 UI 项目,主要使用 Vue, Element UI 完成。
6-1.下载Lina源码
1.下载源码
wget -O /opt/lina-v2.12.0.tar.gz https://github.com/jumpserver/lina/archive/refs/tags/v2.12.0.tar.gz
2.解压到指定目录下
tar -xf /opt/lina-v2.12.0.tar.gz -C /opt/
# 因为是一个前端项目,需要使用node,版本需要10.以上,直接使用Luna的node环境即可。
6-2.安装环境修改配置启动
1.安装环境
cd /opt/lina-2.12.0/ && yarn install
# 如果安装是出现,证书过期使用:
yarn config set strict-ssl false
# 如果是使用npm使用:
npm config set strict-ssl false
2.配置
vim /opt/lina-2.12.0/.env.development
VUE_APP_CORE_HOST = 'http://localhost:8080' # 修改后端Core地址
3.启动访问
yarn serve
7.安装Koko
Koko 是 Go 版本的 coco,重构了 coco 的 SSH/SFTP 服务和 Web Terminal 服务。
Koko组件用于基于ssh的跳板机登录,统一管理。
当前2.12.0所需要的go语言版本 1.15,最新请查看官方文档进行指定部署
7-1.安装go环境
安装go版本为 1.15
1.下载go 下在二进制版本
wget -O /opt/go1.15.linux-amd64.tar.gz https://golang.google.cn/dl/go1.15.linux-amd64.tar.gz
2.解压
tar -xzf /opt/go1.15.linux-amd64.tar.gz -C /opt
3.配置环境变量
vim /etc/profile
PATH=$PATH:$HOME/bin:/opt/go/bin/
source /etc/profile
7-2.下载koko源码
1.下载安装程序 (是编译过的go二进制程序)
wget -O /opt/koko-v2.12.0-linux-amd64.tar.gz https://github.com/jumpserver/koko/releases/download/v2.12.0/koko-v2.12.0-linux-amd64.tar.gz
3.解压进入文件夹
mkdir /opt/koko-2.12.0 && tar -xf koko-v2.12.0-linux-amd64.tar.gz -C /opt/koko-2.12.0 --strip-components 1
7-2.修改配置文件,启动
1.复制配置文件
cp config_example.yml config.yml
2.修改配置文件
CORE_HOST: http://127.0.0.1:8080 # Core 的地址
BOOTSTRAP_TOKEN: "$BOOTSTRAP_TOKEN"
1.当前这个参数第一次运行时,koko会将这个值,注册到当前机器的jumpserver信息中,证明这个机器时当作跳板级,安全验证
2.第二次运行,这个参数就给删除即可,否则反复注册,会出现问题
BIND_HOST: 0.0.0.0 # 绑定在0.0.0.0 绑定当前机器的全部网卡
SSHD_PORT: 2222 # 使用 0.0.0.0:2222
可以基于ssh协议链接koko服务 用法 ssh root@10.0.0.111 -p 2222 链接,链接 22 端口就是链接 sshd服务,2222端口时koko服务。
HTTPD_PORT: 5000 # 服务启动的端口,默认5000
LOG_LEVEL: DEBUG # 开发建议设置 DEBUG, 生产环境推荐使用 ERROR
REDIS_PASSWORD: jumpserver # redis的密码
3.启动,访问
./koko -f config.yml
ssh admin@192.168.85.144 -p 2222 # 通过ssh进行访问查看,账户密码就是jumpserver的账户密码
# 如果不支持ssh-rsa秘钥类型,服务端只支持ssh-rsa类型时。
sudo ssh -p 2222 -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa admin@192.168.85.144
8.安装Lion
Lion 使用了 Apache 软件基金会的开源项目 Guacamole,JumpServer 使用 Golang 和 Vue 重构了 Guacamole 实现 RDP/VNC 协议跳板机功能。
目前,常用的远程管理协议有以下 4 种:
RDP(remote desktop protocol)协议:远程桌面协议,大部分 Windows 系统都默认支持此协议,Windows 系统中的远程桌面管理就基于该协议。
RFB(Remote FrameBuffer)协议:图形化远程管理协议,VNC 远程管理工具就基于此协议。
Telnet:命令行界面远程管理协议,几乎所有的操作系统都默认支持此协议。此协议的特点是,在进行数据传送时使用明文传输的方式,也就是不对数据进行加密。
SSH(Secure Shell)协议:命令行界面远程管理协议,几乎所有操作系统都默认支持此协议。和 Telnet 不同,该协议在数据传输时会对数据进行加密并压缩,因此使用此协议传输数据既安全速度又快。
8-1.安装guacamole让服务器支持vnc协议
jumpserver 是基于 guacamole 实现的远程链接
1.下载guacamole
wget http://download.jumpserver.org/public/guacamole-server-1.3.0.tar.gz
2.解压
tar -xzf guacamole-server-1.3.0.tar.gz ; cd guacamole-server-1.3.0
3.安装依赖源
yum -y install cairo-devel libjpeg-devel libpng-devel uuid-devel
4.安装程序
./configure --with-init-dir=/etc/init.d
make && make install
ldconfig # 让你的linux 更新底层驱动加载远程桌面,支持guacamole协议
8-2.安装Lion源码
1.下载
wget https://github.com/jumpserver/lion-release/releases/download/v2.12.0/lion-v2.12.0-linux-amd64.tar.gz
2.解压
tar -xf lion-v2.12.0-linux-amd64.tar.gz -C /opt/ && mv /opt/lion-v2.12.0-linux-amd64 /opt/lion-2.12.0
3.复制配置文件
cp config_example.yml config.yml
4.配置参数,单机部署配置这个一个参数即可
BOOTSTRAP_TOKEN: "$BOOTSTRAP_TOKEN" # 请和jumpserver 配置文件中保持一致,注册完成后可以删除,与koko服务一样
8-3.启动Lion服务
1.启动guacd
/etc/init.d/guacd start
2.启动lion服务 <图-1> 默认启动到8081端口(没有修改的情况下)
-f 指定配置文件
./lion -f config.yml
nohup ./lion -f config.yml &
3.查看端口情况
9.配置nginx服务合并
9-1.配置文件
1.配置:
server {
listen 80;
client_max_body_size 5000m; # 文件大小限制
# Luna 配置
location /luna/ {
proxy_pass http://192.168.85.144:4200/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
}
# Core data 静态资源
location /media/replay/ {
add_header Content-Encoding gzip;
root /opt/jumpserver-2.12.0/data/;
}
location /media/ {
root /opt/jumpserver-2.12.0/data/;
}
location /static/ {
root /opt/jumpserver-2.12.0/data/;
}
# KoKo Lion 配置
location /koko/ {
proxy_pass http://192.168.85.144:5000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# lion 配置
location /lion/ {
proxy_pass http://192.168.85.144:8081;
proxy_buffering off;
proxy_request_buffering off;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_ignore_client_abort on;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 6000;
}
# Core 配置
location /ws/ {
proxy_pass http://192.168.85.144:8070;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /api/ {
proxy_pass http://192.168.85.144:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /core/ {
proxy_pass http://192.168.85.144:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 前端 Lina
location /ui/ {
proxy_pass http://192.168.85.144:9528;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 首页访问,使用rewrite last 向下匹配指定location
# 比如访问 ip:port/asdasdsadsa 没有匹配到loction匹配,还是访问到ip:port/ui/
location / {
rewrite ^/(.*)$ /ui/$1 last;
}
}
2.启动
sudo systemctl start nginx
10.使用
10-1.个人用户设置
个人信息
10-2.部署后修改站点
上线后部署到nginx上,需要设置当前站点url,堡垒机的入口与nginx域名与端口
10-3.邮箱设置
需要设置堡垒机的发件人信息
填写发件人信息,堡垒机使用该信心,给其他的客户端发送邮件
当前版本出现 EMAIL_FROM 不能null 问题,需要更新到2.28.0版本
10-4.用户设置
# 注意:
创建的用户可以登录上koko服务,网页版的堡垒机也是走的koko服务,堡垒机的走的都是同一套用户系统
# 在jumpserver中的用户
1.管理用户 # 权限用户
2.普通用户 # 普通用户
# 在linux中的用户
1.特权用户
2.普通不用
jumpserver 将用户进行创建(创建jumpserver系统内的用户),然后将linux的登录用户进行绑定,这样就可以通过系统内的用户管理linux服务器。
堡垒机中的用户系统
1.堡垒自带的用户(登录到jumpserver的用户
2.资产用户(linux实际操作的用户)
# 登录目标机器要有系统上的用户
普通用户:ssh bob01@10.0.0.111 -p22
特权用户:ssh bob01@10.0.0.111 -p22 # 可以使用sudo进行提权
资产用户
(就是linux机器上具体的用户 /etc/passwd) 最终登录到目标服务器,进行基本linux用户操作
ssh ops01@10.0.0.111 -p 22 #链接 sshd服务
ssh ops01@10.0.0.111 -p 2222 # 链接的时 jumpserver 的koko服务
10-4-1.创建用户(系统用户)
用户管理 -> 用户列表 -> 创建用户
10-4-2.添加用户(资产用户)
资产管理 -> 创建(SSH) -> 填写资料
# 这个用户用来实际登录linux服务器的用户(普通用户基本操作,特权用户root或者sudo的用户)
10-5.资产设置
10-5-1.创建资产节点
资产管理 -> 资产列表
10-5-2.添加资产
资产管理 -> 资产列表 -> 选中节点 -> 点击创建 # 添加管理的服务器
10-6.授权管理
将资产授权给jumpserver的用户或者用户组
10-6-1.资产授权
权限管理 -> 资产授权 -> 创建
10-6-2.操作机器
用户名称 -> 用户页面 -> 我的资产 -> 连接机器
10-6-3.实时会话
会话管理 -> 会话管理 -> 在线会话或者历史会话
10-7.补充
用什么用户登录jumpsserver
登录后用什么用户ssh链接机器
jumpserver 的登录用户是登录用户
jumpserver资产管理中得系统用户是 linux系统用户
比如:
abc123 登录到jumpserve中想要链接linux服务器中得 web8,那么必须要有web8机器中得特权用户进行ssh链接
# 一定要注意,登录是登录到jumpserver网站中得,链接则是使用的时linux服务器的/etc/passwd内创建的用户
# 注意:
除了以上的功能,还有自行测试,命令记录,批量执行命令等等操作,可以使用最新版本,按照更为方便。