403 Forbidden: příčiny, opravy a blokace botů, které matou monitoring
403 Forbidden znamená, že server požadavku dokonale porozuměl a odmítá ho obsloužit, a přihlášení na tom nic nezmění. Na rozdíl od 401, který žádá o přihlašovací údaje, je 403 rozhodnutí: tento klient, u tohoto požadavku, nemá povolení.
403 versus 401
RFC 9110 vede hranici jasně. 401 Unauthorized znamená, že je vyžadovaná autentizace nebo že dodané přihlašovací údaje nebyly přijaty, a odpověď musí nést hlavičku WWW-Authenticate popisující, jak se autentizovat. 403 Forbidden znamená, že server odmítá požadavek autorizovat, a opětovná autentizace nepomůže.
Specifikace navíc dovoluje serveru odpovědět 404 místo 403, když nechce prozradit, že prostředek vůbec existuje. Proto se URL, o které víte, že tam je, může na zpevněném serveru vrátit jako "nenalezeno". Když třídíte 403, pamatujte, že existuje i tento opačný případ.
Co 403 způsobuje
- Oprávnění souborového systému. Proces webového serveru nemůže přečíst soubor nebo projít adresář. Klasika po ruční kopii souborů nebo obnově, která změnila vlastnictví.
- Vypnutý výpis adresáře. Požadavek na složku bez indexního souboru vrátí 403 na serverech nastavených tak, aby výpisy odmítaly. Správné chování, matoucí chyba.
- Autorizační pravidla aplikace. Uživatel je přihlášený, ale chybí mu role, plán nebo členství v tenantu vyžadované pro daný prostředek.
- Seznamy povolených a zakázaných IP. Administrátorská cesta omezená na kancelářské adresy vrátí 403 všem ostatním, včetně kohokoli, kdo testuje z domova nebo z mobilní sítě.
- Pravidla web application firewallu. WAF zablokuje požadavek, jehož URL, hlavičky nebo tělo odpovídaly signatuře. Požadavek přitom vám může připadat naprosto nevinný.
- Geo-blokování. Provoz z některých zemí nebo regionů je odmítnut na edge vrstvě, takže je web v pořádku z jednoho kontinentu a zakázaný z druhého.
- Ochrana proti hotlinkování. Pravidlo, které odmítá požadavky na obrázky nebo média, jejichž hlavička
Refererchybí nebo míří na jinou doménu. Požadavky bez referreru se tím omylem chytí často. - Filtrování botů a user agentů. Požadavek je zablokovaný podle toho, za koho se klient vydává, ne podle toho, o co žádal. Tohle je případ, který chytá monitoring.
Případ "403 pro monitory, 200 pro lidi"
Tohle je nejčastější falešný poplach v monitoringu dostupnosti, a není to chyba monitoringu. Web opravdu vrací 403, jen ne prohlížečům.
Správa botů na CDN nebo WAF hodnotí každý požadavek podle user agenta, TLS otisku, pořadí hlaviček, reputace IP a toho, jestli projde JavaScriptovou nebo interaktivní výzvou. Automatizovaná HTTP kontrola je záměrně automatizovaný klient: nespouští JavaScriptové výzvy a poctivě se identifikuje jako to, čím je. Takže dostane výzvu nebo je zablokovaná, zatímco váš prohlížeč projde bez problémů, a výsledkem je web, který hlásí výpadek, zatímco každý člověk potvrdí, že funguje.
Rychle to poznáte podle dvou příznaků: 403 dorazí okamžitě, ne se zpožděním, což vylučuje přetížení, a je to konzistentní pro automatizovaného klienta, zatímco to nejde reprodukovat v prohlížeči na stejné síti.
Jak monitorovací službu přidat na seznam povolených
- Ověřte, že je blokace založená na identitě. Zopakujte požadavek jako obyčejný HTTP klient a pak s řetězcem user agenta prohlížeče, a porovnejte:
Pokud se kódy liší, jde o pravidlo pro user agenta.curl -sS -o /dev/null -w "%{http_code}\n" https://example.com/ curl -sS -o /dev/null -w "%{http_code}\n" -A "Mozilla/5.0" https://example.com/ - Najděte pravidlo, které zafungovalo. Dashboardy WAF a CDN logují zablokované požadavky s ID odpovídajícího pravidla. To je rychlejší a bezpečnější než hádat, které pravidlo uvolnit.
- Kde to jde, přidejte na seznam povolených podle IP adresy. Poskytovatelé monitoringu zveřejňují adresy, které jejich kontrolní body používají. Přidat je jako pravidlo pro přeskočení je přesné a nijak neoslabuje ochranu pro nikoho jiného.
- Nebo přidejte na seznam povolených podle user agenta. Nastavte kontrolu tak, aby posílala výrazný user agent, a přidejte pravidlo, které ho vyjme. Tohle se udržuje snáz než seznam IP adres, ale berte to jako pohodlí, ne jako bezpečnostní hranici, protože user agent si může zkopírovat kdokoli.
- Dávejte přednost pravidlu pro přeskočení před vypnutím ochrany. Vyjměte cestu nebo klienta monitoringu z konkrétního pravidla a zbytek sady pravidel nechte v platnosti.
- Otestujte znovu z více regionů. Pravidlo se může na jednotlivých edge lokalitách uplatňovat nerovnoměrně, takže opravu ověřte z víc než jednoho místa, než ticket uzavřete.
Oprava 403, která nemá s boty nic společného
- Zkontrolujte, jestli by URL měla být veřejná vůbec. Polovina vyšetřování 403 skončí zjištěním, že je blokace oprávněná.
- Ověřte vlastnictví a oprávnění souborů na cestě i v každém nadřazeném adresáři. Proces serveru potřebuje na adresářích právo spouštět, ne jen právo číst soubor.
- Hledejte indexní soubor, pokud je URL adresář, nebo výpis záměrně povolte, pokud ho chcete.
- Přečtěte si konfiguraci serveru ohledně pravidel zamítnutí, omezení IP a kontrol referreru na dané cestě, pak autorizační vrstvu aplikace.
- Zkontrolujte edge dřív než origin. Vyžádejte si origin přímo. 403, která zmizí, když CDN obejdete, je pravidlo edge, ne problém aplikace.
Jak vidět blokaci zvenčí vlastní sítě
403 způsobená aktualizací WAF nebo změnou oprávnění nevypadá zevnitř jako výpadek: vaše relace je autentizovaná, vaše adresa je na seznamu povolených a stránky, které kontrolujete, jsou právě ty, co fungují. Naplánovaná HTTP kontrola ověří kód, který očekáváte, na URL, na kterých záleží, zvenčí vaší sítě, takže nově zakázaná stránka spustí upozornění okamžitě. Geo-blokace a pravidla edge se liší podle regionu, takže na počtu pozorovacích bodů záleží: HostTracker kontroluje z více než 300 kontrolních bodů ve 158 městech, což promění "zakázáno v některých zemích" ve viditelný rozdíl mezi lokalitami. Pokud je odmítnutí dočasné a vázané na objem požadavků, ne na identitu, kód bude obvykle 429 místo toho, což pokrývá návod na 429 Too Many Requests, a širší rodina je v přehledu 4xx.