未授权 YARN 的危险
YARN 的 ResourceManager Web UI 默认监听 8088(旧版本还有 8089 与 NameNode 的 50070),未启用认证时任何人都能通过界面或 REST API 查看集群并提交任务。公开的利用链可以借 REST API 提交恶意应用从而拿到容器权限,因此暴露在外的未授权 YARN 基本等同于已被入侵。
基本信息
| 适用平台 | Linux(Hadoop / YARN) |
|---|---|
| 常见端口 | 8088 ResourceManager Web UI、8089 HTTPS、50070 旧版 NameNode UI |
| 风险等级 | 高 |
| 基线要求 | Web 界面不对外暴露并开启认证 |
| 关联组件 | HDFS、Hive、Spark 都各自暴露管理端口 |
典型使用场景
- 大数据集群暴露面盘点,内网也不能默认信任
- 排查可未授权访问的 ResourceManager 界面
- Kerberos 化改造前的过渡期加固
- 收到大数据组件未授权访问告警后的应急处置
- 集群迁移或新建时的端口规划
核查现状
核查现状
ss -tlnp | grep -E ':8088|:8089|:50070' # 确认相关端口监听情况
curl -s --max-time 5 http://127.0.0.1:8088/ws/v1/cluster/apps | head -c 200 # 无认证试探 REST 接口
curl -s --max-time 5 http://127.0.0.1:8088/ws/v1/cluster/info | head -c 200
systemctl status hadoop-yarn-resourcemanager 2>/dev/null | head -5 # 确认服务运行状态过渡期收敛思路
过渡期收敛思路
# 1) 边界封禁:防火墙或安全组只允许可信来源访问 8088 与 8089
# 2) 反向代理前置认证:把 Web UI 挂到带认证的代理后面
# 3) 开启组件自身认证(Kerberos 或用户认证配置)
# 4) 盘点 HDFS、Hive、Spark 等其他组件的管理端口,一并收敛复核必查项
| 检查项 | 含义 | 注意点 |
|---|---|---|
| 8088 监听地址 | ResourceManager Web UI | 不应绑定在不可信网段可直达的地址上 |
| REST 接口 | /ws/v1/cluster 是否免认证可访问 | 能访问即存在提交任务的风险 |
| 50070 | 旧版本 HDFS NameNode UI | 可浏览文件系统元数据 |
| 组件清单 | HDFS、Hive、Spark 的端口 | 只封一个端口远远不够 |
| 认证方式 | 是否启用 Kerberos 或代理认证 | 未启用时至少做边界封禁 |
未授权的 YARN 可以提交恶意应用并拿到容器权限:一旦发现暴露,除了立即封堵,还要按可能已被入侵来排查任务与日志。
Kerberos 化改造周期长、成本高,过渡期至少先做边界封禁加反向代理认证,不要等地基搭好才开始挡门。
除了 ResourceManager 的 Web UI,任务日志聚合页面与 HistoryServer 等配套界面同样可能免认证可访问,做暴露面盘点时要把它们一起算进来。