Pausar un cliente de OpenVPN: por que a revogación é a panca equivocada
Matar a sesión é reversible; revogar o certificado non o é. Decida que panca precisa o caso e reconstruía a CRL só cando encaixe.
Pausar o acceso dun cliente e eliminalo para sempre parecen a mesma tarefa ata que intenta desfacer unha das dúas. Revogar un certificado escribe un rexistro que o servidor trata como definitivo, e revertelo significa editar á man a base de datos do emisor. Descartar o túnel vivo é unha orde de xestión que non cambia nada na confianza. Escolla a panca preguntando se a clave segue sendo digna de confianza, non preguntando quão urxente parece a petición.
A crenza: revogado e suspendido son o mesmo
Un contratista pausásese unha semana e o reflexo é revogar, porque revogación soa a apagar algo. Parece ordenado, tarda dez segundos e deixa unha edición da base de datos como único camiño de volta. O reflexo é comprensible e está máis preto de queimar un pasaporte que de pechar unha porta. Un dispositivo pausado e unha clave comprometida necesitan un trato distinto, e só un dos dous é barato de reverter.
A distinción é sobre a credencial e non sobre a persoa. Unha clave que segue nas mans correctas pódese pausar e retomar sen ningunha perda de confianza. Unha clave que poida ter sido copiada non debería restaurarse nunca, porque restaurar afirma que a copia non existe.
Escriba a resposta antes de tocar calquera dos dous sistemas. Se non pode dicir se a clave está exposta, a resposta conservadora é a substitución.
Descarte a sesión viva coa interface de xestión
OpenVPN expón unha interface de xestión que pode listar sesións e matar unha delas polo nome común. Actívea en localhost, mantéña lonxe da interface pública e envíe a orde de matar cando unha sesión teña que desaparecer xa. A orde pecha só ese túnel, e todos os demais clientes seguen funcionando.
Isto é unha resposta a un problema activo, non unha política de suspensión. O mesmo perfil pode reconectarse nun minuto, porque nada da súa credencial cambiou. Úseo cando a sesión debe irse e a decisión duradeira aínda se está tomando.
Confirme que a sesión estaba conectada antes de matala, para non perseguir un cliente que nunca se conectou. A orde de estado de abaixo imprime o que está conectado agora.
printf 'status 2\nquit\n' | nc 127.0.0.1 7506
printf 'kill kiosk-14\nquit\n' | nc 127.0.0.1 7506Se a orde de matar informa que non existe tal cliente, o nome común do certificado non é a cadea que escribiu. Lea a saída de estado en lugar do nome do ficheiro de perfil.
Que controla realmente a CRL
O servidor non consulta unha marca de revogación gardada no certificado. Le a lista de revogación de certificados indicada por crl-verify, en cada conexión nova, e rexeita un certificado cuxo número de serie apareza nesa lista. Dela derivan dúas consecuencias, e ambas importan operativamente. O ficheiro debe ser lexible pola conta á que o servidor baixa privilexios, e un cliente xa conectado segue funcionando ata que se reconecta.
Esa segunda consecuencia sorprende a xente durante os incidentes. Revogar un certificado non pecha o túnel que o está a usar agora mesmo. Emparexe a revogación cunha morte de xestión se a sesión ten que rematar de inmediato, e trate as dúas accións como pasos separados do manual.
Inspeccione a lista para ver que aplicará realmente o servidor, en lugar de fiarse da marca de tempo do último ficheiro que copiou. O reconto de series é a parte que importa.
openssl crl -in /etc/openvpn/server/crl.pem -noout -text | sed -n '1,14p'
ls -l /etc/openvpn/server/crl.pemUnha lista sen entradas e unha lista coas entradas correctas vense idénticas nunha listaxe de directorio, por iso paga a pena imprimir o reconto de series. A liña de permisos importa igual, porque un ficheiro que o daemon non pode ler produce un fallo que parece un cliente rexeitado.
Restaurar un rexistro, con coidado
Restaurar un certificado significa inverter un rexistro na base de datos de emisión e publicar unha lista nova. easy-rsa 3 garda esa base como index.txt dentro do directorio PKI, mentres que as disposicións máis antigas usaban outro arranxo. Unha fila comeza cunha letra de estado e unha data de caducidade. Unha fila revogada insire unha marca de tempo para a revogación antes de continuar co número de serie, o nome do ficheiro do certificado e o nome distinguido. Devolver unha fila ao seu sitio significa borrar esa marca de tempo e xirar a letra, deixando todo o demais en paz.
Faga primeiro unha copia de seguridade do ficheiro, e escriba a edición como script en lugar de teclear nun editor de texto. Unha errata que cambia cantos campos leva unha fila rompe a emisión de cada certificado engadido despois. Esa é a razón para automatizar o cambio e copiar o ficheiro antes de tocalo.
Unha segunda revogación do mesmo nome a miúdo tamén falla, porque a primeira execución trasladou ese certificado e a súa clave fóra dos directorios onde a ferramenta espera atopalos. A ferramenta entón non pode atopar o que se lle pediu revogar, e a mensaxe de erro non sempre aclara por que.
cp /etc/easy-rsa/pki/index.txt /root/index.txt.$(date +%F-%H%M)
grep -c '^R' /etc/easy-rsa/pki/index.txt
easyrsa gen-crlPublique a lista nova, corrixa a súa propiedade e faga que o servidor a lea. Unha recarga abonda na maioría das instalacións, pero a confirmación ten que vir dunha conexión nova, xa que a sesión existente non volveu comprobar nada.
Comprobe que panca merece o caso
Faga a pregunta que decide todo o manual: a clave privada segue estando só onde debe estar. Se o está, a morte da sesión máis unha pausa documentada cobre o caso e non deixa ningún rexistro permanente. Se non o está, a única resposta segura é unha clave nova co certificado vello deixado como revogado.
Despois verifique o resultado cun intento de conexión e non cunha diferenza de configuración. A diferenza dille que pretendía, e a conexión dille que aplica o servidor.
openssl crl -in /etc/openvpn/server/crl.pem -noout -text | grep -c 'Serial Number'
printf 'status 2\nquit\n' | nc 127.0.0.1 7506Cando un cliente restaurado se conecta e aparece na saída de estado, a edición do rexistro funcionou. Cando un cliente revogado é rexeitado e o rexistro nomea a CRL, a revogación funcionou. Calquera cousa intermedia é un problema de permisos ou de recarga, e paga a pena arranxalo antes de que chegue a petición seguinte.