Každá firma nějakou má: interní webovou aplikaci, na které stojí půlka byznysu, jejíž dodavatel dávno zmizel nebo do jejíhož zdrojového kódu se nikdo neodváží sáhnout, a kterou teď auditor chce vidět za vícefaktorovým ověřováním.
Nemusíte ji upravovat. Nemusíte ani vědět, v jakém jazyce je napsaná. Trik spočívá v tom, že s aplikací zacházíte jako s černou skříňkou a ověřování postavíte před ni: reverzní proxy, která mluví protokolem SAML a opírá se o SSO službu Notakey, takže každý uživatel musí své přihlášení potvrdit klepnutím na telefonu dřív, než k aplikaci dorazí jediný požadavek.
Jak to funguje
Browser ──▶ reverse proxy (Apache + mod_auth_mellon) ──▶ legacy app
│
└──SAML──▶ Notakey SSO (IdP) ──▶ push ──▶ user's phone
- Prohlížeč požádá o chráněnou URL. Proxy nevidí žádnou SAML relaci a přesměruje uživatele na poskytovatele identity, SSO službu, která je součástí zařízení Notakey.
- Uživatel zadá své uživatelské jméno; autentizační server odešle na jeho telefon push notifikaci s žádostí o potvrzení.
- Po schválení se prohlížeč vrátí s podepsanou SAML assertion. Proxy ověří podpis a teprve potom začne požadavky propouštět k aplikaci.
Samotná aplikace se přitom nijak nemění. Pokud má vlastní přihlašovací obrazovku, zůstává, jak je. Tohle přidává bránu před ni, nenahrazuje to, co je za ní.
Jediné pravidlo, na kterém stojí bezpečnost
Proxy ochrání jen to, co se nedá obejít. Starší aplikace musí být dosažitelná výhradně přes proxy. Pravidlo na interním firewallu, nebo vyhrazená dockerová síť, pokud aplikace běží v kontejneru, je nedílnou součástí instalace, ne volitelným doplňkem. Pokud se uživatelé stále dostanou na IP adresu aplikace napřímo, je 2FA jen na ozdobu.
Co budete potřebovat
- Notakey Authentication Appliance se spuštěnou přibalenou SSO službou a uživatele zaregistrované v aplikaci Notakey Authenticator
- Docker na libovolném hostiteli, který se k aplikaci dostane po síti
- DNS a TLS certifikáty pro nový vstupní hostname
Nastavení v pěti krocích
Kompletní návod krok za krokem, s konfiguračními soubory Apache a každým příkazem připraveným ke zkopírování, najdete v našem repozitáři blackbox-webapp-2fa-howto. V hrubých obrysech:
- Vygenerujte SAML SP certifikáty a metadata skriptem
mellon_create_metadata.sh(jediný příkaz v Dockeru). - Stáhněte metadata IdP ze své SSO služby.
- Upravte ukázkovou konfiguraci Apache: váš hostname, URL vašeho backendu, cesty k certifikátům.
- Spusťte kontejner s proxy a zkontrolujte jeho logy.
- Zaregistrujte proxy jako service provider na federační stránce SSO;
zařízení převede SP metadata na hotový příkaz
ntk cfg set.
Otevřete novou adresu aplikace, potvrďte push – a díváte se na svou nedotčenou starší aplikaci, tentokrát za silným ověřováním.
Repozitář popisuje i volitelnou variantu: proxy běžící přímo na uzlech zařízení, s využitím jejich stávajících TLS certifikátů nebo ACME konfigurace, takže samostatného hostitele vůbec nepotřebujete.
Kam tento postup zapadá
Tohle je vzor pro všechno, co mluví HTTP. Zbývající dveře staršího prostředí pokryje totéž zařízení jinými cestami:
- 2FA pro VPN přes RADIUS, pro VPN koncentrátory a cokoli s RADIUS
- Windows Credential Provider pro vzdálenou plochu, pro přihlašování do Windows
- 2FA pro SSH na Linuxu s pam_radius, pro samotné servery