python | 资源管理必备之基于Jumpserver的堡垒机系统分享

python | 资源管理必备之基于Jumpserver的堡垒机系统分享

安全高效的系统架构中除了需要拥有日志管理平台(大数据 | 打鱼,你是用鱼网还是鱼竿呢?)来提高问题排查和数据分析效率,还需要具有服务器资产管理和访问权限分配的能力。近期我们选型了一款开源系统的堡垒机服务,基本可以满足常用环境下服务器的管理和分配,并具有操作日志等审计要求。

 

写在前面的话

很多公司随着业务的扩展,上线的系统越来越多,随之而来的是大量的服务器部署,并且在技术实施的每一个阶段(开发、测试、实施及运维等)都会有人员操作这些服务器。这里面可能会有如下风险点:

 

python | 资源管理必备之基于Jumpserver的堡垒机系统分享

在上一篇文章(Linux | 千里之行始于足下,如何快速替换redhat7的yum源?)中便已经提到目前传统的金融公司不仅服务器是windows系统并且很多都是公用一套维护密码,甚至有些生产环境和测试环境密码也是一样,即使是互联网公司在密码管理和权限分配上也未必都很完善,如果root权限严格管控住,那么各种rm删库跑路也可以少点吧,并且如果所有的操作都有记录供后期调阅,那么事后追责和审计也会容易得多喽。

 

何为堡垒机?

所以为了避免权限分配不当引起的安全风险,降低因人员变动而带来密码更新维护的复杂度,增加服务器资产的管理和访问审计动作。我们引入了堡垒机系统。百科解释堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、及时处理及审计定责。

 

需要哪些准备?

为了集中管理,在正式部署堡垒机系统之前,我们需要收回所有人员的直接登录服务器的权限,所有的登录动作都通过堡垒机授权,运维人员或开发人员不知道远程服务器的密码,这些远程机器的用户信息都绑定在了堡垒机上,堡垒机用户只能看到他自己能用什么权限访问哪些远程服务器,而系统管理员可以查看那些服务器被人访问了,访问的记录可以调阅和回放,所以一款合格的堡垒机需要具备用户管理、资产授权以及操作审计三大基本功能模块

python | 资源管理必备之基于Jumpserver的堡垒机系统分享

堡垒机访问服务器资产可以拿一个管理严格的学生宿舍楼来比较,楼管阿姨就是堡垒机,在楼管阿姨在岗的情况下,发放广告及可疑分子一般会拒之门外,并且所有寝室的钥匙都保管在楼管阿姨这里,每个人进门都需要到她这里登记领取,并且所有进出都有摄像头监控。到这里堡垒机的工作过程基本如此,聪明的你肯定会发现这样进出各寝室(服务器)确实安全了,财产(数据)被盗被抢风险大幅降低,但是如果楼管阿姨休假了(堡垒机崩了)那学生们岂不是要闹翻天?这里我们先抛个问题,以后有机会再一起讨论。

 

python | 资源管理必备之基于Jumpserver的堡垒机系统分享

怎么做?

好了,“为什么”以及“做什么”我们已经讨论了,接下来是“怎么做了”,我们对比了四款开源堡垒机:JumpserverCrazyEyeGateOne以及Teleport,除了Jumpserver,其他三款基本停更了,而Jumpserver一直都有更新并且资料丰富,更重要的是国内团队开发的,这里说下国内的技术修养真的越来越值得点赞了(当然不包括这两天阿里的Antd事件哦python | 资源管理必备之基于Jumpserver的堡垒机系统分享)。

 

Jumpserver官网介绍如下:

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

Jumpserver 采纳分布式架构,支持多机房跨区域部署,中心节点提供 API,各机房部署登录节点,可横向扩展、无并发访问限制。

改变世界,从一点点开始。

 

python | 资源管理必备之基于Jumpserver的堡垒机系统分享

上图是它的实现架构图,其核心框架是使用py3实现,并整合了几个优秀的开源模块,主要有基于H5的远程控制(VNC方式)访问模块guacamole,有基于SSH远程连接模块paramiko。我根据部署使用的情况重新整理了服务的实施架构,以便大家理解:

python | 资源管理必备之基于Jumpserver的堡垒机系统分享

官网安装部署教程比较详细,直接参考操作即可不赘述了,访问工作流如下:

python | 资源管理必备之基于Jumpserver的堡垒机系统分享

回到文初提到的几个功能:资产管理、用户授权、访问回溯审计都可以满足,我们计划将该系统在测试环境部署试用,后续会进一步观察使用情况。工欲善其事必先利其器,朋友们,你们是如何管理和访问服务器资产的呢?

. 服务器登录概览

python | 资源管理必备之基于Jumpserver的堡垒机系统分享

服务器资产管理

python | 资源管理必备之基于Jumpserver的堡垒机系统分享

用户授权管理

python | 资源管理必备之基于Jumpserver的堡垒机系统分享

堡垒机方式登录授权客户端

python | 资源管理必备之基于Jumpserver的堡垒机系统分享

操作记录及回溯

python | 资源管理必备之基于Jumpserver的堡垒机系统分享

 

 

参考:

  • Jumpserver官网

  • Paramiko使用教程

  • Guacamole原理介绍

  • 百度百科:堡垒机

  • Github

python | 资源管理必备之基于Jumpserver的堡垒机系统分享