Hindi wastong bersyon ng TLS sa AnyConnect sa Linux: tukuyin muna ang saklaw ng pagwawasto
Isang LEGACY na patakaran para sa buong host, isang OpenSSL na pagsasaayos bawat proseso at isang VM na isang gamit lamang ang inihambing, kasama ang pagbabago sa gateway na tuluyang nag-aalis ng error.
Ang error na ito ay dumarating bago ang kahilingan ng password, at iyon ang kapaki-pakinabang na bahagi: wala pang na-authenticate, kaya ang mga kredensyal ay hindi ang problema. Sa Linux ang parehong dialog ng AnyConnect ay maaaring magmula sa lumang bersyon ng protocol, sa 1024-bit na grupo ng palitan ng susi, o sa isang cipher suite na tinatanggihan ng crypto policy ng system. Naalis ko ito sa tatlong magkakaibang paraan sa tatlong makina, at ang naghihiwalay sa mga solusyong iyon ay ang saklaw, hindi ang katalinuhan. Bawat isa ay may katwiran sa tamang lugar at masamang default sa lahat ng ibang lugar.
Basahin ang mensahe bago hawakan ang patakaran
Itabi ang eksaktong string mula sa dialog. Ang reklamo sa bersyon ay tumuturo sa protocol layer, ang reklamo sa certificate ay tumuturo sa tiwala o pagpapangalan, at ang bigong pag-login ay tumuturo sa mga kredensyal. Ang isang gateway na nag-aalok ng TLS 1.0 na may 1024-bit na DHE group, AES-256-CBC at SHA-1 signature ay maaaring may ganap na valid na certificate at tinatanggihan pa rin ng modernong patakaran bago pa man ipadala ang iyong mga kredensyal.
Suriin ang endpoint gamit ang OpenSSL ng system, gamit ang tunay na hostname at ang port na ginagamit ng client.
Kung nabigo ang openssl s_client -connect vpn.example.com:443 -servername vpn.example.com habang nagtagumpay ang -tls1 -cipher DEFAULT@SECLEVEL=0, ang hangganan ay bersyon at laki ng susi nang magkasama. Kung ang unang command ay nag-uulat ng maliit na DH key sa halip na protocol alert, maayos ang bersyon at ang grupo lang ang kailangan ng pansin. Huwag kailanman maglagay ng pribadong susi o password sa pagsusuri.
Pagpipilian 1: luwagan ang buong host gamit ang crypto policy
Sa Fedora at RHEL 8 at 9, ibinababa ng update-crypto-policies --set LEGACY ang system policy ng OpenSSL, at kinukumpirma ng update-crypto-policies --show kung ano ang aktibo. Karaniwang ibinabalik nito ang tunnel, ngunit binabasa ang patakaran kapag nagsisimula ang isang proseso, kaya i-restart ang client at anumang helper na ginawa nito bago muling subukan. Pinapayagan din nito ang mas lumang protocol at mas mahinang grupo para sa bawat TLS client sa makina, mula sa browser sa katabing window hanggang sa package manager na nag-a-update ng kernel.
Ang lapad na iyon ang buong layunin at ang buong problema. Saklaw ng LEGACY ang buong host, matibay at madaling makalimutan, kaya dapat itong diagnostic na hakbang o dokumentadong eksepsiyon sa isang pinamamahalaang build, hindi kailanman ang pahingang estado ng isang workstation. May nakita akong isa na nanatili sa LEGACY nang dalawang taon dahil kailangan ito ng isang panloob na portal, at walang makapagsabi kung kailan ito nagsimula.
Walang iisang switch ang Debian at Ubuntu para dito. Ang katumbas ay isang pagbabago sa /etc/ssl/openssl.cnf na nagtatakda ng mas mababang MinProtocol at CipherString = DEFAULT@SECLEVEL=0 sa seksyon ng mga default ng system. Pareho ang saklaw, ibang file, mas madaling mawala sa paningin sa panahon ng pag-upgrade ng release.
Pagpipilian 2: isang configuration file para sa isang client
Ang OpenSSL configuration bawat proseso ay nagpapanatili ng pagbabago sa loob ng isang process tree, ngunit kung ang file ay nakakabit ayon sa inaasahan ng library. Hindi sapat na pangalanan ang isang ssl_conf section: binabasa ng OpenSSL ang openssl_conf key sa pinakamataas na antas, sinusundan ito sa isang init section, at doon lang naaabot ang mga default ng 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=0Ituro ang OPENSSL_CONF sa file na iyon at ilunsad ang VPN client sa pamamagitan ng wrapper na nag-e-export nito. Ang lahat ng iba pa sa host ay nagpapanatili ng default na patakaran, at iyon ang katangiang mahalaga kapag dumating ang tanong ng pagsunod. Tiyakin na talagang may bisa ang file bago sisihin ang gateway: dapat ilista ng OPENSSL_CONF=/path/to/file openssl ciphers -s -tls1 ang mga TLS 1.0 cipher, at ang walang laman na resulta ay nangangahulugang putol ang kadena at tahimik na itinago ng client ang mga default ng system.
Ang file ay sensitibo sa bersyon. Tinatanggap ng OpenSSL 1.1.1 at 3.x ang parehong mga pangalan ng section, ngunit nagbago ang paghawak ng mga direktiba sa paligid ng mga provider sa 3.x, kaya i-verify gamit ang log ng client mismo at isang test handshake sa halip na ipagpalagay na nabasa ang file. Ang typo sa pangalan ng section ay nabigo nang bukas, at tahimik na ginagamit ng client ang mga default ng system.
Ang limitasyon ay ang saklaw ng saklaw. Anumang naka-link laban sa GnuTLS o NSS ay binabalewala ang OPENSSL_CONF, gayundin ang anumang helper process na inilulunsad ng client nang hindi namamana ang environment. Suriin gamit ang ldd kung aling TLS library ang talagang naka-link ang binary bago buuin ang wrapper, dahil ang sagot ang magpapasya kung umiiral man ang pagpipiliang ito.
Pagpipilian 3: isang disposable na VM o container
Para sa isang kontratista na dalawang linggo nang umaatake sa isang lumang gateway, ang dedikadong VM na may luwag na patakaran ay isang mas malinis na hangganan kaysa sa workstation. Ang lumang surface at ang pang-araw-araw na profile ng browser ay hindi na nagbabahagi ng kernel policy, at ang pagtatapon ay isang pagbura, hindi isang natuklasan sa audit.
Nakakonekta pa rin ito sa network, kaya limitahan ang access at ilayo sa pangkalahatang pag-browse. Ang gastos sa pagpapanatili ay isa pang image na kailangang i-patch, na totoo ngunit limitado at nakikita, hindi tulad ng nakalimutang LEGACY flag sa isang laptop.
Ano ang iniiwan sa iyo ng paghahambing
Pumili batay sa tatlong tanong: sino ang nangangailangan ng lumang protocol, gaano katagal, at sino ang makakapansin kung ang eksepsiyon ay mabubuhay nang mas mahaba kaysa sa dahilan nito. Isang app, isang tao, ilang araw ay tumuturo sa configuration bawat proseso. Isang buong fleet sa likod ng isang device ay tumuturo sa gateway mismo. Anumang nangangailangan ng permanenteng LEGACY host policy ay isang desisyon sa pagbili na nakasuot ng teknikal na kasuutan.
Ang pangmatagalang pagwawasto ay pag-aari ng device: TLS 1.2 o mas bago, isang grupo na hindi bababa sa 2048 bit, isang AEAD cipher, at isang certificate na may modernong signature. Hilingin ang pagbabagong iyon sa may-ari ng device, pagkatapos ay kumpirmahin ang napagkasunduang bersyon at cipher sa log ng client. Isulat ang eksepsiyon kasama ang host, gateway, napagkasunduang protocol, nag-apruba at petsa ng pag-expire, dahil ang tala na iyon ang pumipigil sa isang pansamantalang solusyon na maging default.