一、Jumserver 官网地址
Jumserver官网地址
二、Jumserver的基本概率
1、4a概率
-
首先,堡参机提供了运维安全审计的4A规范
Authentication: 身份鉴别,防止身份冒用和复用(开发10人,测试5人,运维2人)
Authorizatton:授权控制,防止内部误操作和权限滥用
Autnuntioa:账号管理,人员和资产的管T里
Auditng:安全审计,追测和分析事故的依据 -
其次,堡垒机的建设最标可以概括为5W,主要是为了降低运维风险
审计:你做了什么? (what)
授权:你能做哪些? (which)
账号:你要去哪? (whate)
认证:你是谁? (who)
来源: 访问时闻?(when) -
总结:
堡垒机能让运维更安全、更加便捷的登陆目标资产服务
堡垒仇能快速构建“身份鉴别、访问控制、安全审计“等企业必备功能
几乎所有企业都需要堡垒机,因为堡垒机是企业进行"资严官理、运维安全审计”的重要组件
JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。
JumpServer 使用 Python 开发,配备了业界领先的 Web Terminal 方案,交互界面美观、用户体验好。
JumpServer 采纳分布式架构,支持多机房跨区域部署,支持横向扩展,无资产数量及并发限制。
3、Jumserver架构图
3、JumpServer 堡垒机支持的资产类型包括:
SSH (Linux / Unix / 网络设备 等)
Windows (Web 方式连接 / 原生 RDP 连接)
数据库 (MySQL / MariaDB / Oracle / SQLServer / PostgreSQL / ClickHouse 等)
NoSQL (Redis / MongoDB 等)
GPT (ChatGPT 等)
云服务 (Kubernetes / VMware vSphere 等)
Web 站点 (各类系统的 Web 管理后台)
应用 (通过 Remote App 连接各类应用)
4、Jumserver的组件说明
Core 组件是 JumpServer 的核心组件,其他组件依赖此组件启动。
Koko 是服务于类 Unix 资产平台的组件,通过 SSH、Telnet 协议提供字符型连接。
Lion 是服务于 Windows 资产平台的组件,用于 Web 端访问 Windows 资产。
XRDP 是服务于 RDP 协议组件,该组件主要功能是通过 JumpServer Client 方式访问 windows 2000、XP 等系统的资产。
Razor 是服务于 RDP 协议组件,JumpServer Client 默认使用 Razor 组件访问 Windows 资产。
Magnus 是服务于数据库的组件,用于通过客户端代理访问数据库资产。
Kael 是服务于 GPT 资产平台的组件,用于纳管 ChatGPT 资产。
Chen 是服务于数据库的组件,用于通过 Web GUI 方式访问数据库资产。
Celery 是处理异步任务的组件,用于执行 JumpServer 相关的自动化任务。
Video 是专门处理 Razor 组件和 Lion 组件产生录像的格式转换工作,将产生的会话录像转化为 MP4 格式。
三、数据库安装
1、安装数据库
1.准备mariadb yum源地址 mariadb官网地址
# 国外官方源(下载非常慢)
[root@jumpserver ~]# cat > /etc/yum.repos.d/mariadb.repo << EOF
[mariadb]
name = MariaDB
baseurl = http:Վˌyum.mariadb.org/10.6/centos7-
amd64
gpgkey=https:Վˌyum.mariadb.org/RPM-GPG-KEYMariaDB
gpgcheck=1
EOF
# 国内加速器
[root@jumpserver ~]# cat > /etc/yum.repos.d/mariadb.repo << EOF
[mariadb]
name=MariaDB
#baseurl=https://mirrors.ustc.edu.cn/mariadb/yum/10.2/centos7-amd64
baseurl=https://mirrors.ustc.edu.cn/mariadb/yum/10.4/centos7-amd64/
#gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF
yum install MariaDB-server MariaDB-client MariaDB-devel MariaDB-shared -y
mysql --version
systemctl enable mariadb
systemctl start mariadb
- 创建Jumserver数据库
create database jumpserver default charset 'utf8';
grant all privileges on jumpserver.* to jumpserver@'localhost' identified by 'tangking@123';
flush privileges;
2、安装redis数据库
安装redis:
yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum --enablerepo=remi install redis -y
redis-server --version
启动服务:
systemctl enable redis
systemctl start redis
redis-server --version
3、Python3环境安装
- 1 安装依赖环境:
yum install gcc gcc-c++ make epel-release openldap-devel MariaDB-devel MariaDB-shared libffi-devel sshpass -y
yum install python36 python36-devel -y
- 2 安装Python3的虚拟环境
python3 -m venv /opt/py3
source /opt/py3/bin/activate
- 3、安装Python模块
每次运行项目都需要先执行 source /opt/py3/bin/activate 载入此环境。
(py3) pip install -U pip setuptools wheel
(py3) pip install -r requirements/requirements.txt
(py3) pip install -r requirements/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
四、Jumserver组件安装
Jumserver -core组件安装
1、下载安装包
参加官方文档
cd /opt
mkdir /opt/jumpserver-v2.28.8
wget -O /opt/jumpserver-v2.28.8.tar.gz https://github.com/jumpserver/jumpserver/archive/refs/tags/v2.28.8.tar.gz
tar -xf jumpserver-v2.28.8.tar.gz -C /opt/jumpserver-v2.28.8 --strip-components 1
cd jumpserver-v2.28.8
rm -f apps/common/utils/ip/geoip/GeoLite2-City.mmdb apps/common/utils/ip/ipip/ipipfree.ipdb
wget https://download.jumpserver.org/files/ip/GeoLite2-City.mmdb -O apps/common/utils/ip/geoip/GeoLite2-City.mmdb
wget https://download.jumpserver.org/files/ip/ipipfree.ipdb -O apps/common/utils/ip/ipip/ipipfree.ipdb
ls -l requirements/
requirements/ # 对应操作系统需要的依赖包
├── apk_pkg.sh # Alpine
├── deb_pkg.sh # 基于 Debian 的发行版(如: Ubuntu)
├── issues.txt # macOS 一些问题及解决方案
├── mac_pkg.sh # macOS
├── requirements.txt # python
└── rpm_pkg.sh # 基于 RedHat 的发行版(如: CentOS)
2、安装依赖
yum -y install $(cat requirements/rpm_requirements.txt)
3、生成配置文件
cd /opt/jumpserver-2.13.2
cp config_example.yml config.yml
4、生成 SECRET_KEY和BOOTSTRAP_TOKEN
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 24`;
echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN">> ~/.bashrc;
echo $BOOTSTRAP_TOKEN;
else
echo $BOOTSTRAP_TOKEN;
fi
cat ~/.bashrc
5、修改配置文件
cat config.yml | grep "^[a-Z]"
SECRET_KEY: Y5ymBNsHLim7z7vGAJ5JwsryG8Qw6wI7IxWBMji3krDqvTV6xe
BOOTSTRAP_TOKEN: pxMpFMj3Gx9G60fWa0xbopHA
DEBUG: true
SESSION_EXPIRE_AT_BROWSER_CLOSE: true
DB_ENGINE: mysql
DB_HOST: 127.0.0.1
DB_PORT: 3306
DB_USER: jumpserver
DB_PASSWORD: tangking@123
DB_NAME: jumpserver
HTTP_BIND_HOST: 0.0.0.0
HTTP_LISTEN_PORT: 8080
WS_LISTEN_PORT: 8070
REDIS_HOST: 127.0.0.1
REDIS_PORT: 6379
6、启动服务
source /opt/py3/bin/activate
cd /opt/jumpserver-2.13.2
./jms start
./jms start -d #放后台运行
Jumserver-lina组件安装
1、环境要求
官网参考文档
2、下载源码
cd /opt
mkdir /opt/lina-v2.28.8
wget -O /opt/lina-v2.28.8.tar.gz https://github.com/jumpserver/lina/archive/refs/tags/v2.28.8.tar.gz
tar -xf lina-v2.28.8.tar.gz -C /opt/lina-v2.28.8 --strip-components 1
3、安装node
cd /opt
wget https://nodejs.org/download/release/v14.16.1/node-v14.16.1-linux-x64.tar.xz
tar -xf node-v14.16.1-linux-x64.tar.xz
mv node-v14.16.1-linux-x64 /usr/local/node
chown -R root:root /usr/local/node
export PATH=/usr/local/node/bin:$PATH
echo 'export PATH=/usr/local/node/bin:$PATH' >> ~/.bashrc
node -v
- 使用yum安装
安装yum源
curl --silent --location https://rpm.nodesource.com/setup_10.x | sudo bash
curl -sL https://rpm.nodesource.com/setup_12.x | bash -
yum makecache
yum install nodejs -y
4、设置加速器
npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass
npm config set registry https://registry.npm.taobao.org
5、安装依赖
npm install -g yarn
yarn config set registry https://registry.npm.taobao.org
yarn install
6、修复配置文件
cd /opt/lina-2.13.2
vim .env.development
grep "^[a-Z]" .env.development
ENV = 'development'
VUE_APP_BASE_API = ''
VUE_APP_PUBLIC_PATH = '/ui/'
VUE_CLI_BABEL_TRANSPILE_MODULES = true
VUE_APP_LOGIN_PATH = '/core/auth/login/'
VUE_APP_LOGOUT_PATH = '/core/auth/logout/'
VUE_APP_CORE_HOST = 'http://localhost:8080'
VUE_APP_CORE_WS = 'ws://localhost:8070'
VUE_APP_ENV = 'development'
7、运行lina
yarn serve
登陆本机IP+端口,即可访问
8、构建lina
# yarn build
yarn build:prod
cp -rf lina lina-v2.28.8
tar -czf lina-v2.28.8.tar.gz lina-v2.28.8
# yarn build
# 拷贝静态资源至该目录,后续可以使用nginx调用
# cp -rp /opt/lina-2.13.2/lina/ /opt/
可以将其构建成静态页面,并通过Nginx代理的方式进行访问
9、 报错处理
是因为 安装没有安装好,尝试 yarn install 再次安装
Jumserver-Luna组件安装
参考官网文档
1、环境要求
2、下载源码
cd /opt
mkdir /opt/luna-v2.28.8
wget -O /opt/luna-v2.28.8.tar.gz https://github.com/jumpserver/luna/archive/refs/tags/v2.28.8.tar.gz
tar -xf luna-v2.28.8.tar.gz -C /opt/luna-v2.28.8 --strip-components 1
3、安装 Node
参考 Lina的Node安装 ,如果两个组件安装在同一个机器,就不需要进行安装,如果部署在不同的机器上,需要重新安装
4、安装依赖
cd /opt/luna-2.13.2/
## 这次采用华为的镜像站点
npm config set registry https://mirrors.huaweicloud.com/repository/npm/
npm install
npm rebuild node-sass
npm run-script build
- 温馨提示:
Would you like to share anonymous usage data with the Angular Team at Google under
Google’s Privacy Policy at https://policies.google.com/privacy? For more details and
how to change this setting, see http://angular.io/analytics.
Would you like to share anonymous usage data with the Angular Team at Google under
Google’s Privacy Policy at https://policies.google.com/privacy? For more details and
how to change this setting, see http://angular.io/analytics.
你想与谷歌的Angular团队分享匿名使用数据吗
谷歌的隐私政策https://policies.google.com/privacy?有关更多详细信息和
如何更改此设置,请参阅http://angular.io/analytics.
- 安装完成
5、运行luna
cd /opt/luna-2.13.2
./node_modules/.bin/ng serve
py3) [root@localhost luna-2.13.2]# find ./ -type f -name "ng"
./node_modules/@angular/cli/bin/ng
6、构建luna
cd /opt/luna-2.13.2
npm run-script build
将静态文件拷贝到 /opt 目录下,方便后续的Nginx的调用
cp -rp luna/ /opt/
Jumserver-koko组件安装
1、环境要求
2、下载源码
cd /opt
mkdir /opt/koko-v2.28.8
wget -O /opt/koko-v2.28.8.tar.gz https://github.com/jumpserver/koko/archive/refs/tags/v2.28.8.tar.gz
tar -xf koko-v2.28.8.tar.gz -C /opt/koko-v2.28.8 --strip-components 1
3、安装Node
参考 Lina的Node安装 ,如果两个组件安装在同一个机器,就不需要进行安装,如果部署在不同的机器上,需要重新安装
4、安装Go语言环境
cd /opt
wget https://golang.google.cn/dl/go1.18.7.linux-amd64.tar.gz
tar -xf go1.18.7.linux-amd64.tar.gz -C /usr/local/
chown -R root:root /usr/local/go
export PATH=/usr/local/go/bin:$PATH
echo 'export PATH=/usr/local/go/bin:$PATH' >> ~/.bashrc
或者
yum -y install go
5、配置go语言环境的加速器
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/
go env
6、编译koko
make
7、编译报错处理
因为超时原因,导致无法解压,因再次编译make
8、构建后,解压对应平台的压缩包
cd /opt/koko-2.13.2/build
tar -xf koko---linux-amd64.tar.gz
cd koko---linux-amd64/
9、修改配置文件
cd /opt/koko-2.13.2/build/koko---linux-amd64
cp config_example.yml config.yml
vim config.yml
grep "^[a-Z]" config.yml
CORE_HOST: http://127.0.0.1:8080
BOOTSTRAP_TOKEN: pxMpFMj3Gx9G60fWa0xbopHA
BIND_HOST: 0.0.0.0
SSHD_PORT: 2222
HTTPD_PORT: 5000
LANGUAGE_CODE: zh
如果安装多台koko 一定要解决koko的会话问题,默认保持在本地
10、koko的启动
cd /opt/koko-2.13.2/build/koko---linux-amd64
./koko
放后台运行
cd /opt/koko-2.13.2/build/koko---linux-amd64
./koko -d
Jumserver-Lion组件安装
参考官方文档
Lion 使用了 Apache 软件基金会的开源项目 GuacamoleJumpServer 使用 Golang 和 Vue 重了 Guacamole 实现RDP/VNC 协议跳板机功能
1、环境要求
2、下载Guacd源码
mkdir /opt/guacamole-v2.28.8
cd /opt/guacamole-v2.28.8
wget http://download.jumpserver.org/public/guacamole-server-1.4.0.tar.gz
tar -xzf guacamole-server-1.4.0.tar.gz
cd guacamole-server-1.4.0/
3、构建Guacd
安装依赖:
yum install libpng-devel libjpeg-devel cairo-devel uuid-devel -y
yum install -y libtelnet-devel libvncserver-devel pulseaudio-libs-devel openssl-devel freerdp-devel pango-devel libssh2-devel libtelnet-devel
编译安装:
cd /opt/guacamole-server-1.3.0
./configure --with-init-dir=/etc/init.d
make && make install
加载配置
ldconfig
编译后的结果:
4、启动 Guacd
/etc/init.d/guacd start
启动后成功截图
5、下载Lina源码
cd /opt
wget https://github.com/jumpserver/lion-release/releases/download/v2.28.8/lion-v2.28.8-linux-amd64.tar.gz
tar -xf lion-v2.28.8-linux-amd64.tar.gz
cd lion-v2.28.8-linux-amd64
6、修改配置
cd /opt/lion-v2.13.2-linux-amd64
cp config_example.yml config.yml
vim config.yml
grep "^[a-Z]" config.yml
CORE_HOST: http://127.0.0.1:8080
BOOTSTRAP_TOKEN: pxMpFMj3Gx9G60fWa0xbopHA
BIND_HOST: 0.0.0.0
HTTPD_PORT: 8081
GUA_HOST: 127.0.0.1
GUA_PORT: 4822
如果安装多台Lion 一定要解决Lion的会话问题,默认保持在本地
7、启动Lion
cd /opt/lion-v2.13.2-linux-amd64
./lion &
启动后截图
五、安装Nginx对资源进行整合
1、安装Nginx
yum -y install nginx (对Nginx版本没有要求,只是对资源进行整合,用于location的跳转资源使用)
systemctl enable nginx
systemctl start nginx
2、整合Jumserver资源到Nginx配置中
server {
listen 80;
server_name jumserver.tangking.net;
##文件大小限制
client_max_body_size 5000m;
# Luna 配置
location /luna/ {
# 注意将模板中的组件名称替换为服务实际 ip 地址, 如都在本机部署
# proxy_pass http://127.0.0.1:4200;
# proxy_pass http://luna:4200;
try_files $uri / /index.html;
alias /opt/luna/;
}
# Core data 静态资源
location /media/replay/ {
add_header Content-Encoding gzip;
root /opt/jumpserver-2.13.2/data/;
}
location /media/ {
root /opt/jumpserver-2.13.2/data/;
}
location /static/ {
root /opt/jumpserver-2.13.2/data/;
}
# KoKo Lion 配置
location /koko/ {
# 注意将模板中的组件名称替换为服务实际 ip 地址, 如都在本机部署
# proxy_pass http://127.0.0.1:5000;
proxy_pass http://localhost: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/ {
# 注意将模板中的组件名称替换为服务实际 ip 地址, 如都在本机部署
# proxy_pass http://127.0.0.1:8081;
proxy_pass http://localhost: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/ {
# 注意将模板中的组件名称替换为服务实际 ip 地址, 如都在本机部署
# proxy_pass http://127.0.0.1:8070;
proxy_pass http://localhost: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/ {
# 注意将模板中的组件名称替换为服务实际 ip 地址, 如都在本机部署
# proxy_pass http://127.0.0.1:8080;
proxy_pass http://localhost: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/ {
# 注意将模板中的组件名称替换为服务实际 ip 地址, 如都在本机部署
# proxy_pass http://127.0.0.1:8080;
proxy_pass http://localhost: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/ {
# 注意将模板中的组件名称替换为服务实际 ip 地址, 如都在本机部署
# proxy_pass http://127.0.0.1:9528;
# proxy_pass http://localhost: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;
try_files $uri / /ui/index.html;
alias /opt/lina/;
}
location / {
rewrite ^/(.*)$ /ui/$1 last;
}
}