Compare dous perfís OpenVPN sen filtrar claves
Un diff de texto pode expoñer as claves incrustadas con tanta facilidade como mostra unha directiva cambiada. Compare por rol en copias protexidas e despois redacte un ficheiro de diagnóstico á parte.
Dous perfís, un conecta e o outro non, e a forma rápida de ver por que é un diff. O problema é que o mesmo diff imprime a clave privada incrustada, a clave estática e calquera bloque de credenciais que leve o ficheiro, e a xente pega a saída nun chat antes de decatarse. Decidir que está a comparar vai antes de executar o comando. Compare estrutura e roles en copias protexidas, e construa un ficheiro redactado á parte cando outra persoa teña que velo.
Que leva realmente un ficheiro .ovpn
Un ficheiro .ovpn é unha configuración con bloques incrustados opcionais. Pode conter un certificado CA, un certificado de cliente, unha clave privada, unha clave tls-auth ou tls-crypt, e directivas que apuntan a ficheiros externos ou piden credenciais. Dous ficheiros poden parecer case idénticos e diferir só dentro dun bloque, ou nunha directiva que cambia o transporte por completo. O número de liñas non lle di nada sobre cal desas cousas ocorreu.
Unha diferenza dentro dun bloque de clave non é proba pública de nada. Un certificado reemitido e un con clave renovada poden producir a mesma forma de cambio, así que o desaxuste do bloque di que o material é distinto, non que decisión o produciu. Tráteo como un sinal para comparar campos, non como un achado.
Compare por rol, non por liña
Siga a orde propia da conexión: primeiro o extremo e o transporte, despois a confianza e a identidade esperada, despois a autenticación de usuario, despois as rutas, DNS e os ganchos de script. Esa secuencia coincide co que fai o cliente, así que a primeira diferenza que atope é o primeiro que puido ter roto a conexión. Comparar por orde alfabética, en cambio, dispersa os axustes relacionados por toda a saída.
Unha pasada consciente dos campos mira estes elementos, nesa orde. Todo o que o cliente pide de forma interactiva pertence á fila de autenticación e non ás filas de confianza.
remote,protoe porto, incluído cada bloque de conexión.caecert: emisor, suxeito e data de caducidade.- Se existe unha clave privada, nunca que contén.
tls-authoutls-cryptpresenza e dirección da clave.- Directivas de autenticación, incluída calquera referencia a un ficheiro de credenciais.
- Rutas, opcións de DNS e ganchos de script que se executan ao conectar.
Cando un ficheiro contén varios bloques de conexión, manteña cada opción co seu extremo. Comparar só a primeira liña remote pode pasar por alto a alternativa que o cliente escolle realmente nesta rede.
Por que un diff simple é a ferramenta equivocada
Un diff simple está feito para texto, non para segredos. Imprimirá de bo grado unha clave privada no historial da pantalla, e non lle dirá que a directiva que mira non ten nada que ver co fallo. As extraccións de campos son á vez máis seguras e máis lexibles, porque o material do certificado se pode comparar como metadatos en lugar de bytes.
openssl x509 -in ca.crt -noout -subject -issuer -enddate
openssl x509 -in client.crt -noout -subject -issuer -enddate
grep -E '^(remote|proto|port|tls-auth|tls-crypt|route|dhcp-option)' profile.ovpn
Os dous primeiros comandos imprimen identidade e validez sen tocar a clave, así que a súa saída é segura de pegar. O grep imprime nomes e valores de directivas pero nunca os corpos dos bloques, o que o converte na primeira pasada correcta cando sospeita unha diferenza de transporte ou de encamiñamento. Se hai que comparar un bloque, compare o seu hash en lugar do contido.
Construa unha copia redactada para o tícket
Elimine os segredos reais e os identificadores innecesarios mantendo os nomes dos campos e suficiente estrutura para explicar a diferenza. Un marcador da mesma forma segue revelando onde está o material e canto medía, así que decida se mesmo iso é aceptable. Revise o propio anexo final en lugar de confiar no comando que lembra ter executado. Non edite o orixinal de traballo só para producir un exemplo, porque un perfil redactado non é necesariamente executábel e nunca debe reimportarse.
Manteña os orixinais identificables polo nome de ficheiro e o hash en lugar de copialos en tres directorios con nomes parecidos. Unha cadea de hash abonda para demostrar que ficheiro se revisou e non custa nada se se filtra. Pode as copias cando se peche o cambio, para que a seguinte persoa herde un único ficheiro autoritativo.
Manteña a comparación ligada a un fallo
Unha comparación vale o seu custo cando responde unha pregunta sobre unha importación ou un fallo de conexión. Nomee primeiro o paso que falla e despois compare só os campos dos que depende ese paso; xuntar todas as credenciais do cliente nun só directorio fai máis probable a seguinte filtración e máis lento o seguinte diagnóstico. Canto máis estreita a pregunta, máis curta a lista de campos que poden respondela.
Se un ficheiro novo veu do operador, confirme a súa vía de distribución antes de substituír material de confianza. Despois do cambio, inspeccione a copia importada que o cliente escolleu realmente e o resultado negociado, porque outra versión do cliente pode ignorar unha directiva ou lela de forma distinta. O ficheiro no disco non é proba da conexión que se executou. A semántica das directivas está no manual de OpenVPN 2.6.