Tokią turi kiekviena įmonė: vidinę žiniatinklio programą, ant kurios laikosi pusė verslo, kurios tiekėjo seniai nebėra arba prie kurios kodo niekas nedrįsta prisiliesti. Ir būtent ją auditorius dabar reikalauja apsaugoti kelių veiksnių autentifikavimu.
Jums nereikia jos keisti. Net nebūtina žinoti, kokia kalba ji parašyta. Sprendimo esmė – laikyti programą juodąja dėže ir autentifikavimą iškelti prieš ją: SAML protokolu kalbantis atvirkštinis tarpinis serveris (reverse proxy), už kurio stovi Notakey SSO servisas, todėl kiekvienas naudotojas savo prisijungimą privalo patvirtinti telefonu dar prieš pirmajai užklausai pasiekiant programą.
Kaip tai veikia
Browser ──▶ reverse proxy (Apache + mod_auth_mellon) ──▶ legacy app
│
└──SAML──▶ Notakey SSO (IdP) ──▶ push ──▶ user's phone
- Naršyklė kreipiasi į apsaugotą URL. Tarpinis serveris nemato SAML sesijos ir nukreipia į tapatybės teikėją – SSO servisą, kuris pateikiamas kartu su Notakey įrenginiu.
- Naudotojas įveda savo naudotojo vardą; autentifikavimo serveris į jo telefoną išsiunčia patvirtinimo užklausą.
- Patvirtinus, naršyklė grįžta su pasirašytu SAML teiginiu (assertion). Tarpinis serveris patikrina parašą ir tik tada praleidžia užklausas iki programos.
Pati programa lieka nepakeista. Jei ji turi savo prisijungimo langą, jis lieka koks buvęs. Šis sprendimas pastato vartus priešais, o ne keičia tai, kas už jų.
Vienintelė taisyklė, nuo kurios priklauso saugumas
Tarpinis serveris apsaugo tik tai, ko negalima apeiti. Sena programa turi būti nepasiekiama niekaip kitaip, tik per tarpinį serverį. Vidinė užkardos taisyklė arba atskiras Docker tinklas (jei programa veikia konteineryje) yra neatsiejama diegimo dalis, o ne pasirenkamas priedas. Jei naudotojai vis dar gali kreiptis tiesiai į programos IP adresą, 2FA tėra dekoracija.
Ko jums reikės
- Veikiančio Notakey autentifikacijos įrenginio su komplekte esančiu SSO servisu ir naudotojų, užregistruotų Notakey Authenticator programėlėje
- Docker bet kuriame serveryje, kuris pasiekia programą
- DNS įrašų ir TLS sertifikatų naujajam serverio vardui, per kurį bus pasiekiama programa
Diegimas per penkis žingsnius
Išsamų, tiesiog nusikopijuojamą aprašymą su Apache konfigūracijos failais ir kiekviena komanda rasite mūsų blackbox-webapp-2fa-howto saugykloje. Trumpai:
- Sugeneruokite SAML SP sertifikatus ir metaduomenis su
mellon_create_metadata.sh(viena Docker komanda). - Parsisiųskite IdP metaduomenis iš savo SSO serviso.
- Pritaikykite pavyzdinę Apache konfigūraciją: jūsų serverio vardas, jūsų vidinės programos URL, sertifikatų keliai.
- Paleiskite tarpinio serverio konteinerį ir peržiūrėkite jo žurnalus.
- Užregistruokite tarpinį serverį kaip paslaugos teikėją SSO federacijos
puslapyje. Įrenginys SP metaduomenis paverčia paruošta
ntk cfg setkomanda.
Atsidarykite programą naujuoju adresu, patvirtinkite pranešimą telefone – ir prieš akis ta pati, nė kiek nepakeista sena programa, tik dabar jau už stiprios autentifikacijos.
Saugykloje aprašytas ir papildomas variantas: tarpinį serverį paleisti tiesiai įrenginio mazguose, panaudojant jau turimus TLS sertifikatus ar ACME konfigūraciją, ir tuomet atskiro serverio apskritai nereikia.
Kur šis sprendimas pritampa
Šis šablonas tinka viskam, kas bendrauja HTTP protokolu. Likusiai senų sistemų daliai tas pats įrenginys uždengia ir kitas duris:
- VPN 2FA per RADIUS, skirta VPN koncentratoriams ir viskam, kas naudoja RADIUS
- Windows Credential Provider nuotoliniam darbalaukiui, skirtas Windows prisijungimams
- Linux SSH 2FA su pam_radius, skirta patiems serveriams