jjzjj

堡垒机、跳板机JumpServer的搭建,以及使用,图文详细

the丶only 2024-06-02 原文

一、简介

为了保证服务器安全,加个堡垒机,所有ssh连接都通过堡垒机来完成,堡垒机也需要有身份认证,授权,访问控制,审计等功能。

Jumpserver 是一款由python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能。基于ssh协议来管理,客户端无需安装agent。

在公司中,分配人员服务器权限也是相当方便,如:来一个新人,在Jumpserver分配Jumpserver账号即可,人员离职,在Jumpserver删掉人员账号即可。无需担心人员离职留下后门,当然前提是检查防火墙,只允许Jumpserver服务器有其他服务器的ssh的权限。

目前市面上已经有很多jumpserver产品提供使用,这里就介绍最广泛的一款。
官方网址:https://www.jumpserver.org/

二、Jumpserver搭建

参考官方部署文档:https://docs.jumpserver.org/zh/master/install/setup_by_fast/

这款也是基于docker运行的,不管一键部署,还是手动部署都是docker,手动部署区别主要是改密码、IP、端口自定义之类的。默认的其实已经很好没必要改了。相对来所,搭建还是比较容易的,官方脚本一步到位。

1:一键部署

如果没有安装docker,可以选择这种方式,脚本会自带安装docker及相关配置。请确保服务器上没有已关闭其他mysql或者nginx服务,因为会占用端口。

# 默认会安装到 /opt/jumpserver-installer-v2.21.0 目录,如果类似ubuntu提示没权限,请加上sudo即可
curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.21.0/quick_start.sh | bash
cd /opt/jumpserver-installer-v2.21.0

# 安装完成后配置文件 /opt/jumpserver/config/config.txt

安装界面:

安装完成后,进入启动即可

cd /opt/jumpserver-installer-v2.21.0

# 启动,如果权限问提,同意前面加上sudo即可。
./jmsctl.sh start

# 停止
./jmsctl.sh down

# 卸载
./jmsctl.sh uninstall

# 帮助
./jmsctl.sh -h

2:手动部署

如果已经安装了docker,或者自己改配置在启动,可选择手动部署。

#进入下载目录
cd /opt
#下载安装包
wget https://github.com/jumpserver/installer/releases/download/v2.21.0/jumpserver-installer-v2.21.0.tar.gz
#解压
tar -xf jumpserver-installer-v2.21.0.tar.gz
#进入解压目录
cd jumpserver-installer-v2.21.0
# 根据需要修改配置文件模板, 如果不清楚用途可以跳过修改
cat config-example.txt
# 以下设置如果为空系统会自动生成随机字符串填入
## 迁移请修改 SECRET_KEY 和 BOOTSTRAP_TOKEN 为原来的设置
## 完整参数文档 https://docs.jumpserver.org/zh/master/admin-guide/env/

## 安装配置, amd64 默认使用华为云加速下载, arm64 请注释掉 DOCKER_IMAGE_PREFIX=swr.cn-south-1.myhuaweicloud.com
# DOCKER_IMAGE_PREFIX=swr.cn-south-1.myhuaweicloud.com
VOLUME_DIR=/opt/jumpserver
DOCKER_DIR=/var/lib/docker
SECRET_KEY=
BOOTSTRAP_TOKEN=
LOG_LEVEL=ERROR

##  MySQL 配置, USE_EXTERNAL_MYSQL=1 表示使用外置数据库, 请输入正确的 MySQL 信息
USE_EXTERNAL_MYSQL=0
DB_HOST=mysql
DB_PORT=3306
DB_USER=root
DB_PASSWORD=
DB_NAME=jumpserver

##  Redis 配置, USE_EXTERNAL_REDIS=1 表示使用外置数据库, 请输入正确的 Redis 信息
USE_EXTERNAL_REDIS=0
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=

## Compose 项目设置, 如果 192.168.250.0/24 网段与你现有网段冲突, 请修改然后重启 JumpServer
COMPOSE_PROJECT_NAME=jms
COMPOSE_HTTP_TIMEOUT=3600
DOCKER_CLIENT_TIMEOUT=3600
DOCKER_SUBNET=192.168.250.0/24

## IPV6 设置, 容器是否开启 ipv6 nat, USE_IPV6=1 表示开启, 为 0 的情况下 DOCKER_SUBNET_IPV6 定义不生效
USE_IPV6=0
DOCKER_SUBNET_IPV6=2001:db8:10::/64

## Nginx 配置, USE_LB=1 表示开启, 为 0 的情况下, HTTPS_PORT 定义不生效
HTTP_PORT=80
SSH_PORT=2222
RDP_PORT=3389

USE_LB=0
HTTPS_PORT=443

## Task 配置, 是否启动 jms_celery 容器, 单节点必须开启
USE_TASK=1

## XPack, USE_XPACK=1 表示开启, 开源版本设置无效
USE_XPACK=0

# Core 配置, Session 定义, SESSION_COOKIE_AGE 表示闲置多少秒后 session 过期, SESSION_EXPIRE_AT_BROWSER_CLOSE=true 表示关闭浏览器即 session 过期
# SESSION_COOKIE_AGE=86400
SESSION_EXPIRE_AT_BROWSER_CLOSE=true

# Koko Lion XRDP 组件配置
CORE_HOST=http://core:8080

# 额外的配置
CURRENT_VERSION=
# 安装
./jmsctl.sh install

# 启动
./jmsctl.sh start

# 安装完成后配置文件 /opt/jumpserver/config/config.txt

启动方式一样,脚本启动

cd /opt/jumpserver-installer-v2.21.0

# 启动
./jmsctl.sh start

# 停止
./jmsctl.sh down

# 卸载
./jmsctl.sh uninstall

# 帮助
./jmsctl.sh -h

3:启动测试

安装完成后,在服务器上,可看见docker的jumpserver服务都已经up状态。

浏览器输入服务器IP地址,即可进入

默认管理员账户admin,密码admin,第一次登录提示会更改密码,更改密码后,重新登录即可进入。

三、Jumpserver添加服务器、人员,以及授权

情景:员工zhangsan,服务器192.168.152.100。现在需要添加服务器192.168.152.100到jumpserver,并允许员工zhangsan登录。

1:用户管理

添加员工账户zhangsan,系统角色用户即可。这个简单,就不介绍了。

2:资产管理

2.1:系统用户

系统用户选项,有普通用户和特权用户,有些人分不清。

这两个用户,都是给jumpserver这个软件使用的,jumpserver用这两个用户连接到其他服务器。

特权用户:最高权限, 如 root 或 拥有 NOPASSWD: ALL sudo 权限的用户,只允许jumpserver使用,JumpServer 使用该用户来 推送系统用户获取资产硬件信息 等,系统也有提示。远程服务器上存在的用户信息。

普通用户:可以在服务器预先存在的用户,也可以由 特权用户 来自动创建。是zhangsan登录服务器时用的用户名。也可以直接是特权用户root等,看权限分配。

创建特权用户,给jumpserver软件连接用,这里用的ubuntu,登录方式密钥,上传密钥即可。

普通用户,可创建也可以不创建,如直接使用特权用户ubuntu即可。如果创建后(如:user01),jumpserver会在远程服务器上通过ubuntu这个特权用户自动创建这个用户(如:user01)。

2.2: 资产列表

资产列表,就是添加服务器地址,特权用户,就是上面创建的给jumpserver连接远程服务器使用的。


特权用户的账户密码没错的话,添加完成后,可以看到连接行是绿色的勾

点进去查看,也可以看到服务器相关硬件信息

到这里,服务器添加完成。

3:权限管理

服务器添加完成后,需要给zhangsan使用,就需要给zhangsan这个账户授权。


在资产授权里,可以看到已经存在的服务器,但是没有授权,也是空白。所以选择创建。

填写名称,用户选择zhangsan,如果有多个用户需要使用,可添加多个。

用户组,即对这个用户组的所有用户授权,便于人员的管理,这里只对单个人授权,所有保持为空,毕竟用户组有些人员也是没必要使用的。

资产,选择要授权的服务器,这里选择刚才的添加的192.168.152.100。

节点,即分组,在服务器很多的情况下,可以选择某个节点,即服务器分组给上面的人员授权。同理,这里只对单个服务器授权,所有保持为空,毕竟节点下所有服务器也是没必要全部使用的。

系统用户,我这里默认全部使用特权用户,及ubuntu,所以人员进入服务器都是以ubuntu进入。当然,如果上面创建了普通的系统用户,也可以选择普通的系统用户。如果公司人多的话,还是需要创建的,便于权限管理。


到这里,服务器授权管理已经完成。

四、Jumpserver用户登录使用

有两种登录方式,一种网页登录,另一种第三方ssh工具登录。

1:网页登录

浏览器打开jumpserver网址。

用zhangsan账户登录jumpserver,界面简单,只显示有权限的资产,即服务器名单

点击web终端,可直接进入网页版登录,服务器,选择需要的服务器点击即可。

2:ssh工具登录

如:xshell,Putty等,ssh堡垒机IP,端口:2222。进入根据提示选择需要登录的服务器。这里以xshell为例。

将端口改成2222,然后登录

登录后,输入zhangsan账户密码,即可,根据提示进入授权服务器

到这里就设置完成了。

五、Jumpserver审计功能

管理员用户,或者审计员用户,可以在视图审计台中,查看相关登录记录,命令记录,以及回放。

有关堡垒机、跳板机JumpServer的搭建,以及使用,图文详细的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  3. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  4. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  5. ruby - 在 Ruby 中使用匿名模块 - 2

    假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于

  6. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  7. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  8. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  9. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  10. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

随机推荐