本文作者:sol0king,首发自爱奇艺安全应急响应中心,士冗科技转载。
堡垒机是集帐号管理、授权管理、认证管理和综合审计于一体的IT基础设施。它为企业提供统一框架,整合网络设备、主机系统、应用系统,具备强大的安全审计功能和防御功能。
爱奇艺堡垒机分为Web端和Client端两部分。Client端包括登录模块、管理模块和审计模块;Web端包括作业平台、服务器管理模块、发布模块等。爱奇艺堡垒机当前服务于数千用户、数万服务器,数十万授权列表。
爱奇艺堡垒机架构图
堡垒机简易流程图
01 单点登录
1.1登录入口
爱奇艺堡垒机支持SSH/SFTP/RDP/VNC等协议:SSH协议基于sshd实现;SFTP协议依赖Paramiko实现;RDP/VNC远程桌面协议依赖开源软件Guacamole实现,用户通过web访问。
1.2账号管理
账号创建:管理员根据部门或者项目申请堡垒机;用户登录堡垒机Web端上传公钥,即完成堡垒机账号创建,随后可使用终端登录堡垒机Client端。
账号销毁:人员离职或异动,堡垒机会定时清除该员工账号以及授权列表
1.3用户组管理
爱奇艺堡垒机支持类似Linux下用户组的概念。管理员创建一个用户组,为其授权若干服务器后;当管理员再向这个组中添加用户时,该用户自动拥有了组用户对应的授权。
1.4登录方式
为提升用户登录体验,我们支持了3种登录方式:
-
Tab补全,输入备注或IP登录
-
输入序号后登录
-
传入环境变量登
1.5KeyLess方案
爱奇艺堡垒机实现了KeyLess方案:在该方案中,堡垒机登录服务器时使用的私钥,将不会落到磁盘,而是通过Redis和MySQL数据库将已加密的服务器私钥加载到内存中,使用后立即销毁,减小私钥泄漏的风险,增强每一次访问的可审计性。
在降低私钥泄漏风险的同时,还需要保证服务的高可用。堡垒机所在机房必须配备2个Redis和MySQL的只读实例,降低堡垒机Client端依赖单点数据库的风险。即使机房之间专线故障,用户也可使用备用域名访问堡垒机服务;当某一个只读实例宕机后,也不影响堡垒机服务稳定。
在极端情形下,若同机房的两个只读实例同时宕机,堡垒机在读取MySQL超时两秒后,会尝试转移连接其他机房的数据库;当读取Redis中服务器列表失败后,会自动降级为用户手动输入服务器IP和用户名。
1.6二次认证
主动:堡垒机管理员可在服务器授权时,设置需要二次认证的间隔时间,分为四个级别:
-
每次登录服务器时输入MOTP
-
每4小时输入一次MOTP
-
每8小时输入一次MOTP
-
每12小时输入一次MOTP
被动:堡垒机通过关联分析用户行为,发现异常登录和操作时,Client端主动要求用户输入MOTP,进行二次身份验证。
02 访问/授权控制
2.1服务器管理
主动:用户可通过堡垒机Web端添加Owner为自己的服务器到所属部门堡垒机
被动:堡垒机Web端对接了爱奇艺服务器管理平台,用户申请的服务器被创建后,将通过接口自动添加到指定的堡垒机
2.2服务器授权
主动:管理员将服务器分组、用户分组,按照服务器组-用户,服务器-用户,服务器-用户组,服务器组-用户组的方式授权
被动:用户通过“运维申请”功能,申请服务器或者服务器组,管理员审批通过即获得服务器权限
2.3登录列表同步
登录列表同步是堡垒机的核心模块:如果同步功能有问题,用户登录列表会不一致,需要登录的服务器可能不在列表中,非常影响用户体验,让用户觉得堡垒机不够稳定。为了保证登录列表一致性,堡垒机client端采用了三种同步方式:
-
Docker启动时全量同步,耗时大约5分钟(数十万条授权)
-
新增同步,通过Web接口获取最近15s新增授权
-
为了避免用户新增和删除授权后,引起登录列表差异,每两小时执行一次差异同步(通过缓存用户列表数和用户redis中列表数比较,如果存在差异,通过Web接口获取最新的该用户的登录列表,并更新缓存)
2.4SSH-Agent
堡垒机支持SSH-Agent功能,授权时可选择是否开启该功能。SSH-Agent可以将堡垒机上的私钥加载到内存传递到用户登录的服务器,极大的方便用户批量操作服务器。SSH-Agent也会带来一些麻烦,例如通过git pull抓取代码的时候
03 文件传输
SFTP文件传输:堡垒机Client端使用Paramiko实现SFTP服务,支持各种常见SFTP客户端,上传数据可审计。同时,用户还可以使用IDE工具SFTP连接到服务器,直接在服务器上进行开发和调试。由于堡垒机带宽和Paramiko性能等问题,SFTP传输速度5-8M/s。
通过重构paramiko.ServerInterface.check_auth_publickey(),可以在
return paramiko.AUTH_SUCCESSFUL 之前自定义认证方式
大文件传输:
堡垒机还集成了“爱奇艺文件快传服务”,添加审计模块,中转用户传输的文件,平均速度可达50M/S。
04 基线规则
堡垒机支持安全基线规则集,堡垒机管理员可以定制基线规则,并应用到所属的堡垒机中,Client端通过同步程序,同步基线规则,用户操作服务器时触发规则,会执行设定动作。
安全规则包含多个条件组成,支持and, or, not, 左括号(, 右括号)操作符,例如: (条件0 or 条件1) and (not 条件2);条件可以是多个维度(当前用户名,目录,输入命令,端口等)的正则匹配
05 审计
5.1会话审计
用户登录堡垒机Client端会创建一条Session Log,Session Log关联事件日志,方便关联审计
5.2事件审计
用户每次操作都会记录一条日志,记录用户命令输入和输出,当前操作堡垒机,当前主机名,当前用户名等信息
5.3远程堡垒机日志审计
VNC和RDP协议通过web访问记录录屏日志,堡垒机将文本日志转码为mp4文件,视频进度可拖拽
5.4公钥审计
堡垒机联动HIDS,通过HIDS搜集服务器公钥与堡垒机报备公钥对比,发现异常公钥并邮件报警
5.5日志存储
堡垒机日志存储两份:一份按照时间段分表存储数据库,用于堡垒机Web端事件审计查询;一份存储到Hadoop,方便内审通过关联分析发现违规操作。另外,堡垒机日志已接入爱奇艺区块链系统,确保日志完整、无法被篡改。
06 堡垒机作业平台
6.1Web端批量操作
-
用户设置运维脚本,脚本分为私有和公有,私有自己可见,公有所有人可见
-
脚本安全性评估
-
选择需要执行脚本的服务器,否周期执行
-
执行结果写入数据库,审计
-
管理员限制账号执行运维脚本
6.2用户定制命令 – 执行脚本(类似alias)
在基线规则的基础上,增加执行动作脚本。用户输入命令触发设定条件,执行指定脚本文件。例如:定制一条输入命令为 fileupload ansible规则,动作是执行ansible脚本,当用户输入fileupload ansible这个命令时堡垒机client 端会自动执行ansible脚本
07 总结
堡垒机作为办公网到IDC的第一道屏障,服务器运维入口,在保证4A的同时,也要尽量保证用户体验。
-
用户体验:爱奇艺堡垒机支持多种登录方式,支持大文件快速传输,支持IDE通过SFTP连接服务器开发
-
运维管理:堡垒机拥有一套完善的认证,授权系统;相比于商业堡垒机更轻量级,可定制化,支持更多的服务器运维操作
-
安全合规:堡垒机支持主被动式二次认证;支持基线规则检查,可异常弹窗和阻断用户操作;采用机器学习识别异常登录,账号共用;以及合规检查的日志查询系统
-
创新探索:堡垒机支持KeyLess方案;集成作业平台,可定时,批量执行运维脚本
关注“爱奇艺安全应急响应中心”公众号
声明:本文来自爱奇艺安全应急响应中心,版权归作者所有。文章内容仅代表作者独立观点,不代表士冗科技立场,转载目的在于传递更多信息。如有侵权,请联系 service@expshell.com。