防止 Azure 应用服务中的子域接管

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

子域接管的风险包括:

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

若要了解有关子域接管的详细信息,请参阅 “防止悬空 DNS 条目并避免子域接管”。

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

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

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

示例方案

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

如何防止子域接管

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

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

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

若要获取域验证 ID,请参阅 在 Azure 应用服务中设置现有自定义域