Gandrīz katrā uzņēmumā ir šāda lietotne: iekšēja tīmekļa sistēma, uz kuras turas puse biznesa procesu, kuras piegādātājs sen pazudis vai kuras pirmkodam neviens neuzdrošinās pieskarties — un kuru revidents tagad prasa aizsargāt ar daudzfaktoru autentifikāciju.
Jums tā nav jāmaina. Jums pat nav jāzina, kādā valodā tā rakstīta. Risinājums ir izturēties pret lietotni kā pret melno kasti un novietot autentifikāciju tās priekšā: reverso starpniekserveri, kas sazinās SAML protokolā un izmanto Notakey SSO servisu, lai ikviena pieteikšanās būtu jāapstiprina ar pieskārienu tālrunī, pirms lietotni sasniedz kaut viens pieprasījums.
Kā tas darbojas
Browser ──▶ reverse proxy (Apache + mod_auth_mellon) ──▶ legacy app
│
└──SAML──▶ Notakey SSO (IdP) ──▶ push ──▶ user's phone
- Pārlūkprogramma pieprasa aizsargātu URL. Starpniekserverim vēl nav SAML sesijas, tāpēc tas novirza lietotāju uz identitātes nodrošinātāju (SSO servisu, kas iekļauts Notakey iekārtas komplektā).
- Lietotājs ievada savu lietotājvārdu, un autentifikācijas serveris nosūta apstiprinājuma pieprasījumu uz viņa tālruni.
- Pēc apstiprinājuma pārlūkprogramma atgriežas ar parakstītu SAML apliecinājumu (assertion). Starpniekserveris pārbauda parakstu un tikai tad ļauj pieprasījumiem sasniegt lietotni.
Pati lietotne netiek mainīta nekad. Ja tai ir savs pieteikšanās ekrāns, tas paliek, kur bijis: šis risinājums uzstāda vārtus priekšā, nevis aizstāj to, kas atrodas aiz tiem.
Galvenais drošības priekšnoteikums
Starpniekserveris spēj aizsargāt tikai to, ko nevar apiet. Mantotajai lietotnei jābūt sasniedzamai vienīgi caur starpniekserveri. Iekšējs ugunsmūra noteikums vai atsevišķs Docker tīkls (ja lietotne darbojas konteinerā) ir obligāta uzstādīšanas daļa, nevis papildiespēja. Ja lietotāji lietotnei joprojām var piekļūt tieši pēc IP adreses, 2FA ir tikai dekorācija.
Kas būs nepieciešams
- Notakey autentifikācijas iekārta ar ieslēgtu iebūvēto SSO servisu un lietotājiem, kuri jau reģistrēti Notakey Authenticator lietotnē
- Docker jebkurā resursdatorā, kas var sasniegt lietotni
- DNS ieraksts un TLS sertifikāti jaunajam ārējam resursdatora nosaukumam
Uzstādīšana piecos soļos
Pilns ceļvedis ar visām komandām un Apache konfigurācijas failiem (visu var kopēt un ielīmēt) atrodams mūsu blackbox-webapp-2fa-howto repozitorijā. Īsumā:
- Ģenerējiet SAML SP sertifikātus un metadatus ar
mellon_create_metadata.sh(viena Docker komanda). - Iegūstiet IdP metadatus no sava SSO servisa.
- Pielāgojiet parauga Apache konfigurāciju: ierakstiet savu resursdatora nosaukumu, backend URL un sertifikātu ceļus.
- Palaidiet starpniekservera konteineru un pārbaudiet tā žurnālus.
- Reģistrējiet starpniekserveri kā pakalpojuma sniedzēju SSO
federācijas lapā. Iekārta pārvērš SP metadatus gatavā
ntk cfg setkomandā.
Atveriet lietotnes jauno adresi, apstipriniet push paziņojumu — un jūsu priekšā būs tā pati neskartā mantotā lietotne, nu jau aiz stingras autentifikācijas.
Repozitorijā aprakstīts arī cits variants: palaist starpniekserveri tieši uz iekārtas mezgliem, izmantojot to esošos TLS sertifikātus vai ACME konfigurāciju, tad atsevišķs resursdators nav vajadzīgs vispār.
Kur šis risinājums iederas
Šis modelis der jebkurai lietotnei, kas darbojas caur HTTP. Pārējās mantotās infrastruktūras “durvis” tā pati iekārta nosedz ar citiem paņēmieniem:
- VPN 2FA ar RADIUS — VPN koncentratoriem un visam, kas izmanto RADIUS
- Windows Credential Provider attālajai darbvirsmai — Windows pieteikšanās aizsardzībai
- Linux SSH 2FA ar pam_radius — pašiem serveriem