39

爱奇艺海量服务器安全运维平台 (堡垒机) 建设

 5 years ago
source link: https://www.secrss.com/articles/9253?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

堡垒机是集帐号管理、授权管理、认证管理和综合审计于一体的IT基础设施。它为企业提供统一框架,整合网络设备、主机系统、应用系统,具备强大的安全审计功能和防御功能。

爱奇艺堡垒机分为Web端和Client端两部分。Client端包括登录模块、管理模块和审计模块;Web端包括作业平台、服务器管理模块、发布模块等。爱奇艺堡垒机当前服务于数千用户、数万服务器,数十万授权列表。

v6RVBnb.png!web

爱奇艺堡垒机架构图

JniqEjR.png!web

堡垒机简易流程图

01 单点登录

1.1登录入口

爱奇艺堡垒机支持SSH/SFTP/RDP/VNC等协议:SSH协议基于sshd实现;SFTP协议依赖Paramiko实现;RDP/VNC远程桌面协议依赖开源软件Guacamole实现,用户通过web访问。

1.2账号管理

账号 创建 : 管理员根据部门或者项目申请堡垒机;用户登录堡垒机Web端上传公钥,即完成堡垒机账号创建,随后可使用终端登录堡垒机Client端。

账号 销毁 : 人员离职或异动,堡垒机会定时清除该员工账号以及授权列表

j63YV3n.png!web

1.3用户组管理

爱奇艺堡垒机支持类似Linux下用户组的概念。管理员创建一个用户组,为其授权若干服务器后;当管理员再向这个组中添加用户时,该用户自动拥有了组用户对应的授权。

1.4登录方式

为提升用户登录体验,我们支持了3种登录方式:

  1. Tab补全,输入备注或IP登录

  2. 输入序号后登录

  3. 传入环境变量登

    NrmMNj7.png!web

1.5KeyLess方案

爱奇艺堡垒机实现了KeyLess方案:在该方案中,堡垒机登录服务器时使用的私钥,将不会落到磁盘,而是通过Redis和MySQL数据库将已加密的服务器私钥加载到内存中,使用后立即销毁,减小私钥泄漏的风险,增强每一次访问的可审计性。

rU7f6vI.png!web

在降低私钥泄漏风险的同时,还需要保证服务的高可用。堡垒机所在机房必须配备2个Redis和MySQL的只读实例,降低堡垒机Client端依赖单点数据库的风险。即使机房之间专线故障,用户也可使用备用域名访问堡垒机服务;当某一个只读实例宕机后,也不影响堡垒机服务稳定。

在极端情形下,若同机房的两个只读实例同时宕机,堡垒机在读取MySQL超时两秒后,会尝试转移连接其他机房的数据库;当读取Redis中服务器列表失败后,会自动降级为用户手动输入服务器IP和用户名。

1.6二次认证

主动:堡垒机管理员可在服务器授权时,设置需要二次认证的间隔时间,分为四个级别:

  1. 每次登录服务器时输入MOTP

  2. 每4小时输入一次MOTP

  3. 每8小时输入一次MOTP

  4. 每12小时输入一次MOTP

BjANVzm.png!web

被动:堡垒机通过关联分析用户行为,发现异常登录和操作时,Client端主动要求用户输入MOTP,进行二次身份验证。

02 访问/授权控制

2.1服务器管理

主动:用户可通过堡垒机Web端添加Owner为自己的服务器到所属部门堡垒机

被动:堡垒机Web端对接了爱奇艺服务器管理平台,用户申请的服务器被创建后,将通过接口自动添加到指定的堡垒机

2.2服务器授权

主动:管理员将服务器分组、用户分组,按照服务器组-用户,服务器-用户,服务器-用户组,服务器组-用户组的方式授权

被动:用户通过“运维申请”功能,申请服务器或者服务器组,管理员审批通过即获得服务器权限

2.3登录列表同步

登录列表同步是堡垒机的核心模块:如果同步功能有问题,用户登录列表会不一致,需要登录的服务器可能不在列表中,非常影响用户体验,让用户觉得堡垒机不够稳定。为了保证登录列表一致性,堡垒机client端采用了三种同步方式:

  1. Docker启动时全量同步,耗时大约5分钟(数十万条授权)

  2. 新增同步,通过Web接口获取最近15s新增授权

  3. 为了避免用户新增和删除授权后,引起登录列表差异,每两小时执行一次差异同步(通过缓存用户列表数和用户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 之前自定义认证方式

ayMvaeM.png!web

大文件传输:

堡垒机还集成了“爱奇艺文件快传服务”,添加审计模块,中转用户传输的文件,平均速度可达50M/S。

04 基线规则

堡垒机支持安全基线规则集,堡垒机管理员可以定制基线规则,并应用到所属的堡垒机中,Client端通过同步程序,同步基线规则,用户操作服务器时触发规则,会执行设定动作。

安全规则包含多个条件组成,支持and, or, not, 左括号(, 右括号)操作符,例如: (条件0 or 条件1) and (not 条件2);条件可以是多个维度(当前用户名,目录,输入命令,端口等)的正则匹配

636j22j.png!web

MJNnmeE.png!web

uuMnea2.png!web

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的同时,也要尽量保证用户体验。

  1. 用户体验:爱奇艺堡垒机支持多种登录方式,支持大文件快速传输,支持IDE通过SFTP连接服务器开发

  2. 运维管理:堡垒机拥有一套完善的认证,授权系统;相比于商业堡垒机更轻量级,可定制化,支持更多的服务器运维操作

  3. 安全合规:堡垒机支持主被动式二次认证;支持基线规则检查,可异常弹窗和阻断用户操作;采用机器学习识别异常登录,账号共用;以及合规检查的日志查询系统

  4. 创新探索:堡垒机支持KeyLess方案;集成作业平台,可定时,批量执行运维脚本

作者:sol0king

声明:本文来自爱奇艺安全应急响应中心,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如需转载,请联系原作者获取授权。


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK