Zabránění převzetí subdomény ve službě Azure App Service

Převzetí subdomény je běžnou hrozbou pro organizace, které pravidelně vytvářejí a odstraňují mnoho prostředků. K převzetí subdomény může dojít, pokud máte záznam DNS, který odkazuje na zrušený prostředek Azure. Tyto záznamy DNS se také označují jako položky visící DNS. Převzetí subdomény umožňuje škodlivým hercům přesměrovat provoz určený pro doménu organizace na web provádějící škodlivou aktivitu.

Mezi rizika převzetí subdomény patří:

  • Ztráta kontroly nad obsahem subdomény
  • Získávání cookies od nic netušících návštěvníků
  • Phishingové kampaně
  • Další rizika klasických útoků, jako je XSS, CSRF nebo obejití CORS

Další informace o převzetí subdomény najdete v tématu Prevence překrývání položek DNS a zabránění převzetí subdomény.

Azure App Service poskytuje rezervaci názvů, tokeny pro ověření domény a zabezpečené jedinečné výchozí názvy hostitelů, aby se zabránilo převzetí subdomén.

Nejúčinnějším způsobem ochrany prostředků služby App Service před převzetím subdomény je použití zabezpečených jedinečných výchozích názvů hostitelů. Tato funkce je obecně dostupná pro Web Apps, Function Apps a Logic Apps (Standard).

Když povolíte zabezpečené výchozí názvy hostitelů, aplikace obdrží výchozí název hostitele, který obsahuje randomizovanou hodnotu hash a identifikátor oblasti, aby byla pro vaši organizaci jedinečná. Tento formát zajišťuje, že nikdo mimo vaši organizaci nemůže vytvořit prostředek se stejným výchozím názvem hostitele, čímž se eliminuje riziko převzetí subdomény prostřednictvím osiřelých záznamů DNS.

Jak to funguje

Tradiční prostředky služby App Service používají výchozí formát názvu hostitele, který je globálně předvídatelný:

Globální (originál) Jedinečné (nové)
Výchozí název hostitele <AppName>.azurewebsites.net <AppName>-<Hash>.<Region>.azurewebsites.net
Koncový bod SCM <AppName>.scm.azurewebsites.net <AppName>-<Hash>.scm.<Region>.azurewebsites.net

Například webová aplikace contoso nasazená do oblasti USA – východ může obdržet:

contoso-a6gqaeashthkhkeu.eastus-01.azurewebsites.net

16znakový hash je deterministický v rámci konfigurovatelného rozsahu, takže v případě potřeby můžete napříč prostředími zajistit konzistentní názvy hostů.

Možnosti rozsahu hash

Když vytvoříte prostředek s jedinečným výchozím názvem hostitele, zvolíte rozsah, který určuje způsob, jakým se hash generuje:

Scope Popis
Opětovné použití tenanta Stejný hash pro stejný název aplikace ve všech předplatných ve vašem tenantu Microsoft Entra.
Opětovné použití předplatného Stejná hodnota hash pro stejný název aplikace ve stejném předplatném.
Opětovné použití skupiny prostředků Stejný hash pro stejný název aplikace v rámci stejné skupiny prostředků
Žádné opakované použití Pokaždé jedinečný hash. Maximální izolace.

Tip

Pokud pravidelně znovu nasazujete prostředky napříč prostředími (například z testovacího předplatného do produkčního předplatného v rámci stejného tenanta), použijte Tenant Reuse, aby názvy hostitelů zůstaly konzistentní napříč předplatnými.

Sloty pro nasazení

Sloty pro nasazení mají stejný formát jako produkční web, ale každý slot má vlastní jedinečný hash:

Výchozí název hostitele Název hostitele slotu
Formát <AppName>-<Hash>.<Region>.azurewebsites.net <AppName>-<SlotName>-<Hash>.<Region>.azurewebsites.net

Sloty se vždy vytvářejí se stejným oborem jako produkční lokalita.

Jak povolit

Při vytváření zdroje konfigurujete bezpečná a jedinečná výchozí hostitelská jména. Nemůžete je zpětně aplikovat na stávající zdroje. Způsob, jakým je povolíte, závisí na klientovi, kterého používáte:

  • Azure portál: Nové Web Apps, Function Apps a Logic Apps (Standard) vytvořené v portálu Azure automaticky používají bezpečná a jedinečná výchozí hostitelská jména na všech podporovaných SKU. Nevyžaduje se žádná další konfigurace.
  • Azure CLI, ARM šablony a REST API: Musíte se přihlásit explicitně nastavením rozsahu názvu hostitele při žádosti o vytvoření. Nastavte tuto hodnotu pro každé nové nasazení tak, aby zdroje vytvořené mimo portál používaly stejný výchozí formát názvu hostitele jako zdroje vytvořené v portálu.

Při vytváření nového prostředku použijte parametr --domain-name-scope k povolení zabezpečených jedinečných výchozích názvů hostitelů.

Typ zdroje Command Referenční informace
Webové aplikace az webapp create --name <AppName> --resource-group <ResourceGroup> --plan <AppServicePlan> --domain-name-scope TenantReuse AZ WebApp Create
Aplikace funkcí az functionapp create --name <AppName> --resource-group <ResourceGroup> --storage-account <StorageAccount> --consumption-plan-location <Region> --domain-name-scope TenantReuse az functionapp create
Logické aplikace (standardní) az logicapp create --name <AppName> --resource-group <ResourceGroup> --storage-account <StorageAccount> --domain-name-scope TenantReuse az logicapp create

Parametr --domain-name-scope přijímá následující hodnoty: NoReuse, ResourceGroupReuse, SubscriptionReuse, TenantReuse.

Migrace existujících prostředků

Vzhledem k tomu, že tuto funkci lze povolit pouze při vytváření, máte dvě možnosti pro existující prostředky:

  • Naklonujte existující aplikaci do nové aplikace s povolenými jedinečnými výchozími názvy hostitelů.
  • Obnovte ze zálohy do nové aplikace se zapnutými zabezpečenými jedinečnými výchozími názvy hostitelů.

Obě možnosti jsou k dispozici na portálu Azure.

Proč to teď přijmout

Zabezpečení jedinečných výchozích názvů hostitelů poskytuje ochranu ve výchozím nastavení. Na rozdíl od jiných strategií zmírnění, které vyžadují průběžnou hygienu DNS a ruční zásah, tento přístup staví zabezpečení přímo do struktury názvu hostitele. Pokud je povoleno:

  • Žádný externí subjekt nemůže obnovit váš výchozí název hostitele.
  • Osiřelé záznamy DNS nelze zneužít k převzetí subdomény.
  • Kromě povolení funkce při vytváření nejsou potřeba žádné další kroky konfigurace.

Používejte bezpečné a jedinečné výchozí hostitelské názvy pro každé nové nasazení App Service. Portál Azure tuto konfiguraci již automaticky aplikuje pro nové zdroje na podporovaných SKU. Sladění nasazení Azure CLI, ARM šablony a REST API se stejným výchozím formátem názvu hostitele udržuje vaše nastavení konzistentní s doporučenou konfigurací App Service.

Note

Identifikátor oblasti v názvu hostitele (například eastus-01) může pro budoucí nasazení používat různé přípony čísel. Nevytvářejte pevnou závislost na přesné kombinaci regionu a čísla.

Jak App Service brání převzetí subdomény

Po odstranění aplikace služby App Service nebo služby App Service Environment (ASE) nemůže být příslušné DNS opakovaně použito, s výjimkou pro předplatná patřící do tenanta, který původně vlastnil DNS. Zákazník tedy má nějakou dobu na to, aby vyčistil všechna přidružení nebo ukazatele na uvedený DNS, nebo znovu získal DNS v Azure tím, že vytvoří prostředek se stejným názvem znovu. Toto chování je ve výchozím nastavení povolené ve službě Azure App Service pro prostředky *.azurewebsites.net a *.appserviceenvironment.net, takže nevyžaduje žádný zásah ze strany zákazníka.

Ukázkový scénář

Předplatné A a předplatné B jsou jediná předplatná, která patří do tenanta AB. Předplatné A obsahuje webovou aplikaci služby App Service test s DNS názvem test.azurewebsites.net. Po odstranění aplikace můžou název DNS okamžitě znovu použít pouze předplatná A nebo test.azurewebsites.net vytvořením webové aplikace s názvem test. Žádná další předplatná nemají povoleno si nárokovat název hned po odstranění prostředku.

Jak zabránit převzetí subdomény

Při vytváření položek DNS pro Azure App Service vytvořte asuid.{ subdoména} záznam TXT s ID ověření domény. Pokud takový záznam TXT existuje, žádné jiné předplatné Azure nemůže ověřit vlastní doménu nebo ho převzít, pokud nepřidají ověřovací ID tokenu do položek DNS.

Tyto záznamy brání vytvoření jiné aplikace App Service se stejným názvem ze záznamu CNAME. Bez možnosti prokázat vlastnictví názvu domény nemůžou aktéři hrozeb přijímat provoz ani řídit obsah.

Záznamy DNS by se měly aktualizovat před odstraněním webu, aby se zajistilo, že chybní aktéři nebudou moct převzít doménu mezi obdobím odstranění a opětovným vytvořením.

Pokud chcete získat ID ověření domény, přečtěte si téma Nastavení existující vlastní domény ve službě Azure App Service.