Aquest error arriba abans de la petició de contrasenya, i aquesta és la part útil: encara no s’ha autenticat res, així que les credencials no són el problema. A Linux, el mateix diàleg d’AnyConnect pot venir d’una versió antiga del protocol, d’un grup d’intercanvi de claus de 1024 bits o d’un conjunt de xifratge que la política criptogràfica del sistema rebutja. L’he eliminat de tres maneres diferents en tres màquines, i el que separa aquestes solucions és l’abast, no l’enginy. Cadascuna és defensable al lloc adequat i una mala opció per defecte a qualsevol altre lloc.

Llegiu el missatge abans de tocar la política

Conserveu la cadena exacta del diàleg. Una queixa de versió assenyala la capa de protocol, una queixa de certificat assenyala la confiança o l’anomenament, i un inici de sessió fallit assenyala les credencials. Una passarel·la que ofereix TLS 1.0 amb un grup DHE de 1024 bits, AES-256-CBC i una signatura SHA-1 pot tenir un certificat perfectament vàlid i tot i així ser rebutjada per una política moderna abans que les vostres credencials s’enviïn.

Proveu el punt final amb l’OpenSSL del sistema, fent servir el nom d’amfitrió real i el port que utilitza el client.

Que openssl s_client -connect vpn.example.com:443 -servername vpn.example.com falli mentre -tls1 -cipher DEFAULT@SECLEVEL=0 té èxit us diu que el límit és la versió i la mida de la clau alhora. Si la primera ordre informa d’una clau DH petita en lloc d’una alerta de protocol, la versió és correcta i només cal atendre el grup. No poseu mai una clau privada ni una contrasenya a la prova.

Opció 1: relaxar tot l’amfitrió amb la política criptogràfica

A Fedora i RHEL 8 i 9, update-crypto-policies --set LEGACY baixa la política del sistema d’OpenSSL, i update-crypto-policies --show confirma què està actiu. Normalment restaura el túnel, però la política es llegeix quan s’inicia un procés, així que reinicieu el client i qualsevol auxiliar que hagi creat abans de tornar a provar. També permet protocols més antics i grups més febles per a cada client TLS de la màquina, des del navegador de la finestra del costat fins al gestor de paquets que actualitza el nucli.

Aquesta amplitud és tot l’objectiu i tot el problema. LEGACY és per a tot l’amfitrió, persistent i fàcil d’oblidar, així que hauria de ser un pas de diagnòstic o una excepció documentada en una imatge gestionada, mai l’estat habitual d’una estació de treball. N’he vist una que va quedar en LEGACY durant dos anys perquè un sol portal intern el necessitava, i ningú no sabia dir quan havia començat.

Debian i Ubuntu no tenen cap commutador únic per a això. L’equivalent és una modificació de /etc/ssl/openssl.cnf que fixa un MinProtocol més baix i CipherString = DEFAULT@SECLEVEL=0 a la secció de valors per defecte del sistema. Mateix abast, fitxer diferent, una mica més fàcil de perdre de vista durant una actualització de versió.

Opció 2: un fitxer de configuració per a un client

Una configuració d’OpenSSL per procés manté el canvi dins d’un sol arbre de processos, però només si el fitxer està connectat tal com la biblioteca espera. Anomenar una secció ssl_conf no n’hi ha prou: OpenSSL llegeix la clau de nivell superior openssl_conf, la segueix fins a una secció d’inicialització i només llavors arriba als valors per defecte d’SSL.

openssl_conf = openssl_init

[openssl_init]
ssl_conf = ssl_sect

[ssl_sect]
system_default = system_default_sect

[system_default_sect]
MinProtocol = TLSv1.0
CipherString = DEFAULT@SECLEVEL=0

Apunteu OPENSSL_CONF a aquest fitxer i inicieu el client VPN mitjançant un embolcall que l’exporti. Tota la resta de l’amfitrió conserva la política per defecte, i aquesta és la propietat que importa quan arriba la pregunta de compliment. Confirmeu que el fitxer està realment en vigor abans de culpar la passarel·la: OPENSSL_CONF=/path/to/file openssl ciphers -s -tls1 hauria de llistar xifratges TLS 1.0, i un resultat buit vol dir que la cadena està trencada i que el client ha mantingut en silenci els valors del sistema.

El fitxer és sensible a la versió. OpenSSL 1.1.1 i 3.x accepten els mateixos noms de secció, però el tractament de les directives al voltant dels proveïdors va canviar a 3.x, així que verifiqueu-ho amb el registre del client i una negociació de prova en lloc de suposar que el fitxer s’ha llegit. Una errata al nom de la secció falla obert, i el client fa servir en silenci els valors per defecte del sistema.

El límit és la cobertura. Qualsevol cosa enllaçada amb GnuTLS o NSS ignora OPENSSL_CONF, i també qualsevol procés auxiliar que el client generi sense heretar l’entorn. Comproveu amb ldd amb quina biblioteca TLS s’enllaça realment el binari abans de construir l’embolcall, perquè la resposta decideix si aquesta opció existeix.

Opció 3: una VM o un contenidor d’un sol ús

Per a un contractista que durant quinze dies ataca una passarel·la antiga, una VM dedicada amb la política relaxada és una frontera més neta que l’estació de treball. La superfície antiga i el perfil de navegació diari deixen de compartir la política del nucli, i desfer-se’n és un esborrat, no una troballa d’auditoria.

Segueix sent una màquina en xarxa, així que limiteu-ne l’accés i manteniu-la fora de la navegació general. El cost de manteniment és una imatge més per pedaçar, cosa real però limitada i visible, a diferència d’una bandera LEGACY oblidada en un portàtil.

Què us deixa la comparació

Trieu amb tres preguntes: qui necessita el protocol antic, durant quant de temps i qui se n’adonarà si l’excepció sobreviu a la seva raó. Una aplicació, una persona, uns quants dies, apunten a la configuració per procés. Tota una flota darrere d’un sol aparell apunta a la passarel·la mateixa. Qualsevol cosa que necessiti una política LEGACY permanent a l’amfitrió és una decisió de compra disfressada de solució tècnica.

La solució duradora pertany a l’aparell: TLS 1.2 o posterior, un grup d’almenys 2048 bits, un xifratge AEAD i un certificat amb una signatura moderna. Demaneu aquest canvi al propietari de l’aparell i després confirmeu la versió i el xifratge negociats al registre del client. Anoteu l’excepció amb l’amfitrió, la passarel·la, el protocol negociat, qui l’aprova i una data de caducitat, perquè la nota és el que impedeix que una solució temporal esdevingui el valor per defecte.

Articles relacionats