jumpserver跳板机

一、堡垒机(跳板机)简介

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

堡垒机又叫做跳板机,简易的跳板机功能简单,主要核心功能是远程登录服务器和日志审计。

比较优秀的开源软件jumpserver,认证、授权、审计、自动化、资产管理。

商业堡垒机:齐治, Citrix XenApp。

 

堡垒机和跳板机详解:http://blog.51cto.com/3436673/1761000

 

跳板机图解:

 

jumpserver跳板机_第1张图片

 

二、为什么要用堡垒机(跳板机)

由于来源身份不明、越权操作、密码泄露、数据被窃、违规操作等因素都可能会使运营的业务系统面临严重威胁,一旦发生事故,如果不能快速定位事故原因,运维人员往往就会背黑锅。

 

1、几种常见的运维人员背黑锅场景: 

  1. 由于不明身份利用远程运维通道攻击服务器造成业务系统出现异常,但是运维人员无法明确攻击来源,那么领导很生气、后果很严重;
  2. 只有张三能管理的服务器,被李四登录过并且做了违规操作,但是没有证据是李四登录的,那么张三只能背黑锅了;
  3. 运维人员不小心泄露了服务器的密码。一旦发生安全事故,那么后果不堪设想;
  4. 某服务器的重要数据被窃。但是数据文件无法挽回,那么面临的是无法估量的经济损失。

 

运维人员背黑锅的原因:

其实运维工作,出现各种问题是在所难免的,不仅要有很好的分析处理能力,而且还要避免问题再次发生。

 

2、要清楚认识到出现问题的真实原因

  1. 没有规范管理,人与服务器之间的界限不清晰;
  2. 没有实名机制,登录服务器前没有实名验证;
  3. 没有密码托管,服务器的密码太多,很难做到定期修改,自己保管怕丢失;
  4. 没有操作预警,对高危、敏感的操作无法做到事前防御;
  5. 没有传输控制,对重要服务器无法控制文件传输;
  6. 没有回溯过程,不能完整还原运维过程。

 

解决背黑锅的必杀技:

作为运维人员,如何摆脱以上背黑锅的尴尬局面呢?也许堡垒机(跳板机)是一个此局面的必杀技

 

3、堡垒机(跳板机)的作用:

  1. 统一入口、规范管理统一入口,所有运维人员只能登录堡垒机才能访问服务器,梳理“人与服务器”之间的关系,防止越权登录;

2)利用手机APP动态口令等验证机制(比如Google Authenticator)采用手机APP 动态口令、OTP 动态令牌、USBKEY、短信口令等双因素身份实名鉴别机制, 防止密码被暴力,解决访问身份模糊的问题。

3)托管服务器密码,实现自动改密通过堡垒机定期自动修改服务器的密码,解决手工修改密码、密码泄露和记住密码的烦恼;

a.可自动修改Windows、Linux、Unix、网络设备等操作系统的密码;

b.可以设置周期或指定时间执行改密任务;

c.可设定密码的复杂度、随机密码、指定密码、固定密码格式等;

d.可通过邮件、SFTP、FTP方式自动发送密码文件给管理员;

e.密码容错机制:改密前自动备份、备份失败不改密、改密后自动备份、自动恢复密 码等;

4)事中控制,防止违规操作。

a.通过命令控制策略,拦截高危、敏感的命令;

b.通过文件传输控制策略,防止数据、文件的泄露;

5)精细化审计,追溯整个运维过程堡垒机要做到文件记录、视频回放等精细化完整审计,快速定位运维过程:

a.不仅要对所有操作会话的在线监控、实时阻断、日志回放、起止时间、来源用户来源地址、目标地址、协议、命令、操作(如对文件的上传、下载、删除、修改等操作等)等行为记录;

b.还要能保存 SFTP/FTP/SCP/RDP/RZ/SZ 传输的文件为上传恶意文件、拖库、窃取数据等危险行为起到了依据。

 

三、Jumpserver 堡垒机介绍

Jumpserver 是一款由python编写, Django开发的开源跳板机/堡垒机系统, 助力互联网企业高效用户、资产、权限、审计管理。

Jumpserver 实现了跳板机应有的功能,基于ssh协议来管理,客户端无需安装agent。

 

1、Jumpserver 特点: 

1)完全开源,GPL 授权。

2)Python 编写,容易再次开发。

3)实现了跳板机基本功能,身份认证、访问控制、授权、审计、批量操作等。

4)集成了Ansible,批量命令等。

5)支持 Web Terminal(终端)。

6)Bootstrap编写,界面美观。

7)自动收集硬件信息。

8)录像回放。

9)命令搜索。

10)实时监控。

11)批量上传下载。

 

2、Jumpserver WEB界面的一些名词解释: · · · · · · · · · ·

用户:用户是授权和登陆的主体,将来为每个员工建立一个账户,用来登录跳板机,将资产授权给该用户,查看用户登陆记录命令历史等。

用户组:多个用户可以组合成用户组,为了方便进行授权,可以将一个部门或几个用户组建成用户组,在授权中使用组授权,该组中的用户拥有所有授权的主机权 限。

资产:资产通常是我们的服务器、网络设备等,将资产授权给用户,用户则会有权限登录资产,执行命令等。

管理账户:添加资产时需要添加一个管理账户,该账户是该资产上已有的有管理权 限的用户,如 root,或者有NO: ALL sudo权限的用户,该管理账户用来向资产推送系统用户,为系统用户添加sudo,获取资产的一些硬件信息。

资产组:同用户组,是资产组成的集合,为了方便授权。

机房:又称 IDC,这个不用解释了吧。

Sudo:这里的 sudo 其实是 Linux 中的 sudo 命令别名,一个 sudo 别名包含多个命 令, 系统用户关联   sudo就代表该系统用户有权限sudo执行这些命令。

系统用户:系统用户是服务器上建立的一些真实存在的可以ssh登陆的用户, 如 dev, sa, dba等,系统用户可使用jumpserver推送到服务器上,也可以利 用自己公司的工具进行推送,授权时将用户、资产、系统用户关联起来则表明用户有权限登陆该资产的这个系统用户,比如用户小明以dev 系统用户登录172.16.1.1 资产, 简单理解就是将某个资产上的某个系统用户映射给这个用户登录。

推送系统用户:添加完系统用户,需要推送,推送操是使用ansible,把添加的系统用户和系统用户管理的 sudo,推送到资产上,具体体现是在资产上 useradd 该系统用户,设置它的 key,然后设置它的 sudo,为了让用户可以登录它。

授权规则:授权规则是将资产系统用户和用户关联起来,用来完成授权。

日志审计:分为以下 5 个方式:

  1. 在线:查看当前在线的用户(非web在线),可以监控用户的命令执行,强制结束用户登录; 2)实时监控:实时监控用户的操作;

3)登录历史:查看以往用户的登录历史,可以查看用户登陆操作的命令,可以回放用户执行命令的录像;

4)命令记录:查看用户批量执行命令的历史,包 含执行命令的主机,执行的命令,执行的结果;

5)上传下载:查看用户上传下载文件的记录。

默认设置:默认设置里可以设置默认管理账号信息,包括账号密码密钥,默认信息为了方便添加资产而设计,添加资产时如果选择使用默认管理账号,则会使用这里设置的信息,端口是资产的ssh 端口,添加资产时,默认会使用该端口。

 

  • Jumpserver安装部署

官网地址:http://www.jumpserver.org/

1、项目环境:

系统版本

服务器IP

服务器主机名

所需软件

CentOS-7.4.1708

192.168.100.101

jump

jumpserver

CentOS-7.4.1708

192.168.100.102

centos7

 

 

2、部署jumpserver服务器:

[root@centos7 ~]# hostnamectl set-hostname jump

 

1)安装依赖:

[root@jump ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo   ##建立阿里云公网源yum仓库

安装epel-release的源

[root@jump ~]# cd /opt/

特别注意:

jumpserver的包绝不能下载在root和home等目录里,会出现权限问题

[root@jump opt]# yum -y install git python-pip gcc automake autoconf python-devel  sshpass

 

2)克隆jumpserver到本地:

[root@jump opt]# git clone https://github.com/jumpserver/jumpserver.git

[root@jump opt]# cd jumpserver/

[root@jump jumpserver]# ls

apps               data  jms      logs       requirements   tmp

config_example.py  docs  LICENSE  README.md  run_server.py  utils

[root@jump jumpserver]# git tag

[root@jump jumpserver]# git show 0.3.3

[root@jump jumpserver]# git reset --hard 3533c01011df8918b418f2a26886c0a3b8a74ec2

[root@jump jumpserver]# git checkout master

[root@jump jumpserver]# ls

connect.py           docs     jasset  jumpserver       keys     manage.py      service.sh

docker-compose.yaml  init.sh  jlog    jumpserver.conf  LICENSE  README.md      static

Dockerfile           install  jperm   juser            logs     run_server.py  templates

 

3)执行安装脚本:

[root@jump jumpserver]# cd install/

[root@jump install]# python install.py

报错:You should consider upgrading via the 'pip install --upgrade pip' command.

安装JumpServer 依赖的python库失败!

原因:pip版本问题,升级pip即可

解决:pip install --upgrade pip

安装过程中脚本会自动安装所需依赖包以及pip包,请耐心等待....

jumpserver跳板机_第2张图片

 

jumpserver跳板机_第3张图片

出现下图表示成功!!!

 

[root@centos7-1 install]# netstat -lntup|grep 8000

tcp       0    0 0.0.0.0:8000          0.0.0.0:*          LISTEN      3665/python

 

(py3) [root@V2 apps]# python manage.py changepassword admin

2018-08-28 14:43:36 [signals_handler DEBUG] Receive django ready signal 2018-08-28 14:43:36 [signals_handler DEBUG] - fresh all settings CommandError: user 'admin' does not exist

(py3) [root@V2 apps]# python manage.py createsuperuser [email protected]

2018-08-28 14:44:40 [signals_handler DEBUG] Receive django ready signal 2018-08-28 14:44:40 [signals_handler DEBUG] - fresh all settings Password: Password (again): Superuser created successfully.

 

4)在桌面浏览器里输入jumpserver服务器IP:8000

jumpserver跳板机_第4张图片

jumpserver跳板机_第5张图片

 

五、Jumpserver操作指南。

1、注册账户并初次登陆跳板机

1)添加用户

流程:用户管理-查看用户-添加用户

使用Jumpserver前要理解清楚这三个用户关系:

用户:是指你在web上创建的用户,会在跳板机上创建这个用户,作用就是用于登录跳板机

管理用户:是指客户端上的如root等高权限账号(或普通用户拥有NOPASSWD: ALL sudo权限), 作用用于推送系统用户

系统用户:是指要在客户端上创建这个系统用户,通过推送来实现,作用就是登录客户端

jumpserver跳板机_第6张图片

jumpserver跳板机_第7张图片

注册用户以后会出现下图所示:登陆密码及密钥密码,务必作记录,后面会用!!

jumpserver跳板机_第8张图片

 

2)修改用户的Web登陆密码

jumpserver跳板机_第9张图片

jumpserver跳板机_第10张图片

 

3)下载账户xshell远程登录密钥

jumpserver跳板机_第11张图片

jumpserver跳板机_第12张图片

下载密钥以后,妥善保存。

 

4)xshell远程登录工具导入密钥对

客户机xshell导入密钥:工具-用户密钥管理者

jumpserver跳板机_第13张图片

jumpserver跳板机_第14张图片

找到刚才从浏览器下载的密钥文件!!

jumpserver跳板机_第15张图片

 

jumpserver跳板机_第16张图片

jumpserver跳板机_第17张图片

5)xshell建立通过密钥对访问的远程连接

 

 

 

 

 

 

jumpserver跳板机_第18张图片

jumpserver跳板机_第19张图片

jumpserver跳板机_第20张图片

jumpserver跳板机_第21张图片

jumpserver跳板机_第22张图片

jumpserver跳板机_第23张图片

2、账户资产授权

1)添加资产

流程:资产管理-查看资产-添加资产

授权规则:授权规则就是将用户、系统用户和资产关联起来,来完成授权。

jumpserver跳板机_第24张图片

 

jumpserver跳板机_第25张图片

jumpserver跳板机_第26张图片

2)添加sudo

流程:授权管理-sudo-添加别名

jumpserver跳板机_第27张图片

jumpserver跳板机_第28张图片

 

3)添加系统用户

流程:授权管理-系统用户-添加

注意:必须先在被管理服务器主机上创建系统用户

jumpserver跳板机_第29张图片

 

jumpserver跳板机_第30张图片

jumpserver跳板机_第31张图片

jumpserver跳板机_第32张图片

4)推送系统用户

后端服务器需要有 python、sudo 环境才能使用推送用户,批量命令等功能后端服务器如果开启了selinux,请安装libselinux-python在使用

jumpserver跳板机_第33张图片

jumpserver跳板机_第34张图片

 

 

5)添加授权规则

 

jumpserver跳板机_第35张图片

 

jumpserver跳板机_第36张图片

jumpserver跳板机_第37张图片

再次测试登陆

jumpserver跳板机_第38张图片

 

3、上传和下载文件

jumpserver跳板机_第39张图片

 

4、跳板机登陆日志审计

jumpserver跳板机_第40张图片

 

你可能感兴趣的:(linux)