paramiko模块打造公司内部堡垒机系统

简介:

  新年第一篇文章,很久没有更新博客了,今天梳理一下近期开发的堡垒机系统设计思路,公司内部已经开始上线使用,由于细节部分不具备通用性,后续会做成开源版本,这里仅将系统设计思路做一个展示,与大家共同探讨。

一、项目由来

  由于公司是上市公司,所以对Linux系统权限部分要求非常严格,每半年都需要经过美国的SOX合规法案审计,因此公司采用了一套商用的堡垒机解决方案,个人账号通过动态key口令登陆系统,然后再选择需要登陆的服务器即可,流程非常简单,有完善的权限控制、日志审计等功能,由于公司审计、流程等原因,这套系统是不能被更换的,商用的优点当然不用说了,相对完善的功能、运行稳定等,更重要的是,它承担了系统权限的使用风险,如果因为堡垒机系统造成的系统损失,那么它一定是需要承担一定责任的,但是缺点也同样存在,例如某一个研发人员要申请系统只读权限,那么运维人员就需要登陆堡垒机后台,配置该研发的登陆名、登陆主机IP、分配相应的权限等等,如果个别需求还好,但是上千人的研发团队,每天都有那么一波人来申请权限的话,我相信没人愿意每天干这活,而且商业堡垒机为了赚钱,它也是会限制连接数的,比如仅允许一台堡垒机同时登陆2000人,如果不够了,就需要购买session,面对现在的不利因素,所以决定在该商用堡垒机下,再搭建一台内部堡垒机系统。

  并不是所有的IT人员都使用内部堡垒机,运维人员相对稳定,不需要频繁的配置权限,因此使用商用堡垒机即可,对于研发人员,权限变更频繁、新增申请频繁,因此使用内部堡垒机系统,下面来重点介绍一下系统的使用流程。

二、系统架构图

wKioL1aKG2OCA-lYAALoRLC54Bc004.jpg

三、流程详解

  登陆内部堡垒机首先需要登陆商用堡垒机,虽然内部堡垒机也有命令审计功能,但是由于开始介绍的原因,因此必须要经过商用堡垒机,这样操作命令等信息也会被同步记录到商用堡垒机,供SOX审计使用,下面按步骤介绍内部堡垒机的使用流程。

1、申请权限,Leader审批

  研发Leader做为审批成员,这样就解决了运维人员枯燥的操作,同时每个研发人员仅能够申请自己负责的应用服务器权限,这部分信息通过公共接口获取,下图为系统查询结果。

wKioL1aKGo-hyJE-AAQ2fM-R60k332.jpg  

  查询结果显示了自己可以申请的服务器,那么只需要勾选需要登陆的服务器,点击批量申请即可,这里权限最多仅为3天

2、Leader接收审批邮件

  研发所申请应用的Leader,会收到系统发送的邮件通知,询问是否审批通过,如下图所示。

wKiom1aKGoayC0QqAAHMvmU-HKQ413.jpg

3、审核通过,登陆系统

  此处为重点,之前我们说过每个研发的登陆权限,需要运维人员来配置,那么这里就不需要了,商用堡垒机为所有研发人员开放一个公用的只读账号,并且登陆后跳转到我们的Linux主机,然后运行内部堡垒机系统,此时用户再输入自己内部的账号口令即可,系统会在数据库中查出他之前所申请的权限,通过输入相应的IP序号即可登陆系统。

wKioL1aKGuzzABtKAAL7C32MQyU094.jpg

4、后台实时监控、日志审计

  用户登陆的情况均能够通过后台监控系统查询到,例如当前在线用户、执行命令、也同样可以踢出该用户等等,如下图所示。

wKiom1aKGuqQCKEvAAaMPg9tfgg395.jpg

wKiom1aKGu7BGI48AAK5dPtvSTw823.jpg

四、Paramiko模块

  系统开发采用 Python+Django 框架,SSH功能采用python的Paramiko模块,其中用户登陆、密码验证均使用该模块完成,使用该模块的最大作用也是他的命令读取功能,使用paramiko模块封装一个SSH工具后,即可登陆Linux系统,由于采用字符实时发送与读取,所以使得终端看起来非常像我们直接用系统的SSH命令直接连接到远程服务器,因为每个字符都可以抓取,所以我们做命令审计也就很简单了,这是一个强大的模块。

  但有优势就一定有劣势,虽然我们通过paramiko获取到了用户实时输入的数据,但这毕竟是一个中间层,数据在传输过程中难免会遇到问题,比如复制粘贴、上下左右键支持的就不够友好,导致在less命令查看日志时无法准确的翻页定位,这也是目前遇到的一些问题。

写在最后

  内部堡垒机释放了运维人员的频繁操作,申请、审批等流程全部由研发团队独立完成,而且自己的系统就没有session数量限制了,也为公司节省了费用成本,目前正在将之前在商用堡垒机的研发用户,逐渐迁移到内部堡垒机上。

  整个系统并没有采用复杂的架构,也没有很深入的技术,功能层仅通过python的paramiko模块来完成,申请、审计等等通过框架来实现,后续会将该系统开源出来,做一个相对具备通用性的版本。



     本文转自阿布ve 51CTO博客,原文链接:http://blog.51cto.com/abuve/1731358,如需转载请自行联系原作者






相关文章
|
6月前
|
运维 安全 Linux
实现远程访问Linux堡垒机:通过JumpServer系统进行安全的服务器管理
实现远程访问Linux堡垒机:通过JumpServer系统进行安全的服务器管理
|
6月前
|
存储 运维 监控
特权账号管理系统(PAM)同堡垒机一样吗
重要介绍特权账号管理系统和堡垒机是两个不同的观念
89 0
特权账号管理系统(PAM)同堡垒机一样吗
|
7月前
|
运维 监控 安全
网络安全设备-认识运维安全管理与审计系统(堡垒机)
运维安全管理与审计系统(俗称 “堡垒机”):是采用新一代智能运维技术框架,基于认证、授权、访问、审计的管理流程设计理念,实现对企事业IT中心的网络设备、数据库、安全设备、主机系统、中间件等资源统一运维管理和审计;通过集中化运维管控、运维过程实时监管、运维访问合规性控制、运维过程图形化审计等功能,为企事业IT中心运维构建一套事前预防、事中监控、事后审计完善的安全管理体系。
559 0
|
11月前
|
Linux 网络安全
Linux系统之部署teleport堡垒机平台
Linux系统之部署teleport堡垒机平台
437 2
|
运维
H3C运维审计系统-堡垒机 安装手册(笔记)
1、物理安装,略过 2、PC与直连admin接口,浏览器登陆192.168.0.1,admin/admin 3、系统配置->网络配置:web访问配置 4、console口方式配置(SecureCRT):端口COMx 波特率115200 数据位8 奇偶校...
3108 0
|
移动开发 网络安全 数据库
paramiko 堡垒机
用paramiko写堡垒机 paramiko paramiko模块,基于SSH用于连接远程服务器并执行相关操作。 基本用法 SSHClient 基于用户名密码连接: 基础用法: import paramiko # 创建SSH对象 ssh = paramiko.
1569 0
|
9月前
|
运维 安全 Linux
Jumpserver堡垒机部署和基本使用
Jumpserver堡垒机部署和基本使用
580 2
|
1月前
|
运维 安全 Linux
如何在Linux部署JumpServer堡垒机并实现远程访问本地服务
如何在Linux部署JumpServer堡垒机并实现远程访问本地服务