could not read Auth username from stdin ser ut som eit autentiseringsproblem og er det ikkje. OpenVPN prøvde å spørje om brukarnamnet på standard inndata, fann ingenting lesbart og stoppa før det nokon gong kontakta tenaren. Kontoen kan vere heilt gyldig; prosessen har rett og slett ingen å spørje.

Derfor er det første nyttige trinnet å stadfeste kva klienten les, ikkje å prøve tilkoplinga på nytt eller endre innstillingar på tenarsida. Gå gjennom kontrollane nedanfor i rekkjefølgje, og stopp ved den første som feilar.

Les feilen som ein lokal inndatafeil

Når auth-user-pass viser seg utan eit filargument, ventar klienten å spørje. I eit interaktivt skal fungerer den førespurnaden fordi prosessen eig ein terminal. Under systemd, ein cron-jobb eller ein container er standard inndata vanlegvis tom, og lesinga kjem straks tilbake med feilen du ser.

Meldinga namngjev òg feltet som feila, brukarnamn eller passord, noko som viser kor langt lesinga kom. Eit manglande brukarnamn tyder at prosessen ikkje kunne lese noko i det heile. Eit manglande passord etter eit vellukka brukarnamn tyder at inndatastraumen tok slutt mellom dei to lesingane, noko som er typisk for ei halvskriven fil eller eit lukka røyr.

Stadfest klienten sitt eige syn før du endrar noko anna. Køyr han i forgrunnen med same konfigurasjon og same brukar, og sjå om førespurnaden dukkar opp. Viss han gjer det i skalet ditt, men ikkje under tenestebehandlararen, er skilnaden inndatakjelda, ikkje legitimasjonsdataa. Ei rask samanlikning av unit-fila og skalmiljøet ditt viser vanlegvis kva av dei som gjev ein terminal.

Gje tenesta ei støtta kjelde for legitimasjonsdata

Den støtta kjelda for uovervaka drift er ei legitimasjonsfil som blir send som argument til auth-user-pass. Fila blir lesen som rein tekst: den første lina er brukarnamnet, den andre er passordet. Peik på ho med ein absolutt stig som /etc/openvpn/client/creds , slik at arbeidskatalogen til tenestekontoen ikkje kan endre tydinga av direktivet.

Løyve tyder like mykje som stigen. Fila må kunne lesast av kontoen som køyrer klienten, og ikkje av alle andre, og ho bør eigast av tenestekontoen eller av root med ei gruppe som omfattar tenesta. Kontroller lesbarheita som den kontoen, utan å skrive ut innhaldet.

Ein relativ stig er den stille feilmodusen. Profilen kan liggje i ein katalog medan systemd startar prosessen ein annan stad, så ei fil som blir løyst i skalet ditt, blir ikkje løyst for tenesta. Flytt legitimasjonsdataa til ein fast stad og vis til dei absolutt. Start deretter tenesta éin gong og stadfest at same stig blir brukt, i staden for å stole på profileditoren.

Viss utrullinga krev ein eingongskode eller ei anna interaktiv utfordring, avgjer om arbeidsflyten til klienten faktisk støttar det uovervaka. Ei fil med eit statisk passord kan ikkje svare på ein roterande kode, og å prøve ein førespurnad som ikkje kan svarast på nytt tilfører ingen informasjon.

Kvifor script-security ikkje hjelper

script-security styrer om klienten kan køyre skript og kor mykje han kan sende til dei, inkludert om eit passord kan givast til eit skript via ein miljøvariabel. Han seier ingenting om kvar brukarnamn og passord kjem frå i utgangspunktet.

Å heve han til eit høgare nivå er ein vanleg refleks fordi meldinga nemner Auth, men det endrar skriptløyve snarare enn inndatakjelda, og utvidar kva klienten kan køyre. Viss eit hjelpeskript er ein del av designet, fiks inndatakjelda først og hald tryggingsnivået på den lågaste verdien utrullinga treng.

Administrasjonsgrensesnittet er eit legitimt alternativ. Ein frontend kan kople til det, ta imot førespurnaden om legitimasjonsdata og svare med brukarnamn og passord, slik nokre GUI-ar fungerer. Viss du brukar det, bind det til ei lokal adresse, vern det med ei administrasjonspassordfil og avgrens kven som kan kople til, fordi det er ein kontrollkanal for klienten.

Stadfest neste trinn etter at klienten har lese fila

Når klienten kan lese legitimasjonsdataa, er neste feil ein ekte utveksling med tenaren, og meldinga har ei anna tyding. Ein autentiseringsfeil på det trinnet tyder at tenaren avviste kontoen; eit utfordringssvar tyder at tenaren vil ha ein annan faktor. Handsame dei som nye problem i staden for det same gjenteke.

Test heile vegen slik tenesta vil køyre han: same konto, same arbeidskatalog, same unit-miljø. Ei tilkopling som berre fungerer når ho blir starta frå skalet ditt, er eit teikn på at ein miljøvariabel eller ein terminal framleis er ein del av flyten.

Hald deretter løyndomane der dei høyrer heime. Passord i kommandolinjeargument viser seg i prosesslista, og passord i feilsøkingsutdata endar i saker. Bruk ei verna fil eller administrasjonsgrensesnittet, hald loggane på eit nivå som ikkje gentek legitimasjonsdata, og byt ut fila når nokon med tilgang sluttar.

Sjekkliste: absolutt stig til legitimasjonsdata, lesbar som tenestekonto, ingen terminal kravd, script-security late vere på minimum, administrasjonsgrensesnitt berre viss det er bunde og autentisert, og tenarsvaret som følgjer blir handsama som ei eiga hending.

Relaterte artiklar