Veure «secrets no vàlids» sol portar a una conclusió: la VPN no li agrada la puntuació. Aquesta conclusió sol ser errònia, perquè sovint el missatge prové del tractament local abans que cap passarel·la hagi mirat el compte. Dos dissenys lliuren la mateixa contrasenya, un camp gràfic i un fitxer de credencials, i fallen en llocs diferents. Compareu els contenidors abans de simplificar una contrasenya que sempre havia estat correcta.

L'error arriba abans que la passarel·la

La validació local, un magatzem de secrets bloquejat, un agent absent i un fitxer de credencials mal format produeixen tots fallades que l'usuari viu com un sol rebuig. Cap d'ells no implica el servidor d'autenticació. El rebuig propi de la passarel·la és un esdeveniment diferent, i normalment arriba amb un missatge i un moment diferents. Passa després que existeixi un túnel i que les credencials s'hagin transmès.

Per tant, la primera pregunta no és quins caràcters són legals sinó on s'ha aturat l'intent. Un client que mai no ha obert una connexió no ha estat rebutjat per ningú. Anoteu l'etapa que heu observat, perquè cada pas posterior depèn d'aquesta classificació.

La distinció també canvia qui ho arregla. Un problema de contenidor pertany al dispositiu i al seu propietari, mentre que un rebuig de compte pertany a qui gestiona el rerefons d'autenticació.

Compareu els contenidors, no els caràcters

Un camp de contrasenya gràfic, una entrada del clauer, un fitxer de credencials de dues línies i un secret d'automatització porten cadascun el mateix valor en un embolcall diferent. L'embolcall té les seves regles, i aquestes regles són les que solen trencar-se. El valor poques vegades és el problema; el transport del valor ho és. Mantingueu les dues idees separades i el diagnòstic serà més curt.

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

Opcions del client OpenVPN 2.6 de la comunitat descriuen aquest fitxer de dues línies per a auth-user-pass, incloent-hi el comportament quan falta la línia de la contrasenya: aleshores el client la demana. Aquest sol detall explica tota una classe d'informes del tipus «em demana una contrasenya que ja he donat». També us diu que una segona línia buida és un estat significatiu i no una opció de format inofensiva.

Les cometes són una altra capa a part: les cometes dins d'un fitxer de credencials senzill es desen com a dades, mentre que l'intèrpret d'ordres les elimina abans que el programa vegi res. El mateix caràcter és inofensiu en un lloc i estructural en l'altre. Una taula no us pot dir quin contenidor ha fet servir el vostre client, així que llegiu la configuració del client abans de triar una fila.

Els salts de línia també són estructurals. Un fitxer amb camps delimitats per línies no pot portar un valor que contingui un salt de línia, i això és una limitació del format, no un judici sobre la força de la contrasenya. Feu servir el mecanisme de lliurament suportat pel desplegament en comptes de retallar el secret perquè càpiga en un fitxer improvisat.

Creeu el fitxer de credencials sense danys de l'intèrpret

La ruta local més segura manté el secret fora de l'historial de l'intèrpret i de la llista d'arguments del procés. Llegiu tots dos camps de manera interactiva i després escriviu les dues línies que el client espera. Tota la resta pot quedar en un fitxer de configuració fàcil de revisar.

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

Les dues primeres ordres llegeixen el nom d'usuari i després la contrasenya sense mostrar-la, la tercera escriu les dues línies, la quarta restringeix el fitxer i l'última inicia el client amb aquest fitxer. Fixeu-vos que read -r conserva les barres invertides, i aquest és exactament el tipus de detall que converteix una contrasenya que funciona en una que falla quan s'omet.

Eviteu construir el fitxer amb una variable sense cometes o amb un here-document ple d'expansions de l'intèrpret. Tots dos poden transformar caràcters abans que arribin al fitxer, i la fallada resultant sembla un rebuig de la VPN perquè la contrasenya del disc és realment diferent de la que coneixeu. Si ho sospiteu, compareu la longitud en bytes del fitxer amb el valor esperat, sense imprimir el secret. Una diferència d'un o dos bytes és la signatura d'un accident de cometes.

Llegiu l'etapa a partir del primer error

Conserveu el primer missatge concret d'un intent i classifiqueu-lo. Un error de validació local, una clau privada absent, un agent de secrets no disponible i una fallada d'autenticació a la passarel·la són quatre resultats diferents amb quatre propietaris diferents. Només un d'ells tracta del compte.

Si la passarel·la realment rebutja una credencial lliurada correctament, comproveu el compte, el rerefons d'autenticació i qualsevol repte necessari amb l'administrador. Una fallada d'autenticació genèrica no indica cap caràcter prohibit.

Restaureu el valor aprovat pel mecanisme correcte en comptes de reduir-lo a lletres i xifres. La política de contrasenyes pertany a l'operador, i una solució alternativa que la incompleixi en silenci no és cap arreglament. També amaga el defecte real a la persona següent, que trobarà el mateix error amb una contrasenya més feble i sense cap idea millor.

Articles relacionats