Vlastná doména na GitHub Pages: chybný DNS záznam môže otvoriť únos webu

|Autor: Redakcia QUASA|5 min čítania
Vlastná doména na GitHub Pages: chybný DNS záznam môže otvoriť únos webu

Vlastnú doménu pripojíte ku GitHub Pages tak, že ju najprv overíte pre svoj účet alebo organizáciu, uložíte v nastaveniach Pages príslušného repozitára a potom nastavíte DNS. Návod GitHubu na pripojenie domény upozorňuje, že smerovanie DNS vytvorené pred priradením domény k webu môže umožniť cudziemu účtu publikovať obsah na vašej subdoméne.

Pre koreňovú doménu, napríklad example.com, nastavíte záznamy A alebo podporovaný ALIAS či ANAME. Pre www.example.com alebo inú subdoménu použijete CNAME smerujúci priamo na predvolenú adresu vášho webu na GitHub Pages. Po zverejnení záznamov skontrolujete odpoveď DNS, otvoríte web cez vlastnú adresu a zapnete Enforce HTTPS, keď je táto voľba dostupná.

Pred zmenou DNS si vyberte adresu webu

Určte, či má byť hlavnou adresou koreňová doména example.com, jej variant www.example.com alebo samostatná subdoména, napríklad blog.example.com. Do poľa Custom domain v repozitári zadajte zvolenú adresu. Ak správne nastavíte koreňovú doménu aj jej variant www, GitHub Pages presmeruje návštevníkov na adresu uloženú v repozitári.

Pred zmenou si pripravte prístupové údaje a skontrolujte existujúcu konfiguráciu:

  • Potrebujete oprávnenie správcu repozitára a prístup k DNS zóne domény.
  • Zistite, či repozitár patrí osobnému účtu alebo organizácii. Cieľ záznamu pre subdoménu bude mať tvar USERNAME.github.io alebo ORGANIZATION.github.io, bez názvu repozitára.
  • Prezrite si záznamy pre zvolenú adresu vrátane predvolených záznamov od poskytovateľa DNS. Staré smerovanie na iný web môže prekážať správnemu fungovaniu aj vydaniu certifikátu.
  • Overte, či web publikujete z vetvy alebo vlastným postupom GitHub Actions. Pri týchto spôsoboch publikovania sa odlišne používa súbor CNAME.

Na jednom webe nemožno súčasne nastaviť koreňovú doménu example.com a odlišnú vlastnú subdoménu docs.example.com. Variant www ku koreňovej doméne je podporovaná výnimka. Ak používate medzinárodnú doménu, pri zadávaní subdomény do nastavení repozitára použite jej podobu kódovanú ako Punycode.

Overte vlastníctvo a odstráňte riziko prevzatia

Overenie domény pre GitHub Pages chráni jej bezprostredné subdomény, no zástupný DNS záznam môže ponechať hlbšie vnorené adresy vystavené riziku.

Postup overenia domény v GitHube vysvetľuje, že záznam TXT viaže doménu na repozitáre vášho osobného účtu alebo organizácie. Ak sa neoverený web vypne, repozitár odstráni alebo sa doména od webu odpojí, no DNS stále smeruje na GitHub Pages, iný účet môže pod touto adresou publikovať vlastný obsah. Práve táto kombinácia robí z osirelého záznamu bezpečnostný problém.

  1. Pri osobnom webe otvorte Settings svojho profilu a potom Pages. Pri webe organizácie otvorte Settings organizácie a Pages; overenie sa nerobí v nastaveniach repozitára.
  2. Zvoľte Add a domain a zadajte doménu. Podľa údajov zobrazených GitHubom vytvorte u poskytovateľa DNS záznam TXT.
  3. Zverejnenie overte príkazom dig _github-pages-challenge-USERNAME.example.com TXT +short. USERNAME aj example.com nahraďte vlastnými údajmi a použite presný názov záznamu uvedený v GitHube. Pri organizácii použite namiesto mena používateľa jej názov.
  4. Vráťte sa do nastavení Pages, dokončite Verify a záznam TXT ponechajte v DNS. Je potrebný na zachovanie overenia.

Overenie koreňovej domény zahŕňa aj jej bezprostredné subdomény, napríklad blog.example.com. Zástupný záznam *.example.com však môže smerovať aj hlbšie vnorené adresy, napríklad b.a.example.com, ktoré overenie koreňovej domény nechráni; takýto záznam preto nepoužívajte. Ak web vypnete a doména nie je overená, odstráňte alebo upravte záznamy smerujúce na GitHub Pages. Keď GitHub hlási, že vašu doménu používa iný účet, overenie vlastníctva ju môže uvoľniť; nepomôže, ak ju už druhý účet sám overil.

Nastavte DNS podľa typu domény

Koreňová doména smeruje na adresy GitHub Pages cez záznamy A, zatiaľ čo www subdoména používa priamy CNAME na USERNAME.github.io.

V repozitári otvorte Settings, potom Pages, vyplňte Custom domain a uložte zmenu. Následne vytvorte príslušné záznamy u poskytovateľa DNS. Pri publikovaní z vetvy GitHub uloží doménu do súboru CNAME v koreňovom adresári publikačného zdroja. Ak na GitHub nahrávate súbory vytvorené lokálne, zahrňte tento súbor aj do ďalšieho nasadenia; vlastný postup GitHub Actions ho nevyžaduje a ignoruje.

Koreňová doména

Pre example.com nastavte pri názve @ záznamy A s adresami 185.199.108.153, 185.199.109.153, 185.199.110.153 a 185.199.111.153. Ak váš poskytovateľ podporuje ALIAS alebo ANAME na koreňovej doméne, môžete namiesto záznamov A nasmerovať @ na USERNAME.github.io alebo ORGANIZATION.github.io. Záznamy AAAA pre IPv6 sú voliteľné; pri ich použití ponechajte aj smerovanie cez IPv4.

www alebo iná subdoména

Pre www.example.com alebo blog.example.com vytvorte CNAME smerujúci priamo na USERNAME.github.io alebo ORGANIZATION.github.io. Do cieľa nepridávajte názov repozitára ani nepoužite koreňovú doménu example.com ako medzičlánok: smerovanie subdomény na koreňovú doménu môže narušiť dostupnosť webu alebo vynucovanie HTTPS. Ak chcete používať example.com aj www.example.com, nastavte koreňovú doménu podľa predchádzajúceho postupu a pre www vytvorte samostatný CNAME.

Skontrolujte DNS a opravte HTTPS

Po uložení záznamov porovnajte verejnú odpoveď DNS s nastavenou hodnotou. Pre koreňovú doménu použite dig example.com A +short, pre www použite dig www.example.com CNAME +short. Ak ste pridali IPv6, skontrolujte aj AAAA; vo Windowse môžete použiť príkaz Resolve-DnsName. Šírenie zmien DNS môže trvať až 24 hodín, preto pri odlišnej odpovedi najprv skontrolujte záznam u poskytovateľa.

Diagnostika domén GitHub Pages rozlišuje chyby súboru CNAME, nepodporované kombinácie domén a problémy s HTTPS. Ak web pri publikovaní z vetvy používa nesprávnu adresu, skontrolujte, či súbor CNAME zostal v koreňovom adresári publikačného zdroja, má názov veľkými písmenami a obsahuje iba samotnú doménu. Pri publikovaní cez vlastný postup GitHub Actions tento súbor príčinu problému nevysvetľuje, pretože sa ignoruje.

Keď DNS smeruje správne, v nastaveniach Pages zapnite Enforce HTTPS, len čo sa voľba sprístupní; môže to trvať až 24 hodín. Samotný web môže byť po nastavení domény dostupný cez HTTPS približne do hodiny. Ak certifikát nevzniká a používate záznamy CAA, musí byť povolená autorita letsencrypt.org. Po oprave už existujúcich záznamov DNS môže byť potrebné doménu v repozitári odstrániť a znovu pridať, aby sa proces zapnutia HTTPS spustil znova.

Prečítajte si aj:

Zdieľať:

Prihláste sa na odber newslettera

Dostávajte najnovšie správy o Web3, AI a kryptomenách priamo do svojej schránky.

0