JumpServer 是一个开源的跳板机的解决方案,提供了对远程服务器的安全访问、会话录制和审计、用户身份管理等功能,适用于需要管理机器资源&大量服务器资源的情况。 本文将分享在 docker 中 JumpServer 的安装使用经验,并使用油猴插件扩展其功能
身份验证 / Authentication
授权控制 / Authorization
账号管理 / Accounting
安全审计 / Auditing
jms_mysql
镜像:mariadb:10.6jms_redis
镜像: redis:6.2jms_server
镜像:jumpserver/jms_all:v3.8.1jumpserver.devops.test.com``,192.168.123.214:81
mysql -h127.0.0.1 -uroot -pdevops666 -e 'SHOW DATABASES;'
参数后面需要紧跟值,不能有空格docker network create devopsnetwork
)
version: '3.1'
services:
jms_mysql:
image: mariadb:10.6
container_name: jms_mysql
restart: always
environment:
MARIADB_DATABASE: jumpserver
MARIADB_ROOT_PASSWORD: devops666
healthcheck:
test: "mysql -h127.0.0.1 -uroot -pdevops666 -e 'SHOW DATABASES;'"
interval: 10s
timeout: 5s
retries: 3
start_period: 30s
volumes:
- ./data-mysql:/var/lib/mysql
networks:
- devopsnetwork
jms_redis:
image: redis:6.2
container_name: jms_redis
restart: always
command: redis-server --requirepass devops666
environment:
REDIS_PASSWORD: devops666
healthcheck:
test: "redis-cli -h 127.0.0.1 -a devops666 info Replication"
interval: 10s
timeout: 5s
retries: 3
start_period: 10s
volumes:
- ./data-redis:/data
networks:
- devopsnetwork
jms_server:
container_name: jms_all
restart: always
image: jumpserver/jms_all:v3.8.1
volumes:
- ./data-server/core/data:/opt/jumpserver/data # Core 持久化目录, 存储录像日志
- ./data-server/koko/data:/opt/koko/data # Koko 持久化目录
- ./data-server/lion/data:/opt/lion/data # Lion 持久化目录
- ./data-server/magnus/data:/opt/magnus/data # Magnus 持久化目录
- ./data-server/kael/data:/opt/kael/data # Kael 持久化目录
- ./data-server/chen/data:/opt/chen/data # Chen 持久化目录
- ./data-server/web/log:/var/log/nginx # Nginx 日志持久化目录
privileged: true
environment:
# 自行生成随机的字符串, 不要包含特殊字符串, 长度推荐大于等于 50
- SECRET_KEY=2FsdGVkX19mzMum9dqqphTCNpm9dqqphTCNpm9dqqphTCNpm9dqqphTCNpm9dqqphTCNpm9dqqphTCNpm9dqqphTCNpCPV
# 自行生成随机的字符串, 不要包含特殊字符串, 长度推荐大于等于 24
- BOOTSTRAP_TOKEN=m9dqqphTCNpm9dqqphTCNpm9dqqphTCNp
# 日志等级, 测试环境推荐设置为 DEBUG
- LOG_LEVEL=ERROR
# redis配置
- REDIS_HOST=jms_redis
- REDIS_PORT=6379
- REDIS_PASSWORD=devops666
# mysql配置
- DB_HOST=jms_mysql
- DB_PORT=3306
- DB_USER=root
- DB_NAME=jumpserver
- DB_PASSWORD=devops666
# 不设置无法登录,可以设置域名或者服务器的IP
- DOMAINS=jumpserver.devops.test.com,192.168.123.214:81
ports:
- '81:80'
networks:
- devopsnetwork
networks:
devopsnetwork:
external: true
docker compose up -d
即可还不会在局域网申请 ssl 及配置的可以参考之前的文章 前后端都用得上的 Nginx 日常使用经验
server {
listen 80;
listen 443 ssl;
server_name jumpserver.devops.test.com; # 自行修改成你的域名
client_max_body_size 4096m; # 上传文件大小限制
ssl_certificate /certs/jumpserver.devops.test.com/server.crt;
ssl_certificate_key /certs/jumpserver.devops.test.com/server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
# 这里的 ip 是后端 JumpServer nginx 的 ip
proxy_pass http://jms_server:80;
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 Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
// ==UserScript==
// @name 直接打开JumpServer网站
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author yimo
// @match https://jumpserver.devops.test.com/luna/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=test.com
// @grant none
// ==/UserScript==
(function() {
'use strict';
window.onload=function(){
console.log('load custom js')
var ulElement = document.querySelector("#winContainer > div > div > div > ul");
if(ulElement){
var newLi = document.createElement('li');
newLi.innerHTML = '<span style="color:#7494f3;margin-right: 6px">油猴插件 → 网站资产</span> 直接新窗口打开网站';
ulElement.appendChild(newLi);
}
setInterval(()=>{
document.querySelectorAll(".node_name").forEach(s=>{
if(s.isAddHtml)return;
s.isAddHtml=true;
if(s.parentNode.getAttribute("title").indexOf('http')==0){
console.log('检测到站点:'+s.parentNode.getAttribute("title"))
s.addEventListener('click',function(e){
console.log('click')
var titleUrl = s.parentNode.getAttribute("title");
window.open(titleUrl);
e.stopPropagation();
})
return;
}
})
},500);
}
})();
通过 JumpServer 可以搭建一套测试环境的相关环境,并且将相关的网站通过其公开,成员可以直接使用,而无需记录地址账号等信息,研究过程中也看了 1Panel,发现对 Docker 没有很好的支持,准备后续接入夜莺监控更好的检测局域网资源的一个状态,敬请期待。