Cada receta de reconexión desatendida acaba en la misma pregunta: dónde vive la contraseña. La respuesta popular es la propia acción de la tarea, que también es el peor lugar para ella. Existen otros dos diseños. Cuál encaja depende de si la máquina puede autenticarse sin una persona y de si el servidor acepta certificados.

Qué deja legible una acción de tarea

Los argumentos de una tarea programada forman parte de su definición, no son un valor oculto en tiempo de ejecución. Cualquiera que pueda leer la tarea, restaurar una copia de seguridad o exportar su XML ve la cadena exactamente como la escribiste. Durante una ejecución, la misma cadena aparece en la lista de procesos. Un agente de monitorización puede copiarla en un registro que nunca revisas.

schtasks /query /tn "VPN Reconnect" /xml
cmdkey /list

Compruébalo antes de suponer lo contrario. El primer comando imprime la definición completa, incluida la acción y sus argumentos. El segundo muestra qué credenciales ha almacenado en caché la cuenta actual, lo que importa para los diseños alternativos de abajo. Si la contraseña aparece en el XML de la tarea, rotarla es solo la mitad de la reparación, porque la tarea aún conserva el valor antiguo.

Qué compra realmente una clave precompartida almacenada

Add-VpnConnection -L2tpPsk escribe la clave en la entrada de la agenda telefónica de la conexión en lugar de en una tarea. Es una superficie de exposición menor que una acción de tarea. Sigue siendo un secreto recuperable, porque un administrador de la máquina puede leer la agenda telefónica.

Para un enlace de laboratorio entre dos máquinas que controlas, ese intercambio puede ser aceptable. Para una credencial de usuario en un punto final compartido, no lo es. Llamarlo almacenamiento cifrado no cambia quién puede leerlo. La agenda telefónica es un archivo de configuración. Planifica para la persona que puede abrirlo, no solo para la persona que puede iniciar sesión como el usuario.

Las credenciales de Winlogon eliminan el secreto y añaden una dependencia

-UseWinlogonCredential sigue otra ruta. La conexión se autentica con MSCHAPv2 contra las credenciales del usuario con sesión iniciada. No se almacena nada extra para esa cuenta.

La dependencia que añade es importante. Debe haber un inicio de sesión interactivo del que tomar prestado, lo que descarta una cuenta de servicio y una tarea previa al inicio de sesión. La conexión también hereda todo lo que las credenciales de ese usuario pueden alcanzar en el servidor. Lee el conmutador como una declaración sobre de dónde vienen las credenciales, no como un ajuste de seguridad. Cambia la fuente, y nada sobre cómo el servidor autoriza la sesión después.

La autenticación con certificados escala porque no se almacena nada

Donde el servidor admite EAP-TLS, un certificado de máquina elimina por completo el secreto compartido, y la revocación ocurre en la capa de certificado. Una tarea que se ejecuta como SYSTEM puede presentar ese certificado sin un inicio de sesión interactivo. Confirma que el servidor acepta la autenticación con certificados antes de construir sobre ella. Un diseño que depende de un método no admitido es un plan, no una solución. Después decide dónde vive la clave privada: el almacén de la máquina para la identidad de un dispositivo, el almacén del usuario para una persona.

Donde no se pueden evitar un nombre de usuario y una contraseña, guárdalos en Credential Manager limitados a la propia cuenta de la tarea. Deja que el cliente los lea de ahí en lugar de un argumento. Un secreto que la tarea puede obtener sin imprimirlo es un problema menor que uno escrito en su definición.

Revisa los artefactos antes de la próxima rotación

Mira lo que se almacena y no lo que pretendías. Comprueba la agenda telefónica por usuario, la copia para todos los usuarios, el XML de la tarea y cualquier script que llame al comando de marcación. Luego confirma que el certificado o la credencial en caché está limitada a la cuenta que usa la tarea, porque una credencial guardada para tu cuenta interactiva es invisible para SYSTEM.

Anota el método de autenticación y la cuenta en las notas de la propia tarea. La próxima persona que cambie la política del servidor necesita saber qué diseño está en juego. Esa respuesta no se ve solo por el comportamiento de reconexión. Escríbela donde la próxima rotación mirará primero.

Artículos relacionados