Evite que NetworkManager mostre un contrasinal VPN gardado
Pídao cada vez, entrégueo a un chaveiro ou manteña un ficheiro só para root. Cada opción supón unha exposición distinta, e o indicador do contrasinal debe concordar con ela.
NetworkManager pode gardar un contrasinal VPN para que a conexión se levante sen que ninguén o escriba, e pode volver mostrar ese valor mediante o editor ou mediante nmcli --show-secrets. Hai tres modelos de propiedade dispoñibles, e o comportamento de visualización só é un síntoma do que escolleu. Escolla primeiro o modelo e despois defina o indicador que lle corresponde, en vez de ocultar un campo cun texto de recheo que confundirá a seguinte persoa.
Tres modelos de propiedade
O primeiro modelo pregunta cada vez. Non se garda nada, o segredo existe só durante a activación, e quen inicie a conexión debe saber o contrasinal. É a opción menos cómoda e a máis fácil de defender.
O segundo entrega o segredo a un chaveiro propiedade do usuario. O axente desbloquéase ao comezar a sesión e fornece o valor a demanda, o que o mantén fóra do ficheiro de conexión pero ata a conexión á sesión dese usuario. De aí seguen dúas condicións: o axente debe estar en execución e debe estar desbloqueado.
O terceiro garda unha credencial protexida para unha conexión de sistema. Sobrevive aos reinicios e funciona antes de que ninguén inicie sesión, e a cambio o valor reside no disco protexido por permisos de ficheiro e non por cifrado.
Cada modelo é razoable no contexto axeitado. O erro é mesturalos, e así un portátil acaba cun segredo en dous lugares e sen unha resposta clara sobre cal manda. Anote que modelo usa un perfil. Unha liña no manual do equipo aforra á seguinte persoa inventar un cuarto lugar onde mirar.
Lea o estado actual antes de cambialo
Mire o perfil e o estado do segredo como o usuario que xestiona a conexión. O segundo comando é o que lle di se o valor é realmente lexible.
nmcli connection show "Office VPN"
nmcli --show-secrets connection show "Office VPN"
sudo stat -c '%U %a %n' /etc/NetworkManager/system-connections/*.nmconnection
Un ficheiro de clave nese directorio adoita pertencer a root con modo 600. Iso mantén fóra os usuarios normais e non mantén fóra a root, o que importa cando a mesma máquina se comparte ou cando unha copia de seguridade se executa como root.
Os permisos de ficheiro son unha fronteira, non cifrado. Quen poida ler o ficheiro como root ten o contrasinal en texto claro. É un intercambio aceptable para un servidor sen supervisión e malo para unha estación de traballo compartida. Escribilo unha vez evita unha longa discusión sobre se o valor está protexido.
Que fai cada valor do indicador
O segredo de VPN leva unha propiedade flags, e os valores non son intuitivos só a partir dos números.
| Value | Meaning | Practical effect |
|---|---|---|
| 0 | No special flag | Secret is typically saved with the connection |
| 1 | Agent-owned | A keyring or secret agent supplies it |
| 2 | Not saved | Prompted at each activation |
| 4 | Not required | Connection proceeds without asking |
O comportamento efectivo tamén depende do complemento e de se hai un axente en execución, así que trate a táboa como o contrato e o comportamento observado como o que verifica. Un valor que funciona nun escritorio pode comportarse distinto nun servidor sen sesión. En esa fenda viven a maioría dos tíquetes confusos.
Defina a propiedade explicitamente en lugar de borrar unha liña e esperar. Un indicador ausente non é unha política, e a próxima actualización do paquete pode enchelo con algo que non pretendía.
Axuste o modelo a cando se inicia a conexión
Se a conexión só se inicia mentres un usuario ten a sesión iniciada, a propiedade do axente encaixa ben e mantén o segredo fóra do ficheiro. Se se inicia ao arrincar, antes de que exista ningunha sesión, un axente non lle pode axudar.
Esa é toda a decisión para a maioría das máquinas. Tamén explica unha clase de informes confusos nos que a conexión funciona de forma interactiva e falla tras un reinicio. O indicador nunca cambiou; cambiou o contexto.
Para o caso sen supervisión, a resposta práctica é un ficheiro restrinxido propiedade de root ou unha fonte de credenciais aprobada. Mantéñao fóra do perfil de conexión se ese perfil algunha vez se exporta ou se copia a outra máquina.
Se o valor xa era visible, cámbieo
Cambiar un indicador deixa intacto o contrasinal. Un valor que apareceu nunha captura de pantalla, no historial do shell, nun paquete enviado a soporte ou nun ficheiro que outros usuarios podían abrir debe considerarse revelado.
Cámbieo no servidor, despois corrixa o cliente e remate calquera sesión que se autenticase co anterior. Borrar a conexión local non revoga nada no outro extremo, e esa é a parte que a xente pasa por alto.
Despois deixe de poñer o contrasinal na liña de ordes. Acaba no historial do shell e pode aparecer nunha listaxe de procesos; use o aviso interactivo ou o axente.
Verifique reconectando
Repita o comando que mostrou o segredo e confirme que o campo xa non se imprime. Despois desconecte e reconecte, e reinicie se a conexión se inicia automaticamente, porque o fallo interesante só aparece cando cambia o contexto da sesión.
Se o segredo aínda aparece, entrégao outro perfil ou outro axente. Inspeccione a conexión activa e o chaveiro en lugar de borrar ficheiros ata que o síntoma se mova.