使用开源软件 jumpserver 搭造自己的堡垒机

开软地址:https://github.com/jumpserver/jumpserver

目前版本:1.5.2 测试的时候有少许BUG,但功能却不影响体验的.

仪表盘

资产列表

web终端->登录linux

web终端->登录windows

还可以录制远程连接的录像并上传到 阿里云的oss,azure,s3,本机

批量作业中心

ssh 中登录远端主机

	Administrator,  欢迎使用Jumpserver开源堡垒机系统

1) 输入 ID 进行直接登陆.
2) 输入 部分IP、主机名、备注 进行进行搜索登录(如果唯一).
3) 输入 / + IP, 主机名 or 备注 进行搜索, 如: /192.168.
4) 输入 p 进行显示您有权限的主机.
5) 输入 g 进行显示您有权限的节点.
6) 输入 r 进行刷新最新的机器和节点信息.
7) 输入 h 进行显示帮助.
8) 输入 q 进行退出.
Opt> p
ID | 主机名 | IP | 登录用户 | 备注
+------+----------------------+-----------------------+----------------------+-------------------------------------------+
1 | Tcent-zabbixSv | 118.24.x.x | makeit | zabbix,Sv
2 | aliyun2G5M | 101.132.x.x | makeit | master-server
3 | bwgcn2 | 95.163.x.x | makeit |
4 | cn2gia | 216.24.x.x | makeit |
5 | testCentos7 | 192.168.22.194 | makeit | kvm,centos7系统,主要用来测试
6 | testwin764 | 192.168.22.13 | makeit-windows |
7 | vhome_route | 127.0.0.1 | makeit |
8 | vhome_rsp2 | 127.0.0.1 | makeit |
页码: 1, 每页行数: 19, 总页数: 1, 总数量: 8
Opt>

好了,下面是官方的简介

Jumpserver 是全球首款完全开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 的运维安全审计系统。

Jumpserver 使用 Python / Django 进行开发,遵循 Web 2.0 规范,配备了业界领先的 Web Terminal 解决方案,交互界面美观、用户体验好。

Jumpserver 采纳分布式架构,支持多机房跨区域部署,支持横向扩展,无资产数量及并发限制。改变世界,从一点点开始。

核心功能列表


身份验证 Authentication 登录认证 资源统一登录和认证
LDAP 认证
支持 OpenID,实现单点登录
多因子认证 MFA(Google Authenticator)
账号管理 Account 集中账号管理 管理用户管理
系统用户管理
统一密码管理 资产密码托管
自动生成密码
密码自动推送
密码过期设置
批量密码变更(X-PACK) 定期批量修改密码
生成随机密码
多云环境的资产纳管(X-PACK) 对私有云、公有云资产统一纳管
授权控制 Authorization 资产授权管理 资产树
资产或资产组灵活授权
节点内资产自动继承授权
RemoteApp(X-PACK) 实现更细粒度的应用级授权
组织管理(X-PACK) 实现多租户管理,权限隔离
多维度授权 可对用户、用户组或系统角色授权
指令限制 限制特权指令使用,支持黑白名单
统一文件传输 SFTP 文件上传/下载
文件管理 Web SFTP 文件管理
安全审计 Audit 会话管理 在线会话管理
历史会话管理
录像管理 Linux 录像支持
Windows 录像支持
指令审计 指令记录
文件传输审计 上传/下载记录审计

安装及使用文档


演示视频和系统截图


我们提供了演示视频和系统截图可以让你快速了解 Jumpserver。

SDK


我们编写了一些SDK,供你的其它系统快速和 Jumpserver API 交互。

  • Python Jumpserver 其它组件使用这个 SDK 完成交互
  • Java 恺珺同学提供的 Java 版本的 SDK

Jumpserver 环境要求:

  • 硬件配置: 2个CPU核心, 4G 内存, 50G 硬盘(最低)
  • 操作系统: Linux 发行版 x86_64
  • Python = 3.6.x
  • Mysql Server ≥ 5.6
  • Mariadb Server ≥ 5.5.56
  • Redis

极速安装

生产环境建议使用 1.4.8 版本

自建服务器极速安装

生产环境建议使用 1.4.8 版本

说明

  • 全新安装的 Centos7 系统
  • 保持服务器网络畅通

开始安装

以下命令均在一个终端里面执行


echo -e "\033[31m 1. 防火墙 Selinux 设置 \033[0m" \
&& if [ "$(systemctl status firewalld | grep running)" != "" ]; then firewall-cmd --zone=public --add-port=80/tcp --permanent; firewall-cmd --zone=public --add-port=2222/tcp --permanent; firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.17.0.0/16" port protocol="tcp" port="8080" accept"; firewall-cmd --reload; fi \
&& if [ "$(getenforce)" != "Disabled" ]; then setsebool -P httpd_can_network_connect 1; fi echo -e "\033[31m 2. 部署环境 \033[0m" \
&& yum update -y \
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& yum -y install kde-l10n-Chinese \
&& localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8 \
&& export LC_ALL=zh_CN.UTF-8 \
&& echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf \
&& yum -y install wget gcc epel-release git \
&& yum install -y yum-utils device-mapper-persistent-data lvm2 \
&& yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo \
&& yum makecache fast \
&& rpm --import https://mirrors.aliyun.com/docker-ce/linux/centos/gpg \
&& echo -e "[nginx-stable]\nname=nginx stable repo\nbaseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/\ngpgcheck=1\nenabled=1\ngpgkey=https://nginx.org/keys/nginx_signing.key" > /etc/yum.repos.d/nginx.repo \
&& rpm --import https://nginx.org/keys/nginx_signing.key \
&& yum -y install redis mariadb mariadb-devel mariadb-server MariaDB-shared nginx docker-ce \
&& systemctl enable redis mariadb nginx docker \
&& systemctl start redis mariadb \
&& yum -y install python36 python36-devel \
&& python3.6 -m venv /opt/py3 echo -e "\033[31m 3. 下载组件 \033[0m" \
&& cd /opt \
&& if [ ! -d "/opt/jumpserver" ]; then git clone --depth=1 https://github.com/jumpserver/jumpserver.git; fi \
&& if [ ! -f "/opt/luna.tar.gz" ]; then wget https://demo.jumpserver.org/download/luna/1.5.2/luna.tar.gz; tar xf luna.tar.gz; chown -R root:root luna; fi \
&& yum -y install $(cat /opt/jumpserver/requirements/rpm_requirements.txt) \
&& echo -e "[easy_install]\nindex_url = https://mirrors.aliyun.com/pypi/simple/" > ~/.pydistutils.cfg \
&& source /opt/py3/bin/activate \
&& pip install --upgrade pip setuptools -i https://mirrors.aliyun.com/pypi/simple/ \
&& pip install -r /opt/jumpserver/requirements/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ \
&& curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io \
&& systemctl restart docker \
&& docker pull jumpserver/jms_koko:1.5.2 \
&& docker pull jumpserver/jms_guacamole:1.5.2 \
&& rm -rf /etc/nginx/conf.d/default.conf \
&& wget -O /etc/nginx/conf.d/jumpserver.conf https://demo.jumpserver.org/download/nginx/conf.d/jumpserver.conf echo -e "\033[31m 4. 处理配置文件 \033[0m" \
&& source ~/.bashrc \
&& if [ "$DB_PASSWORD" = "" ]; then DB_PASSWORD=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 24`; fi \
&& if [ "$SECRET_KEY" = "" ]; then SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`; echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc; fi \
&& if [ "$BOOTSTRAP_TOKEN" = "" ]; then BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`; echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc; fi \
&& if [ "$Server_IP" = "" ]; then Server_IP=`ip addr | grep inet | egrep -v '(127.0.0.1|inet6|docker)' | awk '{print $2}' | tr -d "addr:" | head -n 1 | cut -d / -f1`; fi \
&& if [ ! -d "/var/lib/mysql/jumpserver" ]; then mysql -uroot -e "create database jumpserver default charset 'utf8';grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by '$DB_PASSWORD';flush privileges;"; fi \
&& if [ ! -f "/opt/jumpserver/config.yml" ]; then cp /opt/jumpserver/config_example.yml /opt/jumpserver/config.yml; sed -i "s/SECRET_KEY:/SECRET_KEY: $SECRET_KEY/g" /opt/jumpserver/config.yml; sed -i "s/BOOTSTRAP_TOKEN:/BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN/g" /opt/jumpserver/config.yml; sed -i "s/# DEBUG: true/DEBUG: false/g" /opt/jumpserver/config.yml; sed -i "s/# LOG_LEVEL: DEBUG/LOG_LEVEL: ERROR/g" /opt/jumpserver/config.yml; sed -i "s/# SESSION_EXPIRE_AT_BROWSER_CLOSE: false/SESSION_EXPIRE_AT_BROWSER_CLOSE: true/g" /opt/jumpserver/config.yml; sed -i "s/DB_PASSWORD: /DB_PASSWORD: $DB_PASSWORD/g" /opt/jumpserver/config.yml; fi echo -e "\033[31m 5. 启动 Jumpserver \033[0m" \
&& systemctl start nginx \
&& cd /opt/jumpserver \
&& ./jms start -d \
&& docker run --name jms_koko -d -p 2222:2222 -p 127.0.0.1:5000:5000 -e CORE_HOST=http://$Server_IP:8080 -e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN --restart=always jumpserver/jms_koko:1.5.2 \
&& docker run --name jms_guacamole -d -p 127.0.0.1:8081:8081 -e JUMPSERVER_SERVER=http://$Server_IP:8080 -e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN --restart=always jumpserver/jms_guacamole:1.5.2 \
&& echo -e "\033[31m 你的数据库密码是 $DB_PASSWORD \033[0m" \
&& echo -e "\033[31m 你的SECRET_KEY是 $SECRET_KEY \033[0m" \
&& echo -e "\033[31m 你的BOOTSTRAP_TOKEN是 $BOOTSTRAP_TOKEN \033[0m" \
&& echo -e "\033[31m 你的服务器IP是 $Server_IP \033[0m" \
&& echo -e "\033[31m 请打开浏览器访问 http://$Server_IP 用户名:admin 密码:admin \033[0m"
$ echo -e "\033[31m 6. 配置自启 \033[0m" \
&& if [ ! -f "/usr/lib/systemd/system/jms.service" ]; then wget -O /usr/lib/systemd/system/jms.service https://demo.jumpserver.org/download/shell/centos/jms.service; chmod 755 /usr/lib/systemd/system/jms.service; systemctl enable jms; fi

Docker 安装

Jumpserver 封装了一个 All in one Docker, 可以快速启动。该镜像集成了所需要的组件, 支持使用外置 Database 和 Redis

Tips: 不建议在生产中使用, 因为所有软件都打包到一个Docker中了, 不是Docker最佳实践

生产环境部署建议参考 进阶安装文档

Docker-Compose 参考 docker-compose 示例_

快速启动

  • 使用 root 身份输入
  • 环境迁移和更新升级请检查 SECRET_KEY 是否与之前设置一致, 不能随机生成, 否则数据库所有加密的字段均无法解密
# 生成随机加密秘钥, 勿外泄
$ 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 16`; echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc; echo $BOOTSTRAP_TOKEN; else echo $BOOTSTRAP_TOKEN; fi $ docker run --name jms_all -d -p 80:80 -p 2222:2222 -e SECRET_KEY=$SECRET_KEY -e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN jumpserver/jms_all:1.4.8 # macOS 生成随机 key 可以用下面的命令
$ if [ "$SECRET_KEY" = "" ]; then SECRET_KEY=`LC_CTYPE=C tr -dc A-Za-z0-9 < /dev/urandom | head -c 50`; echo "SECRET_KEY=$SECRET_KEY" >> ~/.bash_profile; echo $SECRET_KEY; else echo $SECRET_KEY; fi
$ if [ "$BOOTSTRAP_TOKEN" = "" ]; then BOOTSTRAP_TOKEN=`LC_CTYPE=C tr -dc A-Za-z0-9 < /dev/urandom | head -c 16`; echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bash_profile; echo $BOOTSTRAP_TOKEN; else echo $BOOTSTRAP_TOKEN; fi

访问

  • 浏览器访问: http://<容器所在服务器IP>
  • SSH 访问: ssh -p 2222 <容器所在服务器IP>
  • XShell 等工具请添加 connection 连接, 默认 ssh 端口 2222
  • 默认管理员账户 admin 密码 admin

外置数据库要求

  • mysql 版本需要大于等于 5.6
  • mariadb 版本需要大于等于 5.5.6
  • 数据库编码要求 uft8

创建数据库

  • 创建数据库命令行
# mysql
$ create database jumpserver default charset 'utf8';
$ grant all on jumpserver.* to 'jumpserver'@'%' identified by 'weakPassword';

额外环境变量

  • SECRET_KEY = **
  • BOOTSTRAP_TOKEN = **
  • DB_HOST = mysql_host
  • DB_PORT = 3306
  • DB_USER = jumpserver
  • DB_PASSWORD = weakPassword
  • DB_NAME = jumpserver
  • REDIS_HOST = 127.0.0.1
  • REDIS_PORT = 6379
  • REDIS_PASSWORD =
  • VOLUME /opt/jumpserver/data/media
  • VOLUME /var/lib/mysql
$ docker run --name jms_all -d \
-v /opt/jumpserver:/opt/jumpserver/data/media \
-p 80:80 \
-p 2222:2222 \
-e SECRET_KEY=xxxxxx \
-e BOOTSTRAP_TOKEN=xxx \
-e DB_HOST=192.168.x.x \
-e DB_PORT=3306 \
-e DB_USER=root \
-e DB_PASSWORD=xxx \
-e DB_NAME=jumpserver \
-e REDIS_HOST=192.168.x.x \
-e REDIS_PORT=6379 \
-e REDIS_PASSWORD=xxx \
jumpserver/jms_all:1.4.8

仓库地址

一站式、分布式安装文档

生产环境建议使用 1.4.8 版本

组件说明

  • Jumpserver 为管理后台, 管理员可以通过 Web 页面进行资产管理、用户管理、资产授权等操作, 用户可以通过 Web 页面进行资产登录, 文件管理等操作
  • koko 为 SSH Server 和 Web Terminal Server 。用户可以使用自己的账户通过 SSH 或者 Web Terminal 访问 SSH 协议和 Telnet 协议资产
  • Luna 为 Web Terminal Server 前端页面, 用户使用 Web Terminal 方式登录所需要的组件
  • Guacamole 为 RDP 协议和 VNC 协议资产组件, 用户可以通过 Web Terminal 来连接 RDP 协议和 VNC 协议资产 (暂时只能通过 Web Terminal 来访问)

端口说明

  • Jumpserver 默认端口为 8080/tcp 配置文件 jumpserver/config.yml
  • koko 默认 SSH 端口为 2222/tcp, 默认 Web Terminal 端口为 5000/tcp 配置文件在 koko/config.yml
  • Guacamole 默认端口为 8081/tcp, 配置文件 /config/tomcat9/conf/server.xml
  • Nginx 默认端口为 80/tcp
  • Redis 默认端口为 6379/tcp
  • Mysql 默认端口为 3306/tcp
Protocol Server name Port
TCP Jumpserver 8080
TCP koko 2222, 5000
TCP Guacamole 8081
TCP Db 3306
TCP Redis 6379
TCP Nginx 80

一体化部署文档(基于CentOS 7)

一体化部署文档(基于Ubuntu 18.04)

分布式部署文档(基于CentOS 7)

请勿使用, 等待更新ing...

开源地址:https://github.com/jumpserver/jumpserver

使用开源软件 jumpserver 搭造自己的堡垒机的更多相关文章

  1. JumpServer 堡垒机 指南

    堡垒机介绍 在一个特定网络环境下,为了保障网络和数据不受外界入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态.安全事件.网络活动,以便集中报警.及时处理及审计定责.    ...

  2. 分享一款开源堡垒机-jumpserver

    本文主文章地址为:https://blog.csdn.net/KH_FC JumpServer是由FIT2CLOUD(飞致远)公司旗下一款开源的堡垒机,这款也是全球首款开源的堡垒机,使用 GNU GP ...

  3. CentOS7 开源跳板机(堡垒机) Jumpserver

    开源跳板机(堡垒机)Jumpserver 环境 CentOS 7   x64       关闭 selinux  firewalld jumpserver: 172.24.0.14 testserve ...

  4. 全球首款完全开源的堡垒机,符合 4A 的专业运维审计系统Jumpserver

    Jumpserver是全球首款完全开源的堡垒机,是符合 4A 的专业运维审计系统. http://www.jumpserver.org https://github.com/jumpserver/ju ...

  5. 开源跳板机(堡垒机)系统 Jumpserver安装教程(带图文)

    环境 系统: CentOS 7 IP: 192.168.244.144 关闭 selinux 和防火墙 # CentOS 7 $ setenforce 0 # 可以设置配置文件永久关闭 $ syste ...

  6. 最新开源跳板机(堡垒机)系统 Jumpserver介绍

    Jumpserver 是全球首款完全开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 的专业运维审计系统. Jumpserver 使用 Python / Django 进行开发,遵 ...

  7. jumpserver开源堡垒机部署安装

    0x01.前言 Jumpserver 是全球首款完全开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 的专业运维审计系统. Jumpserver 使用 Python / Djang ...

  8. 开源堡垒机jumpserver

    开源堡垒机jumpserver 开源堡垒机jumpserver的安装 开源堡垒机jumpserver的配置和使用

  9. 开源堡垒机jumpserver的安装

    开源跳板机jumpserver安装 简介 Jumpserver 是全球首款完全开源的堡垒机, 使用GNU GPL v2.0 开源协议, 是符合4A 的专业运维审计系统 Jumpserver 使用Pyt ...

随机推荐

  1. iOS - 总结适配IOS10需要注意的问题

    1.自动管理证书 首先要说的就是Xcode8.打开Xcode8最明显的就是Targets-->General下的自动管理证书模块.以前对于新手来说无论是开发还是打包都必须要被苹果的开发签名系统虐 ...

  2. 【转载】 C#使用Union方法求两个List集合的并集数据

    在C#语言的编程开发中,有时候需要对List集合数据进行运算,如对两个List集合进行交集运算或者并集运算,其中针对2个List集合的并集运算,可以使用Union方法来快速实现,Union方法的调用格 ...

  3. 微信小程序开发demo

    自己写的小程序,欢迎下载 https://gitee.com/lijunchengit/chengZiShengHuoBang

  4. echart——vue封装成公共组件

    <!-- 自定义Echarts * options: Object,//数据 * theme: String,//主题 * initOptions: Object,//初始化 * group: ...

  5. SHA256WithRSA

    在上文中了解到SHA和RSA,工作中恰好用到扩展应用:SHA256WithRSA,本文总结下学习过程,备忘の 再提供另外一种方法,实现Java版pem密钥和.Net版xml密钥相互转换的方法 密钥转换 ...

  6. 【年度盘点】最受欢迎的5大Java练习项目

    5. SSM + easyUI 搭建简易的人事管理系统 当前学习采用 SSM + easyUI 来开发一个比较简易的人事管理系统,让大家能够通过实际项目掌握 SSM 项目的开发.项目当前学习人数:16 ...

  7. java - day012 - 异常 , throws, throw , IO ,RandomAccessFile

    异常 封装错误信息的对象 错误信息 类型        例如: NullPointerExce 空指针 提示消息  出错的行号 异常的继承结构 Throwable | - Error 系统级错误 | ...

  8. BUUCTF复现记录2

    [CISCN2019 华北赛区 Day1 Web1]Dropbox 打开题目,一个登录界面,SQL? sqlmap跑一下,没有注入,那么注册一下 登录之后,发现只有一个上传页面,源码里面也没有什么 那 ...

  9. 基于Java+Selenium的WebUI自动化测试框架(九)-----基础页面类(BasePage)

    上篇我们写了java读取xml文件的类,实现了可以从xml文件读取元素的方式.那么,接下来我们需要考虑一个问题.我们拿了这些元素之后怎么去操作呢? 先来看看我们手工测试的时候是怎么进行的. 双击浏览器 ...

  10. MySQL服务器

    ---恢复内容开始--- mysql是基于C/S端的服务器软件 mysql服务端 -server端开启 -解析指令 -对文件夹.文件.数据的增删改查 mysql客户端 -连接S段 -发送指令(sql语 ...