摘要:把进程白名单与透明加密的强度与目录的数据敏感度绑定,按分类分级结果对高敏目录启用更强白名单与透明加密、对普通目录做轻量管控,是降低白名单运维负担同时不放松核心资产保护的有效路径。 正在上传图片...
关键词:防勒索, 数据分类分级, 透明加密, 进程白名单, 等保, 密评
很多安全团队部署防勒索产品时,习惯给整台服务器、整块磁盘套一套"默认拒绝"的进程白名单。文件服务器跑着十几个业务进程,备份节点还有脚本与同步客户端。一旦白名单拉到最严,任何没登记的新版本编译器、临时脚本、运维小工具都会被拦住,业务当天就报错。
于是运维开始不停加白、加例外、放行整目录。白名单很快膨胀成谁也不敢删的"熟人列表",边际维护成本越来越高,高风险与低风险目录享受同一套策略——违背最小权限原则。当条目涨到上千条,没人能说清某条规则保护什么,审计复盘也失去意义。
更麻烦的是,勒索软件不需要突破白名单就能造成破坏。传统加密型勒索路径是:入侵拿执行权限 → 遍历目录加密文件 → 提权横向 → 清理日志与卷影。如果只对"写"拦截,却允许任何可信进程无差别读明文并重落盘,攻击者在拿到一个可信进程(或被注入可信进程)后,仍可对高敏文件做"二次加密"——用可信身份再写一份密文,绕过"默认拒绝未登记进程写"这一道防线。
还有一种误判是认为"装了备份就万事大吉"。现代勒索家族会主动扫描加密挂载的备份目录、删除卷影副本,若备份目录缺进程约束与透明加密,反成被加密重灾区。备份防加密必须与正面防护走同一条技术路线,而非事后依赖恢复。
所以问题不是"要不要白名单",而是"如何把有限运维精力与最强管控精准投放到真正高敏数据上"。这正是分类分级与防勒索联动的出发点:先给目录定性,再按结果决定防护强度,让保护资源跟着数据价值走。
分类分级系统通常输出业务类别(如财务、人事、研发源码、客户数据)与敏感级别(公开、内部、机密、绝密)两类标签,引擎消费其映射到防护动作矩阵。一个可落地的映射如下:
敏感级别 | 典型目录示例 | 白名单模式 | 透明加密 | 读写控制 | 审计粒度 |
|---|---|---|---|---|---|
公开 (L1) | 静态资源、下载站 | 默认允许+黑名单 | 否 | 仅记录 | 抽样 |
内部 (L2) | 一般办公文档 | 默认允许+灰名单 | 否 | 记录写 | 写操作全记 |
机密 (L3) | 合同、报表、配置 | 严格白名单 | 可选 | 读写分离 | 全量 |
绝密 (L4) | 源码、密钥、模型权重、备份 | 严格白名单 | 强制(TDE) | 读写双控 | 全量+告警 |
注意这里"强制透明加密"只对 L4 生效。L1/L2 不加密,避免把算力浪费在无关紧要的数据上;L3 按需开启,把加密开销留给真正值得保护的对象。这种分级投放,正是缓解"一刀切运维负担"的核心。

对于 L4 目录,策略引擎同时施加两条约束:
两条约束叠加:白名单解决"谁能碰",透明加密解决"碰到了也看不懂"。二者缺一都出现缺口,工程上白名单决策放 open 阶段、透明加解密放 read/write 阶段,各司其职。
对于 L1/L2 目录,引擎采用"默认允许 + 黑名单 + 行为画像"的轻量模式:
这样运维几乎无需维护 L1/L2 白名单,精力集中在 L3/L4。行为画像特征(单位时间改写文件数、目录跨度、文件熵值、进程父子关系)可识别"遍历式加密"签名,不必逐进程建白名单。
"二次加密"指:一个已被信任的进程读取高敏明文后,用注入逻辑重加密写回。仅仅"拒绝未登记进程写"拦不住它,因为进程本身在白名单内。
读写双控把"读"和"写"拆成两个独立决策点:
def on_file_open(evt):
"""内核回调:进程请求打开文件"""
level = dir_sensitivity(evt.path)
proc = verify_process(evt.pid) # 签名/哈希/路径校验
if evt.intent == "read":
# 读也需要判断:绝密目录仅允许被授权进程明文读
if level >= L4 and not proc.trusted_for(level):
return DENY
return ALLOW # 透明解密由引擎处理
if evt.intent == "write":
# 写:严格白名单 + 防二次加密
if level >= L4:
if not proc.trusted_for(level):
return DENY
# 防二次加密:禁止把"刚刚读出的明文"以不同格式写回同目录
if proc.recently_read(evt.path) and evt.entropy_high:
return DENY
elif level == L3:
return ALLOW if proc.whitelisted else DENY
else:
return ALLOW关键点:recently_read + entropy_high 组合可抓住"读明文→写高熵密文"的典型二次加密,误伤正常压缩、归档概率较低。工程上给 recently_read 设时间窗(如 30 秒),窗口外自动失效,避免历史读记录污染判定。
分级策略在实际环境里一定会遇到冲突:父目录 /srv/share 被标成 L2 允许全部,子目录 /srv/share/财务 被标成 L4 严格。引擎必须定义清晰的合并规则,否则会出现"宽松策略覆盖严格策略"的灾难。
经验法则是最长路径前缀优先(most-specific-wins):多条目录规则都能匹配某路径时,取路径最长、最具体的那一条作为最终动作。合并阶段应显式打印被覆盖的宽松规则,供运维核对:
rdmctl policy diff --check-override
# [warn] /srv/share (L2 allow-all) overridden by /srv/share/财务 (L4 strict)
# [warn] 3 override(s) detected, strict rules kept同时,L4 强制透明加密不应被任何父级 L1/L2 的"不加密"覆盖,这条作为不可下行的硬约束(hard floor),独立于路径优先级单独判定。
防勒索贯穿攻击生命周期,是连续动作。把分类分级策略代入 LockBit 攻击链,可得四阶段对照:
攻击阶段 | 攻击者动作 | 差异化防护动作 | 触发依据 |
|---|---|---|---|
入侵 | 利用漏洞/钓鱼落地载荷 | 终端 EDR 联动 + L4 目录进程白名单 | 进程来源与签名 |
加密 | 遍历目录批量改写文件 | L3/L4 读写双控 + 透明加密兜底 | 目录敏感级别 |
提权 | 尝试获取 SYSTEM/root | 关键进程路径白名单 + 行为告警 | 提权行为画像 |
清理 | 删除卷影/清日志 | 审计日志独立存储 + 防篡改 | 日志写保护 |
需要强调的是,透明加密在"加密"阶段提供最后一道兜底:即便白名单被绕过、文件被改写,落盘仍是密文,攻击者拿不到明文,勒索失去意义。这也解释透明加密防勒索与"备份恢复"互补而非替代:前者让攻击本身失效,后者只降低失效后的损失。
针对 LockBit 2.0/3.0 等变种,差异主要在载荷投递与加密器混淆,而"进程写文件"这一本质动作不变。基于进程身份 + 目录级别的内核层拦截,不依赖病毒特征库,对上述变种都能按同一套策略设防,不必等特征库更新。
实际部署时分类分级系统往往已存在(DLP、数据地图、CMDB 标签等),引擎消费其输出而非另搞一套标签。常见联动方式是分类分级系统导出标签文件,引擎定时拉取热加载:
# 分类分级系统导出标签(示意,路径已脱敏)
/opt/dlp-agent/export_tags.sh --format json --out /etc/rdm/tags.json
# 防勒索引擎重载策略
rdmctl policy reload --source /etc/rdm/tags.json
# 输出示例:
# [ok] loaded 1280 tag entries, 37 L4 dirs, 210 L3 dirs
# [ok] policy hot-reloaded without process restart引擎内部把 tags.json 编译成 (目录前缀 → 级别 → 动作) 的查找树,内核模块在事件回调里做 O(log n) 匹配,避免每事件全表扫描。热加载采用双缓冲:新策略校验通过后再原子切换,失败则保留旧策略并告警,避免错误标签锁死生产目录。
透明加密的密钥不能存本地明文配置文件。更稳妥的链路是:密钥在 HSM 中生成,引擎通过密钥安全服务 (KSP) 接口申请会话密钥用于 TDE 实时加解密;KSP 负责密钥生命周期、访问控制与审计,引擎负责把密钥用在文件读写路径上。
{
"tde": {
"enabled_levels": ["L4"],
"key_provider": "ksp",
"ksp_endpoint": "local://ksp-agent",
"wrap_algo": "AES-256-GCM",
"per_dir_key": true,
"key_rotation_days": 90
}
}per_dir_key: true 表示每个 L4 目录用独立密钥,单目录泄露不波及他目录,符合密钥最小化原则。会话密钥不落盘,仅引擎进程内存短时存在,退出即销毁,从根源降低密钥泄露面。
在政企文件服务器场景下,先由分类分级系统把 /srv/share/机密合同、/srv/share/财务 标记为 L3/L4,引擎自动施加"严格白名单 + 选择性透明加密",其余 /srv/share/公开 仅做轻量行为管控。运维只需维护少量 L3/L4 白名单(约 20 条),规则数量较全量严格白名单减少约 80%,告警噪音显著下降。
该场景里,文件服务器的 SMB/NFS 共享由远程接入的用户访问,防护引擎在内核层对共享目录统一防护,不依赖前端网关特征库,对 LockBit 2.0/3.0 等变种均能按"进程身份 + 目录级别"拦截。个人单机场景可通过 USBKey 形态落地:密钥与白名单随 USBKey 携带,即插即用。
在 AI 训练集群的落地重点是保护三类资产:模型权重文件 (.bin/.safetensors)、训练数据集、API 密钥文件,均标记为 L4,启用强制 TDE + 严格白名单 + 读写双控。
具体地,训练进程在白名单内可正常读权重做推理;任何未被登记为"密钥读取者"的进程访问 api_keys/ 目录都会被拒绝,即便为 root——内核层决策不依赖用户态权限。训练数据目录同样启用透明加密,避免训练数据在磁盘层被整库拷贝带走。
需要说明,上述落地仅作案例参考,读者可用其他等效引擎按相同思路落地,关键在方法论而非具体产品。
参数 | 建议值 | 说明 |
|---|---|---|
内核回调延迟预算 | < 50μs/事件 | 超过会影响 IO 吞吐 |
标签热加载间隔 | 60s | 分类分级变更的传播延迟 |
L4 目录白名单条目上限 | 按业务定 | 建议控制在百条内 |
TDE 密钥轮换周期 | 90 天 | 配合 KSP 自动轮换 |
审计日志保留 | ≥ 180 天 | 满足事后追溯 |
二次加密判定时间窗 | 30s | recently_read 窗口 |
透明加密在 IO 路径上增加加解密开销。实测在 NVMe SSD 上,L4 目录顺序大文件读写吞吐下降约 5%–12%,随机小文件因密钥查找下降约 8%–15%。由于仅 L4 加密,整体加权影响通常低于 3%。
内核模块采用 per-CPU 缓存与批量提交,避免文件事件陷入用户态;白名单匹配走前缀树,目录标签变更走 RCU 无锁读,防护动作不成为 IO 瓶颈。对比看:Web 静态(全 L1)几乎零影响;数据库(L3,不加密)仅增微秒级开销;仅模型权重与密钥(L4)承担完整加密开销。
坑 1:白名单膨胀后又悄悄放开整目录。现象:运维为省事把 /srv/share 整目录加白,L4 子目录失去保护。排查:定期导出白名单,检查"父目录通配覆盖子目录精确策略"的优先级倒置,确保更具体目录级别优先(见 2.5 节)。
坑 2:透明加密目录被备份软件二次加密。现象:备份代理对 L4 目录"读明文→压缩写回临时区"被读写双控拦截。排查:把备份代理的压缩写回路径加入"可信写目标"或走专门导出接口;备份目标目录本身标记 L4 并启用 TDE。
坑 3:远程接入的用户进程身份识别错乱。现象:远程接入挂载共享的用户,进程在服务器端以内核身份运行,引擎无法区分具体用户。排查:共享网关侧带用户标签,引擎对"共享目录写"增加用户维度白名单,不唯依赖 PID/进程路径。
坑 4:KSP 不可用时 TDE 降级。现象:HSM/密钥服务短暂故障,TDE 无法获取会话密钥,IO 阻塞。排查:配置本地缓存的应急会话密钥(短有效期、限次),KSP 恢复后强制轮换,监控 ksp_health 避免静默降级成明文。
坑 5:审计日志与业务日志混写被清理。现象:攻击者清理业务日志时一并删掉安全审计。排查:审计日志独立存储、写保护、异步批量提交到远端,独立路径不与受保护业务目录同盘同权限。
坑 6:标签过期导致策略失效。现象:分类分级系统调整了目录归属,但引擎仍用旧标签,新 L4 目录未被保护。排查:缩短标签热加载间隔并校验版本号;重载失败保留旧策略但持续告警,防止拉取异常造成保护真空。
坑 7:忽略临时目录与交换区的明文落点。现象:高敏数据被写入 /tmp 或交换分区,未被标记 L4,导致明文外泄。排查:把业务临时目录一并纳入 L4,或配置"敏感数据禁止落盘到非加密区"的硬约束,从写入入口阻断明文外溢。
数据分类分级与防勒索的联动,本质是把"防护强度"当有限资源按敏感度边际投放:最严白名单+透明加密+读写双控护绝密,轻量行为管控护公开内部,在可承受代价下把核心资产保护到位。
通用落地方法论可概括为四步:
以安当RDM为例,其数据防护引擎是这一方法论的一个具体实现:以进程白名单 + 透明加密 (TDE) + 实时审计构成三重主动防护,不依赖病毒特征库,按入侵→加密→提权→清理四阶段连续设防;支持企业全场景部署以及面向个人单机使用 USBKey 的形态;在政企文件服务器、智能制造 ERP/CRM、SaaS 多租户、软件源码、备份防护、AI 模型资产等场景中,都能以"分级启用不同强度策略"的方式落地。对评估防勒索方案的团队,建议先盘点自身数据分类分级现状,再据此设计差异化防护矩阵,而非直接采购默认拒绝的全局白名单。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。