auth-nocache met een inloggegevensbestand: helpt het of schaadt het?
auth-nocache gooit opgevraagde inloggegevens uit het geheugen. Staat het wachtwoord in een bestand, dan betekent de waarschuwing minder, en de optie kan de heronderhandeling breken.
OpenVPN drukt bij het starten een waarschuwing af die auth-nocache aanraadt, en de verleidelijke reactie is de optie toevoegen en kijken hoe de regel verdwijnt. Dat advies veronderstelt een interactieve login. Zodra de gebruikersnaam en het wachtwoord in een bestand staan, verandert de vergelijking: de optie beschermt de duurzame kopie niet meer, en op een client die privileges afstaat kan hij later de heronderhandeling breken. Twee opslagmodellen zijn het waard apart te houden voordat je een profiel bewerkt.
Twee manieren om op de inloggegevensvraag te antwoorden
Het eerste model is een mens die inloggegevens in een terminal typt, of een beheerinterface die ze voor de sessie vasthoudt. OpenVPN bewaart die kopie om de volgende heronderhandeling te beantwoorden zonder opnieuw te vragen, en dat is precies waar de waarschuwing over gaat. Niets op schijf is betrokken, dus het enige dat beschermd moet worden is het proces dat de waarde vasthoudt. Sluit de client en de kopie is ermee weg.
Het tweede model is auth-user-pass dat naar een bestand wijst, waarbij het bestand de opslag is en de client het leest wanneer een waarde nodig is. De blootstelling die hier telt is niet het procesgeheugen maar de rechten en het eigenaarschap van dat bestand. De startwaarschuwing komt van de richtlijnen in de configuratie, niet van een inspectie van hoe je het wachtwoord levert, dus hij verschijnt in beide modellen en wijst naar geen van beide.
De rest van deze vergelijking volgt uit die splitsing: geheugenbeheer voor het ene model, bestandsbeheer en procesidentiteit voor het andere.
Wat auth-nocache werkelijk weggooit
Bij een interactieve login --auth-nocache verwijdert de bewaarde kopie uit het geheugen nadat die is gebruikt. De prijs is een nieuwe vraag bij elk heronderhandelingsinterval, omdat de volgende ronde niet kan hergebruiken wat is weggegooid.
Bij een bestandsgebaseerde login kan de client het bestand opnieuw lezen, dus het weggooien is meestal onzichtbaar. Het wordt zichtbaar op de ene plek waar mensen het niet verwachten: nadat de daemon privileges heeft afgestaan, als het inloggegevensbestand niet leesbaar is voor het account waaronder hij nu draait.
Voeg de optie toe omdat je die ruil begrijpt, niet omdat er een waarschuwing verscheen. Een optie die wordt toegevoegd om een log stiller te maken is een optie waarvan niemand het effect heeft gemeten.
Waar het bestandsgebaseerde pad breekt
Een client die als root start om het tunnelapparaat te openen en dan overstapt naar user en group leest het inloggegevensbestand twee keer: één keer voor de overstap, één keer bij de heronderhandeling die volgt. Als het bestand modus 600 heeft en van root is, mislukt de tweede lezing, en de fout verschijnt een uur later als een authenticatiefout die op een serverprobleem lijkt. Controleer de clientlog rond het heronderhandelingsinterval en controleer daarna het account en het bestand samen.
stat -c '%a %U:%G' /etc/openvpn/client.creds
ps -o user:12,args -C openvpn | headBeide regels doen ertoe. De eerste vertelt je wie het bestand kan lezen, de tweede vertelt je wie de draaiende daemon werkelijk is, en een verschil tussen beide verklaart een fout die geen enkele keer het wachtwoord opnieuw typen zal verhelpen.
De praktische oplossingen zijn niet glamoureus: verplaats het bestand naar een map en een eigenaar die het account van de daemon kan lezen, of houd de bevoorrechte lezing en bevestig dat je client maar één keer leest. Los het niet op door het bestand voor iedereen leesbaar te maken.
Het geval dat de optie echt wil
Een login met een eenmalige code wil auth-nocache om een andere reden. Een eenmalige code wordt door de eerste authenticatie verbruikt, dus een gecachte kopie is nutteloos bij de volgende heronderhandeling en een verouderde waarde zou zelfs opnieuw kunnen worden afgespeeld.
Dat is een vraag over het type inloggegevens, niet over waar ze worden opgeslagen. Een statisch wachtwoord in een beschermd bestand heeft het tegenovergestelde profiel: het moet bij elke heronderhandeling leesbaar zijn, en de bescherming die je nodig hebt zit op het bestand.
Houd die twee redenen apart in de profielcommentaren, anders gaat de volgende beheerder ervan uit dat de optie er is om de reden die hij zelf zou hebben gekozen.
De vergelijking in één beslissing
Kies het interactieve model wanneer er een mens aanwezig is en versheid telt, en accepteer de herhaalde vraag als de prijs. Kies het bestandsmodel wanneer de client onbeheerd draait, en steek de inspanning in eigenaarschap, modus en het afstaan van privileges.
Geen van beide modellen maakt een opgeslagen wachtwoord op zichzelf veilig, en geen van beide maakt de startwaarschuwing betekenisvol.
Als de waarschuwing de enige reden is waarom je het profiel hebt geopend, leg dan de beslissing vast in plaats van een onverklaarde optie: inloggegevens komen uit een bestand dat het account van de daemon kan lezen, een heronderhandeling is geslaagd gezien, en de sectie over heronderhandeling in de OpenVPN 2.6-handleiding is gelezen voordat het interval werd gewijzigd. Die notitie overleeft elke afzonderlijke vlag.