本文来自JumpServer首席架构师董帅在运维派技术交流群上的分享
讲师介绍:
董帅: 互联网从业8年,曾打造多家电商以及金融公司技术产品,有丰富的系统安全经验,专注于系统架构设计,致力于推动自动化运维事业。
运维安全是企业安全保障的基石,不同于Web安全、移动安全或者业务安全,运维安全环节出现问题往往会比较严重。运维服务位于底层,涉及到服务器,网络设备,基础应用等,一旦出现安全问题,直接影响到服务器的安全。
安全上,又分为外在入侵风险和内在认为风险,我们往往致力于去努力保证防护外来入侵,但是内在的人为因素,也同样需要关注,否则,外部风险会籍此趁虚而入。同样,内部人员的误操作,未经授权的操作,同样会给企业带来不可预计的损失。
据国外统计,黑客只需要100小时的工作,便可以摧毁一个估值数百万美元的公司数年来的工作成果,运维的安全,本质上决定着企业的核心利益,不得不引起我们的重视.本次分享,从我们内部一些因素入手,去防范可能发生的安全风险。
这里,我们分享几个碰到过的小案例:
企业的运维过程中,不可避免的发生各种这样的因为人为发生的问题,无论是单打独斗还是运维成为了一个比较大的团队的时候。
最早的服务器管理方式,应该也是我们各位经常使用的方式,使用ssh工具保存session,有需要时通过session登录服务器即可。
优点:简单易操作
缺点:没有统一管理,无法留存记录,需要手动在服务器添加用户
使用一台机器作为跳板机,该跳板机上某用户(sa或dev或dba)和其它主机做好ssh互信,通过授权用户登录这台机器然后管理后面主机
优点:较为简单,可以简单实现记录
缺点:授权不好管理,需要使用工具在后面添加用户,审计记录过于简单
使用一台主机作为跳板机,可以添加用户,资产,授权等也就是我们传统意义上的跳板机。可以认证,授权和审计,提供了web terminal等,我们称之为跳板机1.0
优点:完成了认证,授权,审计功能,提供了额外的sftp等功能
缺点:不够灵活,跳板机独立存在,需要手动或者使用公司自动化运维工具在后端建立用户,使用不方便
将跳板机和CMDB,OPS组件打通,本身跳板机是需要cmdb和ops作为支撑,CMDB提供资产配置信息,OPS提供自动化推送用户等工作,使用websocket实现web terminal等,简言之 可以简单、方便、快捷、安全的管理用户的登录、授权、审计。我们称之为互联网跳板机,或者说跳板机2.0
优点:灵活,方便,自动,安全,扩展性好
缺点:需要整合资源(不过这个Jumpserver会帮你做了)
风险无处而不在,就像之前所说,安全意识一类的问题,很难进行控制,一方面,我们需要加强对运维人员的培训,提高安全人员的安全意识,另一方面,我们可以通过一些其他的手段,去规避一些因为运维带来的风险,这之中比较好的实践,就是 — 堡垒机
堡垒机是什么
堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、记录、分析、处理的一种技术手段。
为什么需要堡垒机
堡垒机能够拦截非法访问和恶意攻击,对不合法命令进行命令阻断,过滤掉所有对目标设备的非法访问行为,综合了运维管理和安全性的融合,切断了终端计算机对网络和服务器资源的直接访问,而由堡垒机作为中间件进行监控,在这之中,我们可以根据设置的规则,拦截大量非法操作以及不安全操作。
同时,因为对用户和后端服务器做了代理,用户不需要直接访问到后端服务器,用户就不需要接触服务器相关的核心安全信息,一定程度上保证了后端服务器信息不被泄露。
堡垒机可以建立完善的权限管理制度,能够将用户绑定到特定服务器,所有人员根据需要授权,最大程度减少越权导致的问题产生.
堡垒机的应用场景
Jumpserver是一款由python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能。基于ssh协议来管理,客户端无需安装agent。
支持常见系统:
1. CentOS, RedHat, Fedora, Amazon Linux
2. Debian
3. SUSE, Ubuntu
4. FreeBSD
5. 其他ssh协议硬件设备
特点:
* 完全开源,GPL授权
* Python编写,容易再次开发
* 实现了跳板机基本功能,认证、授权、审计
* 集成了Ansible,批量命令等
* 支持WebTerminal
* Bootstrap编写,界面美观
* 自动收集硬件信息
* 录像回放
* 命令搜索
* 实时监控
* 批量上传下载
WebTerminal:
Web批量执行命令
录像回放
跳转和批量命令
命令统计
老版本使用了 Django 1.6进行了开发,功能已经比较完整,经过团队讨论,我们决定让 jumpserver 向前跨一步,进行一次彻底的架构升级.
目前版本的系统,基本处于了一个高耦合状态,几乎所有组件互相调用,新版本,我们进行了彻底的解耦,根据功能重新划分了模块,新版本使用 flask框架 开发,每个模块拆分成独立的子系统:
新版本中,所有模块使用RPC进行通信,各个模块均可独立运行,方便了大规模时的分布式部署,并做到了组件可插拔的特性,使用我们官方提供的交互方式,可以很方便的定制自己的组件加入到系统中,与系统中现有组件进行协作,当然,你也可以很方便的替换我们的组件为你自己喜欢的组件.
JUMPSERVER支持从小到几台,多到几千台服务器的应用场景,目前已经被众多知名互联网厂商部署使用,也在不停收到各种各样的反馈,我们会努力,把产品做的更好.