Unjildige geheimen binne in probleem fan de kontener, net in wachtwurdregel
In wegere oanmelding hat miskien nea by de poarte kommen. Ferlykje earst de ynfierkontener, de autentikaasjestap en it akkount sels.
It sjen fan „unjildige geheimen“ liedt meast ta ien konklúzje: de VPN hâldt net fan lêstekens. Dy konklúzje is meastentiids ferkeard, want it berjocht komt faak út pleatslike ferwurking foardat in poarte nei it akkount sjoen hat. Twa ûntwerpen leverje itselde wachtwurd, in grafysk fjild en in oanmeldingsbestân, en se mislearje op ferskillende plakken. Ferlykje de konteners foardat jo in wachtwurd ferienfâldigje dat al dy tiid goed wie.
De flater komt foar de poarte
Pleatslike falidaasje, in beskoattele geheimesopslach, in ûntbrekkende agent en in ferkeard oanmeldingsbestân jouwe allegear flaters dy't in brûker as ien wegering belibbet. Gjin fan dy belûkt de autentikaasjeserver. De poarte syn eigen wegering is in apart barren, en it komt meastentiids mei in oar berjocht en in oare tiid. It bart neidat der in tunnel is en de oanmelding oerdroegen is.
Dat de earste fraach is net hokker tekens tastien binne, mar wêr't de poging stoppe. In klant dy't nea in ferbining iepene hat, is troch nimmen wegere. Skriuw de stap op dy't jo waarnommen hawwe, want elke folgjende stap hinget fan dy yndieling ôf.
It ûnderskie feroaret ek wa't it reparearret. In kontenerprobleem heart by it apparaat en syn eigner, wylst in akkountwegering heart by wa't de autentikaasje-backend beheart.
Ferlykje de konteners, net de tekens
In grafysk wachtwurdfjild, in yngong yn 'e kaaimrige, in oanmeldingsbestân fan twa rigels en in automatisearringsgeheim drage elk deselde wearde yn in oare omhulsel. It omhulsel hat syn eigen regels, en dy regels brekke meastentiids. De wearde is komselden it probleem; it ferfier fan 'e wearde is it. Hâld de twa ideeën apart en de diagnoaze wurdt koarter.
| Where the value stops | What you see | What you check | Who owns the fix |
|---|---|---|---|
| GUI field or managed profile | A validation message before any connection opens | The selected authentication mode and whether the field holds the secret or the username | The device owner or the profile author |
| Keychain or secret agent | A prompt that keeps reappearing, or an agent error | Whether the agent is unlocked and holds an entry for this profile | The user who owns the keychain |
| Two-line credential file | A prompt for a password that was already supplied | Line count, line order and whether a trailing newline is present | Whoever generated the file |
| Shell argument or environment | Works interactively but fails in automation | Whether the shell expanded, trimmed or logged the value | Whoever wrote the automation |
Klantopsjes fan 'e OpenVPN 2.6-mienskip beskriuwe dat bestân fan twa rigels foar auth-user-pass, ynklusyf it gedrach as de wachtwurdrigel ûntbrekt: dan freget de klant der sels om. Dat iene detail ferklearret in hiele klasse rapporten fan it type „it freget om in wachtwurd dat ik al opjûn haw“. It fertelt jo ek dat in lege twadde rigel in betsjuttingsfolle tastân is, net in harmless opmaakkar.
Oanheljen is wer in aparte laach: oanheltekens yn in gewoan oanmeldingsbestân wurde as gegevens bewarre, wylst in shell se fuorthellet foardat it programma wat dan ek sjocht. Deselde karakter is op it iene plak harmless en op it oare struktureel. In tabel kin jo net fertelle hokker kontener jo klant brûkt hat, dus lês de eigen konfiguraasje fan 'e klant foardat jo in rige kieze.
Rigelbrekken binne ek struktureel. In bestân mei rigels skieden fjilden kin gjin wearde drage dy't in nije rigel befettet, en dat is in beheining fan it formaat, net in oardiel oer wachtwurdsterkte. Brûk it stipe leveringsmeganisme fan 'e útrulling ynstee fan it geheim koarter te meitsjen om it yn in betocht bestân te passen.
Meitsje it oanmeldingsbestân sûnder skea fan 'e shell
De feilichste pleatslike rûte hâldt it geheim bûten de shell-skiednis en bûten de argumintlist fan it proses. Lês beide fjilden ynteraktyf, skriuw dan de twa rigels dy't de klant ferwachtet. Al it oare kin yn in konfiguraasjebestân bliuwe dat maklik nei te sjen is.
read -r VPN_USER
read -rs VPN_PASS
printf '%s\n%s\n' "$VPN_USER" "$VPN_PASS" > /etc/openvpn/client/creds
chmod 600 /etc/openvpn/client/creds
openvpn --config /etc/openvpn/client/office.conf --auth-user-pass /etc/openvpn/client/creds
De earste twa opdrachten lêze de brûkersnamme en dan it wachtwurd sûnder it te toanen, de tredde skriuwt beide rigels, de fjirde beheint it bestân, en de lêste start de klant mei dat bestân. Tink derom dat read -r efteroer skeane streken bewarret, en dat is krekt it soarte detail dat in wurkjend wachtwurd yn in mislearjend feroaret as it weilitten wurdt.
Foarkom dat jo it bestân bouwe mei in fariabele sûnder oanheltekens of mei in here-dokumint fol shell-útwreidings. Beide kinne tekens feroarje foardat se it bestân berikke, en de resultearjende flater liket op in VPN-wegering om't it wachtwurd op skiif wier oars is as it wachtwurd dat jo kenne. Fertink jo dat, ferlykje dan de bytelengte fan it bestân mei de ferwachte wearde, sûnder it geheim sels ôf te printsjen. In ferskil fan ien of twa bytes is de hantekening fan in oanhelte-ûngelok.
Lês de stap út de earste flater
Hâld it earste konkrete berjocht fan ien poging en yndiel it dan. In pleatslike falidaasjeflater, in ûntbrekkende priveekaai, in net beskikbere geheime-agent en in autentikaasjeflater by de poarte binne fjouwer ferskillende útkomsten mei fjouwer ferskillende eigners. Mar ien fan harren giet oer it akkount.
As de poarte wier in korrekt oanlevere oanmelding wegert, kontrolearje it akkount, de autentikaasje-backend en elke ferplichte útdaging mei de behearder. In algemiene autentikaasjeflater neamt gjin ferbeane karakter.
Bring de goedkarde wearde werom fia it juste meganisme ynstee fan it te ferbinen ta letters en sifers. It wachtwurdbelied heart by de operator, en in omwei dy't dat stil omsylt is gjin repaaraasje. It ferberget ek it echte defekt foar de folgjende persoan, dy't deselde flater mei in swakker wachtwurd en sûnder better idee treffe sil.