Sammenkobling av Apache og Google Authenticator

Det har tatt litt tid å komme opp i fart, men tofaktorautentisering får endelig fart på den burde ha hatt for lenge siden.

Joe Consumer kan få en smak av riktig autentisering nå som Google har lagt det til i Gmail, og systemadministratorer har vært i stand til å legge til Google Authenticator til SSH via PAM en stund nå.

Bevæpnet med en Apache-modul kalt google-authenticator-apache-module, er det mulig å integrere Google Authenticator med HTTP-godkjenning.

I forbindelse med denne artikkelen vil jeg anta at du har en fungerende forekomst av SSH som har Google Authenticator integrert.

Det første du trenger å gjøre: gå over og hente en kopi av modulen, i binær eller kildeform. Av grunner som vil fremgå, anbefaler jeg på det sterkeste at du laster ned kildeversjonen.

Følg instruksjonene på prosjektets wikiside, må du legge til følgende linje i delen Moduler på http.conf:
Loadmodule authn_google_module modules/mod_authn_google_authenticator.so 
Og legg til en oppføring basert på eksemplet nedenfor i katalogdelen:

Alternativer FølgSymLinks indekser ExecCGI

Tillat Overordn alle

Ordre nekte, tillat

Tillat fra alle

AuthType Basic

AuthName "Auth Test"

AuthBasicProvider "google_authenticator"

Krev gyldig bruker

GoogleAuthUserPath / etc / httpd / ga_auth

GoogleAuthCookieLife 3600

GoogleAuthEntryWindow 2

Det siste trinnet som trengs for at vi kan teste dette, er å kopiere over en .google_authenticator-fil generert for SSH / PAM-godkjenning. Filen må gi nytt navn til brukernavnet som vi skal logge på som, dvs., etc / httpd / ga_auth / testuser for brukeren som heter testuser.

Nå er vi klare til å rulle: start Apache på nytt, bryte ut Google Authenticator-appen på telefonen din og se om du kan logge deg på. Det fungerer ikke, er det?

Et blikk på feilloggen viser:
 notice Apache/2.2.22 (Unix) mod_ssl/2.2.22 OpenSSL/1.0.1c DAV/2 PHP/5.4.6 configured -- resuming normal operations 

feil klient 127.0.0.1 **** PW AUTH ved T = 1346644020 bruker "test"

feil klient 127.0.0.1 (2) Ingen slik fil eller katalog: check_password: Kunne ikke åpne passordfil: / etc / httpd / ga_auth / (null)

feil klient 127.0.0.1 brukertest: autentiseringsfeil for "/ auth_test /": Passordmismatch

Årsaken til at vi ser denne feilen er at modulen ikke leter etter riktig filnavn. For et hvilket som helst brukernavn leter det faktisk etter en fil som heter "(null)". Ikke den beste driftsprogramvaren som noen gang er laget.

Heldigvis finnes det en løsning på prosjektets tracker som gir utskiftninger som fungerer riktig. Jeg ville brukt kildeversjonen som et sikkerhetstiltak, spesielt hvis jeg skulle sette dette i produksjon.

Når den oppdaterte modulen er installert på nytt og Apache startes på nytt, bør en titt i feilloggen se at modulen fungerer som forventet, og prøve å matche de riktige tilgangskodene med brukerinngangen. Fra et brukerperspektiv brukes koden i stedet for passordet, og må skrives inn i passordfeltet i HTTP-godkjenningsdialogen.

 error client 127.0.0.1 Checking codes @ T=44888256 "864881" vs. "18281" 

feil klient 127.0.0.1 Kontrollerer koder @ T = 44888256 "67751" vs. "18281"

feil klient 127.0.0.1 Kontrollerer koder @ T = 44888256 "945532" vs. "18281"

feil klient 127.0.0.1 Kontrollerer koder @ T = 44888256 "502130" vs. "18281"

feil klient 127.0.0.1 Kontrollerer koder @ T = 44888256 "18281" vs. "18281"

feil klient 127.0.0.1 Opprettet cookie utløper 1346651300 (tid = 3600) hasj er DSA8 + AyT5QlcvbsF7JHX75bi37c = Cookie: google_authn = testuser: 1346651300: DSA8 + AyT5QlcvbsF7JHX75bi37c =

Vil dette systemet erstatte ditt eksisterende autentiseringssystem?

Det har et par begrensninger i å ikke kunne bruke skrapekoder og ikke ugyldighetskoder når de først er brukt. Et annet problem å være klar over er kompromisset som må gjøres i konfigurasjonen mellom vindusstørrelsen på eksisterende koder som skal tillates og cookienes levetid. I sin strengeste form ville det være mulig å kreve en ny autentiseringskode hvert minutt; dette kan være akseptabelt, forutsatt at klokkene mellom brukeren og serveren ble synkronisert - neppe den enkleste oppgaven i verden.

Personlig ønsker jeg ikke å være ansvarlig for et system som produserte en ny Google-autentiseringsfil for hver bruker av en offentlig vendt server. Mengden arbeid som trengs på brukersiden, for eksempel å laste inn en nøkkel eller skanne en QR-kode med en mobiltelefon, er ganske høy og hjelper ikke av mangelen på støtten til nødskrapekoder. Det ville gjøre "å glemme et passord" til en virkelig vemmelig opplevelse - spesielt sammenlignet med alternativene.

Hvor dette kan være nyttig er å låse inn noen supersensitiv intern informasjon, der smerten ved oppsett og administrasjon er verdt det, og brukerøkten ikke er for lang.

I dette scenariet er modulen en fin forstørrelse til en eksisterende autentiseringsløsning.

© Copyright 2021 | mobilegn.com