Reconectar uma VPN do Windows sem colocar a senha na tarefa
Uma tarefa rasdial funciona até você ler os argumentos dela. Compare os três designs que evitam um segredo em texto claro e escolha conforme o suporte do servidor e o modo de logon.
Cada receita de reconexão autônoma acaba na mesma pergunta: onde a senha mora. A resposta popular é a própria ação da tarefa, que também é o pior lugar para ela. Existem outros dois designs. Qual se encaixa depende de a máquina conseguir autenticar sem uma pessoa e de o servidor aceitar certificados.
O que uma ação de tarefa deixa legível
Os argumentos em uma tarefa agendada fazem parte da definição dela, não são um valor oculto em tempo de execução. Qualquer um que possa ler a tarefa, restaurar um backup dela ou exportar o XML dela vê a string exatamente como você digitou. Durante uma execução, a mesma string aparece na lista de processos. Um agente de monitoramento pode copiá-la para um log que você nunca revisa.
schtasks /query /tn "VPN Reconnect" /xml
cmdkey /list
Verifique antes de supor o contrário. O primeiro comando imprime a definição completa, incluindo a ação e os argumentos dela. O segundo mostra quais credenciais a conta atual tem em cache, o que importa para os designs alternativos abaixo. Se a senha aparece no XML da tarefa, trocá-la é só metade do reparo, porque a tarefa ainda guarda o valor antigo.
O que uma chave pré-compartilhada armazenada realmente rende
Add-VpnConnection -L2tpPsk grava a chave na entrada da agenda telefônica da conexão em vez de na tarefa. Essa é uma superfície de exposição menor que uma ação de tarefa. Ainda é um segredo recuperável, porque um administrador na máquina consegue ler a agenda telefônica.
Para um link de laboratório entre duas máquinas que você controla, essa troca pode ser aceitável. Para uma credencial de usuário em um endpoint compartilhado, não é. Chamar isso de armazenamento criptografado não muda quem consegue ler. A agenda telefônica é um arquivo de configuração. Planeje para a pessoa que consegue abri-lo, não só para a pessoa que consegue entrar como o usuário.
As credenciais do Winlogon removem o segredo e adicionam uma dependência
-UseWinlogonCredential segue outro caminho. A conexão autentica com MSCHAPv2 contra as credenciais do usuário conectado. Nada extra é armazenado para essa conta.
A dependência que ele adiciona é significativa. Precisa haver um logon interativo de onde emprestar, o que exclui uma conta de serviço e uma tarefa antes do logon. A conexão também herda tudo o que as credenciais desse usuário alcançam no servidor. Leia a opção como uma declaração sobre de onde vêm as credenciais, não como um ajuste de segurança. Ela muda a fonte, e nada sobre como o servidor autoriza a sessão depois.
A autenticação por certificado escala porque nada é armazenado
Onde o servidor oferece suporte a EAP-TLS, um certificado de máquina remove o segredo compartilhado por completo, e a revogação acontece na camada de certificado. Uma tarefa executada como SYSTEM pode apresentar esse certificado sem um logon interativo. Confirme que o servidor aceita autenticação por certificado antes de construir em cima dela. Um design que depende de um método não suportado é um plano, não uma solução. Depois decida onde a chave privada mora: o repositório da máquina para a identidade de um dispositivo, o repositório do usuário para uma pessoa.
Onde não dá para evitar nome de usuário e senha, guarde-os no Credential Manager limitados à própria conta da tarefa. Deixe o cliente lê-los de lá em vez de um argumento. Um segredo que a tarefa consegue obter sem imprimi-lo é um problema menor que um escrito na definição dela.
Revise os artefatos antes da próxima rotação
Olhe para o que está armazenado e não para o que você pretendia. Verifique a agenda telefônica por usuário, a cópia para todos os usuários, o XML da tarefa e qualquer script que chame o comando de discagem. Em seguida, confirme que o certificado ou a credencial em cache está limitado à conta que a tarefa usa, porque uma credencial guardada para a sua conta interativa é invisível ao SYSTEM.
Registre o método de autenticação e a conta nas notas da própria tarefa. A próxima pessoa que mudar a política do servidor precisa saber qual design está em jogo. Essa resposta não é visível apenas pelo comportamento de reconexão. Escreva-a onde a próxima rotação vai olhar primeiro.