简单介绍:
1、JumpServer是一款开源堡垒机,它可以帮助企业安全地管理服务器和设备。
2、JumpServer使用Docker和Docker Compose进行部署
3、我们使用Rocky Linux 9.x系统来安装部署JumpServer堡垒机
知识储备:
Rocky Linux 9.x系统安装配置图解教程
https://www.osyunwei.com/archives/14859.html
准备篇
1、禁用SELinux
rpm -q grubby #确认grubby软件包是否已经安装
grubby --update-kernel ALL --args selinux=0 #添加selinux=0到内核命令行
shutdown -r now #重启系统
getenforce #查看结果为Disabled
2、防火墙设置
Rocky Linux 9.x默认是firewalld防火墙,因为Docker需要iptables,我们这里卸载firewall,安装iptables作为防火墙,并清空防火墙规则
2.1关闭firewall
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl mask firewalld
systemctl stop firewalld
yum -y remove firewalld
2.2安装iptables防火墙,开启相应的端口
yum -y install iptables-services #安装
systemctl enable iptables.service #设置防火墙开机启动
systemctl start iptables.service #启动防火墙使配置生效
iptables -F #清空规则
service iptables save #保存配置规则
systemctl restart iptables.service #启动防火墙使配置生效
iptables -L -v -n #查看规则
3、设置系统时间
localectl set-locale LC_TIME=C.UTF-8 #让date默认显示为 24 小时制
vi /etc/locale.conf
LC_TIME=C.UTF-8
:wq! #保存退出
source /etc/locale.conf #使配置生效
rm -rf /etc/localtime #先删除默认的时区设置
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #替换亚洲/上海作为默认时区
vi /etc/sysconfig/clock #添加时区
Zone=Asia/Shanghai
:wq! #保存退出
timedatectl set-local-rtc 0
hwclock --systohc -u #系统时钟和硬件时钟同步,当前系统时区不为 UTC,是CST时间,所有要加-u参数
date #显示系统时间
date -s "2025-03-06 15:24:00" #修改时间
watch -n 1 date #显示实时时间
vi /etc/chrony.conf
#pool 2.rocky.pool.ntp.org iburst #注释
server ntp.aliyun.com iburst #添加
:wq! #保存退出
systemctl enable chronyd #添加开机启动
systemctl restart chronyd #重启服务
chronyc sources -v #查看时间同步信息
4、系统参数优化
vi /etc/security/limits.conf #在最后一行添加以下代码
* soft nproc unlimited
* hard nproc unlimited
* soft nofile 1000000
* hard nofile 1000000
:wq! #保存退出
vi /etc/sysctl.conf #在最后一行添加以下代码
fs.file-max = 65535000
fs.nr_open = 65535000
kernel.pid_max=655350
vm.swappiness = 0
net.ipv4.ip_forward = 1
vm.max_map_count=262144
:wq! #保存退出
/sbin/sysctl -p
ulimit -a #查看
ulimit -n 1000000 #设置
安装篇
1、安装Docker
1.1添加docker用户组
groupadd docker
#添加普通用户myuser到docker组和wheel组,使其具有docker命令的执行权限
#如果是root用户可以不用执行,默认就有权限
usermod -aG docker myuser
usermod -aG wheel myuser
#刷新用户组
newgrp docker
1.2下载docker安装包
docker下载地址:https://download.docker.com/linux/static/stable/x86_64/
目前最新版本:https://download.docker.com/linux/static/stable/x86_64/docker-28.0.1.tgz
Docker-Compose下载地址:https://github.com/docker/compose/releases
下载最新版本:https://github.com/docker/compose/releases/download/v2.33.1/docker-compose-linux-x86_64
mkdir -p /data/soft/docker #创建docker安装包存放目录
上传下载好的安装包到/data/soft/docker目录
1.3创建docker配置、启动、关闭文件
mkdir -p /data/server/docker #创建docker数据存放目录,默认目录是/var/lib/docker
mkdir -p /data/server/docker/etc #创建docker配置文件放存放目录,默认是/etc/docker/daemon.json
chmod 755 -R /data/server/docker/ #设置权限
1.4创建启动文件
vi /data/soft/docker/docker.service #编辑
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd --data-root=/data/server/docker --config-file=/data/server/docker/etc/daemon.json
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
:wq! #保存退出
1.5设置daemon.json配置文件,修改默认存储目录和运行模式,添加镜像地址
#Docker默认使用/var/lib/docker作为存储目录,用来存放拉取的镜像和创建的容器
#/var目录一般都位于系统盘,我们修改Docker的默认存储目录到数据盘/data/server/docker
vi /data/soft/docker/daemon.json #注意格式缩进
{
"registry-mirrors": [
"http://docker.m.daocloud.io",
"http://mirror.ccs.tencentyun.com",
"http://docker.rainbond.cc"
],
"insecure-registries": [
"docker.m.daocloud.io",
"mirror.ccs.tencentyun.com",
"docker.rainbond.cc"
],
"debug": true,
"experimental": true
}
:wq! #保存退出
1.6创建安装脚本
vi /data/soft/docker/install.sh #创建安装脚本
#!/bin/bash
echo '解压docker安装包'
cd /data/soft/docker
tar -zxvf $1
echo '将docker目录移动到/usr/bin目录下'
mv docker/* /usr/bin
echo '将docker.service 移到/usr/lib/systemd/system/ 目录'
cp docker.service /usr/lib/systemd/system/
echo '将配置文件daemon.json移到/data/server/docker/etc/目录'
cp daemon.json /data/server/docker/etc/
echo '添加文件执行权限'
chmod +x /usr/lib/systemd/system/docker.service
echo '重新加载配置文件'
systemctl daemon-reload
echo '启动docker'
systemctl start docker.service
echo '设置开机自启'
systemctl enable docker.service
echo 'docker安装成功'
:wq! #保存退出
chmod +x /data/soft/docker/install.sh #添加执行权限
说明:
在Linux系统中,/usr/bin目录是用于存放用户可执行的命令或程序的标准目录之一。
将Docker的可执行文件拷贝到/usr/bin目录下是为了方便用户在任何位置都可以直接执行Docker命令,而不需要指定完整的路径。
/usr/bin目录是用于存放系统范围的可执行文件的标准目录,包括Docker的二进制文件和其他重要组件。对此目录进行任意更改可能会导致Docker无法正常运行或引发系统稳定性问题。
1.7安装docker
cd /data/soft/docker
sh install.sh docker-28.0.1.tgz
systemctl daemon-reload #重新加载配置
systemctl restart docker.service #重启docker
docker info #检查docker镜像加速器是否配置成功
1.8测试docker是否可用
docker pull hello-world #下载一个镜像实例
docker run hello-world #运行一个镜像实例
docker images hello-world #查看该镜像的信息
docker info |grep "Docker Root Dir" #查看docker数据存储目录
#相关检测命令
cat /data/server/docker/etc/daemon.json | jq .
systemctl daemon-reload
systemctl restart docker
docker info
docker info | grep Cgrou
1.9安装Docker-Compose
Docker-Compose是docker提供的一个命令行工具,用来定义和运行由多个容器组成的应用。
使用Docker-Compose,我们可以通过yaml文件定义应用程序的各个服务,并由单个命令完成应用的创建和启动。
Docker-Compose依靠Docker进行工作,必须确保已经安装了docker才能安装Docker-Compose
#把docker-compose安装在/usr/bin/目录下
#拷贝Docker-Compose到/usr/bin目录
cp /data/soft/docker/docker-compose-linux-x86_64 /usr/bin/docker-compose
#添加执行权限
chmod +x /usr/bin/docker-compose
#查看版本
docker-compose --version
2、安装JumpServer
要先注册登录才能下载
2.1下载JumpServer
https://community.fit2cloud.com/#/products/jumpserver/downloads
https://community.fit2cloud.com/#/download/jumpserver/v4-7-0
下载最新版本:jumpserver-ce-v4.7.0-x86_64.tar.gz
上传安装包jumpserver-ce-v4.7.0-x86_64.tar.gz到/opt目录
2.2安装JumpServer
cd /opt
tar zxvf jumpserver-ce-v4.7.0-x86_64.tar.gz
cd jumpserver-ce-v4.7.0-x86_64
#查看配置文件,可以默认不用修改
cat config-example.txt
#安装,根据提示选择,如果不清楚默认敲回车键就行
./jmsctl.sh install
#启动jumpserver
./jmsctl.sh start
访问地址:
http://192.168.21.190:80
Default username: admin Default password: ChangeMe
根据提示修改密码,修改成功后重新登录
jumpserver使用方法可以参考官方文档和知识库
https://docs.jumpserver.org/zh/v4/
https://kb.fit2cloud.com/categories/jumpserver
基本思路是:添加资产-添加用户-资产授权
#其他相关命令
#停止
./jmsctl.sh down
#卸载
./jmsctl.sh uninstall
#帮助
./jmsctl.sh -h
cd /opt/jumpserver/config
#修改配置文件
vi /config.txt
cd jumpserver-ce-v4.7.0-x86_64
./jmsctl.sh restart #重启后生效
#nginx代理Jumpserver
1、直接代理
# 定义服务器监听端口和域名/IP
server {
listen 8089; # 监听外部访问的端口
server_name 10.252.189.207;
# 反向代理 Jumpserver 的 HTTP 请求
location / {
proxy_pass http://192.168.137.85:8089;
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_connect_timeout 60s;
proxy_read_timeout 120s;
proxy_send_timeout 120s;
# 支持 WebSocket 协议(如果需要)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# 反向代理 Jumpserver 的 WebSocket 请求
location /ws/ {
proxy_pass http://192.168.137.85:5000; # WebSocket 真实地址和端口
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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_connect_timeout 60s;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
}
2、二级目录代理
location /jms {
# 将 proxy_pass 替换成对应服务地址即可
proxy_pass http://10.252.189.207:8089/;
proxy_set_header Accept-Encoding "";
rewrite "/jms/(.*)$" /$1 break;
proxy_http_version 1.1;
proxy_buffering off;
proxy_request_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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_redirect ~^/(.*) http://$http_host/jms/$1;
sub_filter_types *;
sub_filter_once off;
sub_filter '/static/' '/jms/static/';
sub_filter '/ui/' '/jms/';
sub_filter '/api/' '/jms/api/';
sub_filter '/core/' '/jms/core/';
sub_filter '/ws/notifications/' '/jms/ws/notifications/';
sub_filter '/luna/' '/jms/luna/';
sub_filter '/koko/' '/jms/koko/';
sub_filter '/lion' '/jms/lion/';
sub_filter '/media/' '/jms/media/';
sub_filter '/omnidb/' '/jms/omnidb/';
sub_filter '/player/' '/jms/player';
sub_filter '/theme/' '/jms/theme/';
sub_filter '/ui/assets/' '/jms/ui/assets/';
}
至此,Linux系统下安装部署JumpServer堡垒机完成。



