尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

6TB中转站日志泄露SSH密钥与云凭证:企业安全管理的系统性失误

6TB中转站日志泄露SSH密钥与云凭证:企业安全管理的系统性失误 一条关于安全研究人员购得6TB中转站日志、内含多家企业真实SSH密钥与云凭证的消息在圈子里传得很快。很多人第一反应是又有企业要倒霉了但作为常年跟基础设施安全打交道的人我看到这条消息时心里想的却是另一件事这类数据为什么会出现在中转站中转站日志里出现SSH密钥和云凭证到底意味着什么先说结论这不是一次简单的数据泄露而是把很多企业内部安全管理的底裤直接扯了下来。SSH密钥和云凭证不是普通数据它们是进入企业核心系统的钥匙。一把钥匙出现在不该出现的地方说明这把钥匙的整个生命周期早就失控了。这篇文章我就从安全从业者的视角把这件事拆开揉碎聊清楚这类数据是怎么流出去的、会造成什么后果、企业该怎么自查、以及从根上怎么堵住漏洞。这篇文章适合三类人看一是企业的运维和安全负责人需要评估自己有没有类似风险二是研发和DevOps工程师看看自己的日常操作有没有在无意间扔钥匙三是刚入行安全领域的朋友这是一份很典型的真实案例教材。1. 一条6TB的日志撕开了基础设施安全的遮羞布1.1 中转站日志到底是什么先把这个概念说清楚。中转站对外行来说可能有点陌生但在网络安全领域它指的是那些临时存储和转发数据的服务器或服务节点。攻击者在渗透过程中经常利用这类节点做数据中转——把从目标系统里窃取的数据先传到中转站再从那里转移到攻击者自己的存储里。这么做的目的很简单切断受害者和攻击者之间的直接联系让溯源难度加大。但这次有意思的点在于被曝光的不是某个受害企业的数据库而是中转站本身的日志。这意味着什么意味着攻击者的基础设施也被抄了家。安全研究人员拿到的不只是某一家的数据而是很多企业数据的集散记录。这就好比警察端掉了一个赃物中转仓库仓库里的账本上密密麻麻记着哪些东西来自哪些人家。中转站日志里通常包含几类信息传输记录、连接来源IP、目标地址、传输文件的元数据、偶尔还会有操作这台中转站的运维痕迹。而在这6TB的日志里安全研究人员发现了更致命的东西——企业真实的SSH密钥和云服务凭证。1.2 SSH密钥和云凭证为什么会出现在日志里SSH密钥是运维人员登录服务器的凭证云凭证是调用云服务API的身份凭证。这两样东西出现在中转站日志里大致有几种可能第一种可能是攻击者在渗透过程中从受害企业的服务器或代码仓库里窃取了这些凭证文件然后把它们当作战利品集中存放在中转站上准备日后复用。这种情况下中转站日志会记录这些文件的传输过程而文件内容本身可能被独立存储。第二种可能是企业的应用或脚本在运行时把包含密钥或凭证的信息输出到了日志里而这些日志又被攻击者拖走并转存到中转站。这种情况听起来更离谱但在真实世界里非常常见——我见过太多应用把数据库连接串、甚至是私钥内容直接打印在日志里的案例。第三种可能是企业内部的某些自动化流程本身就在调用中转站类的服务做数据同步而同步的数据里恰好包含了未加密的配置文件和凭证。无论哪种可能核心问题只有一个这些企业的SSH密钥和云凭证以一种随时可以被读取和复用的形态离开了企业的安全边界。这才是最要命的。1.3 这批数据的真正危险之处看到6TB这个数字很多人可能觉得量大是主要问题。但以我做安全审计的经验来看数量从来不是关键关键是数据的精确度和可用度。被盗的SSH密钥意味着什么它意味着攻击者不需要破解密码不需要绕过堡垒机只要找到这个密钥对应的服务器IP就可以直接以合法用户的身份登录进去。云凭证更严重尤其是AccessKey这类长期凭证一旦泄露攻击者就可以通过API调用云服务创建虚拟机、读取对象存储里的数据、篡改DNS解析、甚至克隆整个云环境。小米、蔚来这类企业被点名是因为它们作为知名企业资产规模大、业务系统多一旦凭证被滥用损失是不可估量的。但说实话这类事件没有企业大小之分——任何一家企业只要把密钥和管理员凭证弄丢了都等于把家门钥匙交给了陌生人区别只是家里值钱东西多少而已。还有一个被很多人忽略的问题中转站日志是6TB说明攻击者运营这个基础设施已经有相当一段时间了积累了大量企业的敏感信息。这意味着这些企业的凭证泄露可能不是最近才发生的而是已经存在了几个月甚至更久。时间越长风险越高因为在这段时间里攻击者完全可能已经在利用这些密钥做某些低噪音的操作——比如定期读取某个数据库、偶尔登录一两台服务器查看内部结构。这些操作不会触发告警但日积月累受害企业的核心资产早就被摸了个透。2. 密钥和凭证泄露的常见路径这不是巧合而是系统性失误2.1 最经典的坑密钥被提交进代码仓库我跟很多企业的安全团队聊过大家公认的头号泄露源头就是代码仓库。开发人员为了方便部署把.env文件、配置目录甚至直接硬编码的密钥提交到了Git仓库里。这操作我见得实在太多了。Git有个特性让这个问题变得尤其棘手就算你在后续的提交里删掉了包含密钥的文件历史记录里依然保留着它。任何人只要有权访问这个仓库甚至仓库被设为公开就可以在提交历史里翻出那些密钥。很多企业处理这个问题的流程是发现了就删删完就以为安全了但完全没用——只要密钥曾经进过版本库就应该默认它已经泄露必须立即轮换。更隐蔽的路径是通过第三方组件。现在的项目大量依赖开源软件包而有些恶意或失陷的依赖包会在安装时读取环境变量、读取本地配置文件把里面的密钥信息悄悄发送到指定服务器。这类供应链攻击在近几年增长非常快。你什么都没做错就因为拉了一个依赖包本机的凭证就飞出去了。2.2 CI/CD 流水线日志里的隐私裸奔相比代码仓库CI/CD流水线日志的泄露问题在我看来说得更少但发生概率更高。典型的场景是这样的流水线在构建过程中需要连接服务器或推送镜像这时候就需要用到SSH私钥或云凭证。很多团队的流水线配置里把凭证作为环境变量传入构建环境然后在执行脚本时把这些变量打印到了日志里。更夸张的有人在脚本里写了类似cat ~/.ssh/id_rsa的调试命令部署完没删于是每次构建都会把私钥内容打到日志面板上。还有一种常见场景是构建产物里带出了凭证。Docker镜像就是个重灾区。构建镜像时执行了ADD命令把配置目录复制进去或者设置了包含密钥的环境变量结果镜像被推到公共仓库或者企业内部共享仓库任何能拉取镜像的人都能从镜像分层里提取出密钥文件。中转站日志里出现企业真实的SSH密钥和云凭证从时间线来推断很可能就是某个企业的构建日志被攻击者拖走后集中汇总的。毕竟流水线日志里不仅包含凭证还包含完整的代码路径、服务器地址、内网网段等大量敏感元数据这对攻击者来说等于是白送的地图。2.3 文件传输与协作工具的顺手牵羊还有一条特别容易忽略的路径就是内部员工使用不安全的文件传输工具。很多企业内部的运维人员习惯用各种网盘、云笔记、在线文档来记录服务器信息、粘贴配置文件内容。这些工具方便是方便但权限管理往往稀松。一个员工离职后他的账号如果没有被及时禁用那么他曾经分享过的含密钥文档就依然可以被访问。更有甚者一些云笔记工具的默认分享链接是知道链接就能看一旦链接被搜索引擎收录或者被爬虫抓取内容就直接裸奔到公网了。还有一类是堡垒机和跳板机的操作日志。一些企业的堡垒机配置不当会把运维人员的操作录屏、输入的命令、甚至通过SFTP传输的文件内容记录下来但这些日志又缺少严格的访问控制。内网里一台机器被攻破后攻击者第一件事就是找这类运维日志——从中可以提取出大量的密码、密钥和敏感路径。所以围观的这些数据源实际上为攻击者提供了另一条稳定的凭证获取通道。2.4 员工终端最薄弱的最后一公里说到员工终端的泄露很多人会想到钓鱼和木马但更普遍的其实是备份和同步习惯导致的。我处理过一个真实的案例某员工为了在家办公方便把公司的SSH密钥打包成了zip文件上传到了个人的网盘。结果网盘账号密码和其他平台撞库整个压缩包就被脱走了。我们事后追溯时发现那把私钥对应的服务器上没有任何异常登录记录——这更让人后怕说明攻击者拿到钥匙后一直在潜伏等着合适的时机。另外开发者的本地环境也常常是脏乱差的重灾区。~/.ssh目录里堆了几十把历史遗留的私钥不知道对应哪台服务器~/.aws/credentials里存着好几个账号的AccessKey有些是好几年前的老账号权限设置还贼大管理员权限。这类僵尸凭证一旦泄露排查起来非常痛苦因为你根本不知道哪把钥匙对应哪个门。3. 拿到静默凭证之后攻击者会做什么从一次登录到全面沦陷3.1 第一阶段身份验证与资产测绘很多人对凭证泄露的危害没有具象认知总觉得就算拿到密码不是还有防火墙吗服务器不是有白名单吗。我一向很反感这种侥幸心理。攻击者拿到一把企业真实的SSH密钥之后首先做的事情一定是资产测绘。他们会拿着公网IP库去批量匹配或者用这把密钥尝试登录企业暴露在公网上的所有服务器。这个过程完全自动化进行速度极快。一旦发现某台服务器可以登录攻击者不会急着搞破坏而是会先确认这台服务器的角色——是应用服务器、数据库服务器、还是管理跳板机。云凭证的操作逻辑也类似。攻击者拿到AccessKey之后会先调用GetCallerIdentity之类的接口确认这个凭证的身份和权限范围然后列举这个账号下的所有资源ECS实例、RDS数据库、OSS存储桶、RAM用户、安全组规则。这一步做完你的云上资产布局在攻击者眼里已经是透明的了。3.2 第二阶段横向移动与权限提升确认资产之后接下来就是横向移动。这一步最考验企业内网的纵深防御能力但现实中绝大多数企业内部网络都是薄饼结构——服务器之间没有严格隔离一台机器沦陷后攻击者可以从这台机器跳到任何相邻机器。在这个过程中SSH密钥的价值会进一步放大。很多人有一个坏习惯为了防止忘记密码在一台服务器上配置了到所有其他服务器的免密登录。这把万能钥匙一旦被攻击者拿到整个集群就变成了一个门全开的大房间。攻击者用第一台机器作为跳板扫描内网网段用同一把密钥批量尝试登录成功率往往高得吓人。云环境里的横向移动则体现在利用RAM角色和临时凭证上。很多应用在设计时会为ECS实例绑定一个RAM角色而攻击者在拿到实例控制权后可以直接通过实例元数据服务获取这个角色的临时凭证。如果这个角色权限设置过大——比如绑定了管理员策略——那攻击者就直接用云平台的身份体系完成了权限提升。3.3 第三阶段持久化与数据窃取到了第三阶段事情就变得非常难收拾了。攻击者会在你的系统里埋几个持久化后门常见手段包括修改SSH配置让特定密钥可以反复登录、在服务器上种一个计划任务来保持通信、在云平台的访问控制里偷偷添加一个隐藏用户。这个阶段最危险的地方在于攻击者的操作会刻意保持低姿态。他们不删数据、不改配置、不引起告警每天的流量也就几兆。你可能觉得一切正常但攻击者已经把你最核心的数据一点点往外搬了。等到你发现自己已经被搬空时可能已经是几周甚至几个月之后了。中转站日志在这个阶段扮演的角色就是攻击者的数据集装箱。受害企业的数据库备份、源代码压缩包、敏感配置文件会被分批次上传到中转站然后定期转走。这个过程会留下大量的连接元数据——也就是这次被安全研究人员拿到的那些日志记录。4. 企业收到泄露通报后该如何自查别慌分步来4.1 第一步确认影响范围别急着删东西如果你的企业收到类似密钥出现在泄露数据中的通报第一反应千万别是立刻登录服务器把所有密钥都改了。虽然凭证轮换是对的但更关键的是先搞清楚问题的全貌——不改的话也许能借此跟踪攻击者的行为改了反而打草惊蛇。我建议的做法是先冻结相关的访问通道但不是全员通知。由核心安全人员成立临时小组梳理这些被泄露的密钥和凭证具体对应哪些系统、哪些账号、哪些人有权限使用。同时保留相关服务器的登录日志和云API调用记录后续审计要用。这里有个很实用的记录方法你可以把疑似泄露的SSH公钥的指纹列出来然后在所有服务器的authorized_keys文件里做一次全量匹配找出所有安装了这把公钥的主机。云凭证也一样在云平台的RAM控制台里查看这些AccessKey的最后使用时间和使用记录来判断是否已经被恶意调用。4.2 第二步日志审计与异常行为回溯接下来要做的是回溯攻击者的行为轨迹。这一步需要细心但逻辑很清晰既然密钥已经在外面了那攻击者大概率已经用过了。你要找的就是那些不属于正常操作的登录和调用。SSH层面重点查看目标服务器的/var/log/secure或/var/log/auth.log筛选认证成功的记录比对这些登录时间是否对应正常运维时间、来源IP是否在预期范围内。特别注意那些深夜凌晨的登录、来自异常地理位置的登录、以及同一个IP对多台服务器的连续登录。云平台层面在云审计服务里拉取涉及你凭证的API调用记录。重点看几类高危操作创建或修改RAM用户、创建AccessKey、修改安全组规则、导出RDS备份、创建新的ECS实例、调用对象存储的批量下载接口。这些操作的任何一条都值得高度警惕。4.3 第三步轮换凭证与阻断会话确认影响范围后凭证轮换必须立即执行。SSH密钥的轮换流程分几步走生成新的密钥对通过安全通道堡垒机或带外管理把新公钥分发到服务器确认新密钥可登录后从authorized_keys中移除旧公钥。顺序不能乱——先发新钥、再登录测试、最后删旧钥避免出现钥匙全换完但人都进不去的尴尬。云凭证的处理相对直接在云平台禁用旧的AccessKey并创建新的但要注意检查依赖该凭证的应用程序和自动化脚本别在轮换时把线上服务搞挂了。这也是我反复提醒的凭证轮换要有变更流程要提前通知到所有关联方。如果攻击者可能还保持着活跃会话还需要查看服务器当前登录会话和云平台控制台登录会话强制踢出可疑会话。这一步需要云平台或堡垒机的配合但既然已经确认凭证泄露就必须动手清理。4.4 第四步排查残留后门防止二次入侵修改完密码和密钥只是止血后续还有一个容易被忽略的关键步骤——排查系统里是否已经被埋了后门。攻击者在拿到权限后常常会做几件事把另一把公钥写入authorized_keys、创建新的系统用户、修改计划任务、在启动项里塞脚本。这些痕迹不会因为你换了密码就消失。这个阶段的排查建议覆盖几个层面比对系统用户列表检查是否有陌生的高权限账号审查/etc/cron*和systemd定时任务看有没有可疑的执行脚本检查Web目录和临时目录下有没有近期新增的可疑文件在云平台上检查是否有陌生的ECS快照、镜像和隐藏资源。我遇到过不止一次的教训是企业以为换个密码就安全了结果攻击者通过早就埋好的后门用新学到的虚拟内网工具又摸了回来。排查后门这一步省不得也快不得。5. 亡羊补牢从根源上管住密钥与凭证5.1 建立密钥的全生命周期管理事件处理完之后真正该做的是让这类问题不再发生。首当其冲的是建立SSH密钥的全生命周期管理。很多企业的密钥管理是从生到死全靠运维个人自觉生成没人管、分配没人记、回收没人催。这种管理方式下密钥数量只会越来越多配对的服务器关系越来越乱最后谁都没法说清楚钥匙究竟在谁手里。排查思路并不复杂。做好基线管理就好一是统一密钥生成和分发入口尽量用堡垒机或统一运维平台来托管密钥员工本地不再存放私钥二是建立密钥台账记录每把密钥的用途、负责人、有效期三是定期轮换建议不超过三个月就要换一次四是员工离职时第一时间回收个人密钥权限并撤销云端凭证。工具选型方面如果你有预算可以直接上企业级的特权账号管理产品这类工具会把密钥的统一托管、自动轮换、操作审计全部做成闭环。预算有限的团队至少要做到把私钥的存储位置从个人电脑收拢到统一的安全存储里并用配置管理工具统一下发公钥。5.2 从架构层面减少静态凭证的使用相比之下我更推荐从架构层面降低凭证的暴露面。思路其实很直白好用且不容易泄露的凭证形式才最有可能成为大家真正用起来的默认选择。云上EC2实例尽量绑定临时凭证而不是长期AccessKey。临时凭证自带过期时间攻击者即使拿到几分钟后也就失效了。数据库连接尽量走内网、通过IAM或STS换取临时凭证而不是把账号密码明文写进连接串。对于需要大量配置项的场景可以引入KMS或Vault这样的密钥管理服务把敏感信息从配置文件里抽离出来应用运行时刻动态获取密钥而不是把密钥随代码一起分发。这里再专门提醒一下有人会觉得动态凭证方案太重架构改动大。但说句实话相对泄露后动辄几十上百万的罚款和声誉损失前期投入是完全划算的。现实中没有完美的绝对安全方案任何安全机制本质上都是成本和风险的权衡。5.3 日志与敏感数据的分级处置与脱敏这次事件的核心是日志二字。日志本身是运维排查问题的刚需但日志里放什么内容完全是可控的。我强烈建议企业做一次日志内容基线审查排查所有应用日志、系统日志、CI/CD日志的输出内容中有没有出现密码、密钥、令牌、云凭证等敏感信息。具体的做法是建立敏感词检测规则在日志采集端就进行过滤和脱敏。比如把SSH私钥的标记行、AccessKey的特征字符、数据库连接串里的密码字段在写入日志前就替换成掩码。对于已经产生的历史日志要做一次全量扫描和清洗该删除的删除该脱敏的脱敏该归档加密的归档加密。另外日志系统的访问权限也要重新审视。日志集中收集是好事但如果所有开发都能随意查询生产环境日志那敏感信息就等于向全员开放了。建议对日志平台做细粒度的权限控制谁可以查、可以查哪几个项目、能查多久的数据都要有明确设置。5.4 用演练倒逼安全习惯落地最后一点也是我觉得最容易被忽略的安全规范和工具订好了不演练等于白搭。很多企业买了一大堆安全产品制度也写得头头是道但一旦问下去真正按照规范执行的人没几个。为什么因为不演练大家就没有真实感知。我建议安全团队定期做一次凭证泄露应急演练。别搞太复杂的剧本就模拟一个最简单的场景某员工的SSH密钥泄露了现在需要排查影响面并完成轮换。让运维、研发、安全一起走一遍流程。走完之后你会发现哪些环节不顺畅、哪些人对流程不熟悉、哪些工具在实际操作中不好用全都暴露出来。演练的价值就在这里——让问题在可控的小范围内暴露而不是等真出事时手忙脚乱。这类演练做多了团队的肌肉记忆也就形成了。真到某天收到泄露通报大家知道第一步做什么、第二步找谁、第三步怎么处理整个响应过程就会从容很多。写在最后这次6TB中转站日志曝光事件表面上是安全研究人员的战利品展示本质上却是给整个行业敲了一记警钟。这些企业不是没有安全投入而是投入的方向偏了——过度依赖边界防御却忽略了内部凭证的全生命周期管理。防火墙再厚也挡不住有人拿着合法钥匙从正门走进来。我做安全这些年最大的体会是安全建设里最贵的东西永远是人最难改的也是习惯。补齐密钥管理工具链、建立日志脱敏机制是治理层面的事真正让安全落地的关键一步是每一个工程师都意识到“自己手下的密钥不是个人私有物品而是企业资产的钥匙”。从这个角度看建议筛查范围不止于基础设施和配置文件还可以延伸到代码仓库、开发机、跳板机、云控制台等所有会接触敏感信息的角落。今天的皮球在每一家企业脚下。要不要去查怎么查什么时候查答案已经写在这条新闻里了。
返回列表