JUMPSERVER-运维安全

分享人

董帅

JumpServer首席架构师

互联网从业8年,曾打造多家电商以及金融公司技术产品,有丰富的系统安全经验,专注于系统架构设计,致力于推动自动化运维事业。

目录

安全的杂谈

运维安全是企业安全保障的基石,不同于Web安全、移动安全或者业务安全,运维安全环节出现问题往往会比较严重。运维服务位于底层,涉及到服务器,网络设备,基础应用等,一旦出现安全问题,直接影响到服务器的安全.

安全上,又分为外在入侵风险和内在认为风险,我们往往致力于去努力保证防护外来入侵,但是内在的人为因素,也同样需要关注,否则,外部风险会籍此趁虚而入.同样,内部人员的误操作,未经授权的操作,同样会给企业带来不可预计的损失.

据国外统计,黑客只需要100小时的工作,便可以摧毁一个估值数百万美元的公司数年来的工作成果,运维的安全,本质上决定着企业的核心利益,不得不引起我们的重视.

本次分享,从我们内部一些因素入手,去防范可能发生的安全风险.

日常小案例

这里,我们分享几个碰到过的小案例:

  • 文件删除案例

这是一个比较经典的案例,被rm搞崩的服务器不在少数,在我之前的公司,人数不多,运维一两个,系统基本裸奔状态,业务混合状态,有一天,我们需要清空一个业务的历史缓存,看似简单的一件事情,最后因为疏忽,删除了缓存的上级目录,导致业务受到影响

  • 愤怒的运维

这个是前几年的一个事情,杭州一个比较有名的地方站,19楼, 忽然有一天被发现打不开,最后发现,因为和运维人员发生了比较大的冲突,该伙伴清空了所有服务器.

  • 进错门

当服务器数量多了之后,不可避免,要努力维护一个服务器信息的表,但总有失手的时候,之前,我们一直使用内部DNS进行机器映射,有一次,因为错误的DNS修改,导致DNS指向发生错误,导致直接导致脚本运行命令登录了错误的主机,对现有和新业务均造成很大的影响
企业的运维过程中,不可避免的发生各种这样的因为人为发生的问题,无论是单打独斗还是运维成为了一个比较大的团队的时候.

常见的服务器管理方式

最早服务器管理方式

最早的服务器管理方式,应该也是我们各位经常使用的方式,使用ssh工具保存session,有需要时通过session登录服务器即可。

优点:简单易操作

缺点:没有统一管理,无法留存记录,需要手动在服务器添加用户

进阶的管理方式

使用一台机器作为跳板机,该跳板机上某用户(sa或dev或dba)和其它主机做好ssh互信,通过授权用户登录这台机器然后管理后面主机

优点:较为简单,可以简单实现记录

缺点:授权不好管理,需要使用工具在后面添加用户,审计记录过于简单

更高级的管理方式

使用一台主机作为跳板机,可以添加用户,资产,授权等也就是我们传统意义上的跳板机。可以认证,授权和审计,提供了web terminal等,我们称之为跳板机1.0

优点:完成了认证,授权,审计功能,提供了额外的sftp等功能

缺点:不够灵活,跳板机独立存在,需要手动或者使用公司自动化运维工具在后端建立用户,使用不方便

面向未来的管理方式

将跳板机和CMDB,OPS组件打通,本身跳板机是需要cmdb和ops作为支撑,CMDB提供资产配置信息,OPS提供自动化推送用户等工作,使用websocket实现web terminal等,简言之 可以简单、方便、快捷、安全的管理用户的登录、授权、审计。我们称之为互联网跳板机,或者说跳板机2.0

优点:灵活,方便,自动,安全,扩展性好

缺点:需要整合资源(不过这个Jumpserver会帮你做了)

服务器管理需要注意的问题

  • 安全意识

听起来很空洞的东西,但是这并非一个不需要关注的一个问题,很多时候出现的安全问题,归根结底,是因为很多人并没有良好的安全意识,安全规范和标准可以落实到各个部门,以流程的方式强制执行。但是运维人员的安全意识受制于个人和体现,很难进行控制。

最简单的就是弱口令,各种系统的弱口令,后台的弱口令,服务的弱口令。这么多年了从来没有消失过,因为弱口令造成的损失,也没有减少过。

  • 运维人员的一些坏习惯

有的人喜欢在web目录直接压缩文件作为备份,这样,很容易被扫描到备份文件,备份文件一旦被下载,必然造成信息泄露.

很多时候,为了方便偷懒,很多人喜欢用web的形式下载服务器上的文件,经常使用 php -S 或者 python -m SimpleHTTPServer 开一个服务器进行文件的下载,更有甚者,会在根目录运行,这样,就彻底把服务器大白于天下,一旦被利用,后果不堪设想

有些人,在工作的过程中,产生了许许多多自己或者他人完成的自动化脚本,所以,很多时候,会在各种代码托管站中,上传自己的脚本,方便随时使用,脚本这东西,难免有敏感信息,不经意间,泄露了系统敏感信息.

如何保证服务器避免非外来的安全风险

风险无处而不在,就像之前所说,安全意识一类的问题,很难进行控制,一方面,我们需要加强对运维人员的培训,提高安全人员的安全意识,另一方面,我们可以通过一些其他的手段,去规避一些因为运维带来的风险,这之中比较好的实践,就是 — 堡垒机

堡垒机

堡垒机是什么

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

为什么需要堡垒机

堡垒机能够拦截非法访问和恶意攻击,对不合法命令进行命令阻断,过滤掉所有对目标设备的非法访问行为,综合了运维管理和安全性的融合,切断了终端计算机对网络和服务器资源的直接访问,而由堡垒机作为中间件进行监控,在这之中,我们可以根据设置的规则,拦截大量非法操作以及不安全操作.

同时,因为对用户和后端服务器做了代理,用户不需要直接访问到后端服务器,用户就不需要接触服务器相关的核心安全信息,一定程度上保证了后端服务器信息不被泄露.

堡垒机可以建立完善的权限管理制度,能够将用户绑定到特定服务器,所有人员根据需要授权,最大程度减少越权导致的问题产生.

堡垒机的应用场景

  • 集中帐号管理,提高管理效率
  • 集中认证与访问控制,提高运维的安全度
  • 集中授权,安全审计,降低运维风险
  • 精细化服务器资源与用户管理,防止越权操作产生

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

WebTerminal:

webterminal

录像回放

录像

跳转和批量命令

跳转

命令统计

跳转

新版本设计

老版本使用了 Django 1.6进行了开发,功能已经比较完整,经过团队讨论,我们决定让jumpserver向前跨一步,进行一次彻底的架构升级.

目前版本的系统,基本处于了一个高耦合状态,几乎所有组件互相调用,新版本,我们进行了彻底的解耦,根据功能重新划分了模块,新版本使用 flask框架 开发,每个模块拆分成独立的子系统:

  • core 核心组件,处理整个系统的各种基础事务
  • web 用户界面,使用AngularJS进行开发,实现了钱后端分离
  • cmdb 资产管理,用于后端设备的管理
  • perm 服务器权限管理,用于管理操作后端服务器权限的控制
  • audit 审计管理, 用于监控审计
  • terminal 终端模块,为用户和后端资源做代理,并提供websocket
  • ops 自动化运维模块,增加了产品的自动运维能力 新版本中,所有模块使用RPC进行通信,各个模块均可独立运行,方便了大规模时的分布式部署,并做到了组件可插拔的特性,使用我们官方提供的交互方式,可以很方便的定制自己的组件加入到系统中,与系统中现有组件进行协作,当然,你也可以很方便的替换我们的组件为你自己喜欢的组件.

应用案例

JUMPSERVER支持从小到几台,多到几千台服务器的应用场景,目前已经被众多知名互联网厂商部署使用,也在不停收到各种各样的反馈,我们会努力,把产品做的更好.

以下是采用和部署JUMPSERVER的部分企业(无排名因素):

点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注