当前位置:首页 > 行业动态 > 正文

HadoopYARN资源管理系统RESTAPI未授权访问

Hadoop YARN REST API未授权访问破绽允许攻击者绕过认证,通过API接口执行反面操作(如提交任务、改动配置),可能导致集群资源滥用、数据泄露或系统控制权丧失

Hadoop YARN资源管理系统REST API未授权访问详解

问题背景与定义

Hadoop YARN(Yet Another Resource Negotiator)是Hadoop生态系统的核心资源管理组件,负责集群资源的分配与调度,YARN通过REST API暴露了资源管理、应用提交、状态查询等关键功能。未授权访问指攻击者无需经过身份验证或权限校验,即可通过REST API直接操作YARN资源,可能引发严重的安全风险。

风险分析

风险类型 描述 影响等级
资源滥用 攻击者提交大量占用资源的作业,导致合法业务无法运行。
数据泄露 通过API获取集群敏感信息(如节点状态、应用日志)。
权限绕过 修改其他用户的作业优先级或直接终止其任务。
服务拒绝(DoS) 频繁调用API接口,耗尽YARN ResourceManager的线程或网络资源。

攻击场景示例

  1. 未授权任务提交
    攻击者通过/ws/v1/cluster/apps接口提交反面作业(如无限循环的MapReduce任务),消耗集群算力。

    curl -X POST http://<resourcemanager>:8088/ws/v1/cluster/apps 
    -d '{"application":"{"name":"MaliciousJob"}'}'
  2. 敏感信息窃取
    调用/ws/v1/cluster/nodes接口获取所有NodeManager的状态信息,包括IP地址、版本号等,为后续攻击提供情报。

    curl http://<resourcemanager>:8088/ws/v1/cluster/nodes
  3. 权限改动
    通过/ws/v1/cluster/apps/<app_id>接口修改其他用户的作业优先级或强制终止任务。

    HadoopYARN资源管理系统RESTAPI未授权访问  第1张

检测方法

  1. 端口扫描
    检查YARN ResourceManager的8088端口(默认REST API端口)是否对公网开放。

    nmap -p 8088 <ResourceManager_IP>
  2. API响应测试
    发送无认证的GET请求,若返回成功响应(HTTP 200)且包含敏感数据,则存在破绽。

    curl http://<ResourceManager>:8088/ws/v1/cluster/info
  3. 日志分析
    检查YARN日志中是否存在异常的REST API调用记录(如高频访问、非授权用户操作)。

解决方案与防护措施

防护层 具体措施
身份认证 启用Kerberos认证,强制REST API调用需携带有效票据。
配置SPNEGO/LDAP集成。
网络隔离 将ResourceManager部署在内网,仅允许信任节点访问。
使用防火墙限制8088端口访问。
访问控制 配置IP白名单,仅允许特定源调用API。
细化ACL权限,按用户/组限制操作范围。
加密传输 启用HTTPS,防止流量劫持。
禁用未加密的HTTP服务。
审计与监控 开启YARN审计日志,记录所有API操作。
集成监控系统(如Prometheus)检测异常行为。

实施步骤

  1. 启用Kerberos认证

    • 编辑yarn-site.xml,添加:
      <property>
        <name>yarn.resourcemanager.principal</name>
        <value>HTTP/<FQDN>@<REALM>.COM</value>
      </property>
      <property>
        <name>yarn.resourcemanager.keytab</name>
        <value>/etc/krb5/rm.keytab</value>
      </property>
    • 重启ResourceManager并验证认证生效。
  2. 配置HTTPS

    • 生成SSL证书并配置yarn-site.xml
      <property>
        <name>yarn.resourcemanager.https.enable</name>
        <value>true</value>
      </property>
      <property>
        <name>yarn.resourcemanager.https.port</name>
        <value>8090</value>
      </property>
  3. IP白名单设置

    • yarn-site.xml中添加:
      <property>
        <name>yarn.resourcemanager.address</name>
        <value>192.168.1.100:8088</value>
      </property>
      <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>192.168.1.100:8030</value>
      </property>

案例分析

某互联网公司因未限制YARN API访问,攻击者通过公网IP调用/ws/v1/cluster/apps接口提交挖矿程序,导致集群CPU利用率飙升至100%,事后分析发现:

  • ResourceManager直接暴露在公网。
  • 未启用任何身份认证机制。
  • 缺乏API调用频率限制。

最佳实践建议

  1. 最小化暴露面:关闭不必要的REST API端点(如测试接口)。
  2. 动态令牌:为短期操作生成临时访问令牌,避免长期凭证泄露。
  3. 定期审计:每月检查YARN日志中的API调用记录,识别异常行为。
  4. 版本升级:使用Hadoop 3.x及以上版本,修复已知的安全破绽(如CVE-2020-1533)。

FAQs

问题1:如何确认YARN是否启用了Kerberos认证?
答:检查yarn-site.xml中是否存在以下配置:

  • yarn.resourcemanager.principal
  • yarn.resourcemanager.keytab
    若存在且已重启服务,则表示启用,可通过发送带Kerberos票据的请求验证(如krb-curl工具)。

问题2:如何限制REST API仅允许特定IP访问?
答:在ResourceManager主机的防火墙中配置规则,

# 仅允许192.168.1.0/24网段访问8088端口
iptables -A INPUT -p tcp --dport 8088 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 8088 -
0