共用方式為

缓解 Azure 应用服务中的子域接管

子域接管是定期创建和删除许多资源的组织的常见威胁。 如果 DNS 记录指向已取消预配的 Azure 资源,则可能会发生子域接管。 此类 DNS 记录也称为“悬空 DNS”条目。 子域接管使恶意参与者能够将针对组织域的流量重定向到执行恶意活动的站点。

子域接管的风险包括:

  • 失去对子域内容的控制
  • 从不知情的游客中收获饼干
  • 网络钓鱼活动
  • 经典攻击(如 XSS、CSRF、CORS 旁路)的进一步风险

Dangling DNS 和子域接管中了解有关子域接管的详细信息。

Azure 应用服务提供名称预留服务和域验证令牌,以防止子域接管。

应用服务如何防止子域接管

删除应用服务应用或应用服务环境(ASE)后,将禁止立即重复使用相应的 DNS,但属于最初拥有 DNS 的订阅的租户除外。 因此,客户有一段时间可以清理指向上述 DNS 的任何关联/指针,或者通过重新创建具有相同名称的资源来回收 Azure 中的 DNS。 默认情况下,此行为在 Azure 应用服务上为“*.chinacloudsites.cn”和“*.appserviceenvironment.cn”资源启用,因此不需要任何客户配置。

示例方案

订阅“A”和订阅“B”是唯一属于租户“AB”的订阅。 订阅“A”包含一个应用服务 Web 应用“test”,其 DNS 名称为“test.chinacloudsites.cn”。 删除应用后,只有订阅“A”或订阅“B”才能通过创建名为“test”的 Web 应用立即重复使用 DNS 名称“test.chinacloudsites.cn”。 在资源删除后,不允许其他订阅声明名称。

如何防止子域接管

为 Azure 应用服务创建 DNS 条目时,请创建 asuid。{subdomain}具有域验证 ID 的 TXT 记录。 如果存在此类 TXT 记录,则任何其他 Azure 订阅都无法验证自定义域或接管该记录,除非将令牌验证 ID 添加到 DNS 条目。

这些记录阻止从 CNAME 条目使用同名创建另一个应用服务应用。 如果不能够证明域名的所有权,威胁参与者无法接收流量或控制内容。

在网站删除之前,应更新 DNS 记录,以确保不良执行组件无法在删除和重新创建期间接管域。

若要获取域验证 ID,请参阅 映射自定义域教程