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 stopsWhat you seeWhat you checkWho owns the fix
GUI field or managed profileA validation message before any connection opensThe selected authentication mode and whether the field holds the secret or the usernameThe device owner or the profile author
Keychain or secret agentA prompt that keeps reappearing, or an agent errorWhether the agent is unlocked and holds an entry for this profileThe user who owns the keychain
Two-line credential fileA prompt for a password that was already suppliedLine count, line order and whether a trailing newline is presentWhoever generated the file
Shell argument or environmentWorks interactively but fails in automationWhether the shell expanded, trimmed or logged the valueWhoever 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.

Relatearre artikelen