Nepermesita TLS-versio en AnyConnect sur Linux: unue difinu la amplekson de la riparo
Tutgastiga politiko LEGACY, OpenSSL-agordo por unu procezo kaj forĵetebla VM komparitaj, plus la pordega ŝanĝo, kiu forigas la eraron por ĉiam.
Ĉi tiu eraro aperas antaŭ la pasvorta invito, kaj tio estas la utila parto: nenio ankoraŭ aŭtentikiĝis, do la legitimoj ne estas la problemo. Sur Linux la sama AnyConnect-dialogo povas veni de malnova protokolversio, de 1024-bita ŝlosilinterŝanĝa grupo, aŭ de ĉifroaro, kiun la kriptografia politiko de la sistemo rifuzas. Mi forigis ĝin tri malsamaj manieroj sur tri maŝinoj, kaj kio diferencigas tiujn riparojn estas la amplekso, ne la lerteco. Ĉiu estas defendebla en la ĝusta loko kaj malbona defaŭlto ĉie alie.
Legi la mesaĝon antaŭ ol tuŝi la politikon
Konservu la precizan ĉenon el la dialogo. Versia plendo montras al la protokola tavolo, atestila plendo al fido aŭ nomado, kaj malsukcesa ensaluto al la legitimoj. Pordego, kiu proponas TLS 1.0 kun 1024-bita DHE-grupo, AES-256-CBC kaj SHA-1-subskribo, povas havi tute validan atestilon kaj tamen esti rifuzata de moderna politiko antaŭ ol viaj legitimoj eĉ estos senditaj.
Sondi la finpunkton per la OpenSSL de la sistemo, uzante la realan gastigantan nomon kaj la pordon, kiun uzas la kliento.
Se openssl s_client -connect vpn.example.com:443 -servername vpn.example.com malsukcesas dum -tls1 -cipher DEFAULT@SECLEVEL=0 sukcesas, tio diras, ke la limo estas versio kaj ŝlosilgrando kune. Se la unua komando raportas malgrandan DH-ŝlosilon anstataŭ protokolan averton, la versio estas en ordo kaj nur la grupo bezonas atenton. Neniam metu privatan ŝlosilon aŭ pasvorton en la sondadon.
Opcio 1: malstreĉi la tutan gastiganton per la kriptografia politiko
Sur Fedora kaj RHEL 8 kaj 9, update-crypto-policies --set LEGACY malaltigas la sistempolitikon de OpenSSL, kaj update-crypto-policies --show konfirmas, kio estas aktiva. Ĝi kutime restarigas la tunelon, sed la politiko estas legata kiam procezo startas, do restartigu la klienton kaj ĉiun helpanton, kiun ĝi kreis, antaŭ ol retesti. Ĝi ankaŭ permesas pli malnovajn protokolojn kaj pli malfortajn grupojn por ĉiu TLS-kliento sur la maŝino, de la retumilo en la apuda fenestro ĝis la pakaĵmastrumilo, kiu ĝisdatigas la kernon.
Tiu larĝo estas la tuta celo kaj la tuta problemo. LEGACY estas tutgastiga, daŭra kaj facile forgesebla, do ĝi devus esti diagnoza paŝo aŭ dokumentita escepto en administrata konstruo, neniam ripoza stato de laborejo. Mi vidis unu, kiu restis ĉe LEGACY dum du jaroj ĉar unu interna portalo bezonis ĝin, kaj neniu povis diri, kiam ĝi komenciĝis.
Debian kaj Ubuntu ne havas unu ŝaltilon por tio. La ekvivalento estas redakto de /etc/ssl/openssl.cnf, kiu starigas pli malaltan MinProtocol kaj CipherString = DEFAULT@SECLEVEL=0 en la sekcio de sistemaj defaŭltoj. Sama amplekso, alia dosiero, iomete pli facile perdi el la okuloj dum eldonĉisdatigo.
Opcio 2: unu agorda dosiero por unu kliento
OpenSSL-agordo por unu procezo tenas la ŝanĝon ene de unu proceza arbo, sed nur se la dosiero estas konektita tiel, kiel la biblioteko atendas. Nomumi sekcion ssl_conf ne sufiĉas: OpenSSL legas la supranivelan ŝlosilon openssl_conf, sekvas ĝin al inicialiga sekcio kaj nur poste atingas la SSL-defaŭltojn.
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=0Direktu OPENSSL_CONF al tiu dosiero kaj lanĉu la VPN-klienton per ĉirkaŭaĵo, kiu eksportas ĝin. Ĉio alia sur la gastiganto konservas la defaŭltan politikon, kaj tio estas la eco, kiu gravas kiam venas la konformeca demando. Konfirmu, ke la dosiero efektive validas, antaŭ ol kulpigi la pordegon: OPENSSL_CONF=/path/to/file openssl ciphers -s -tls1 devus listigi TLS 1.0-ĉifrojn, kaj malplena rezulto signifas, ke la ĉeno rompiĝis kaj la kliento silenteme konservis la sistemajn defaŭltojn.
La dosiero estas versiosentema. OpenSSL 1.1.1 kaj 3.x akceptas la samajn sekciajn nomojn, sed la traktado de direktivoj ĉirkaŭ provizantoj ŝanĝiĝis en 3.x, do kontrolu per la propra protokolo de la kliento kaj testa manpremo anstataŭ supozi, ke la dosiero estis legita. Tajperaro en la sekcia nomo malsukcesas malferme, kaj la kliento silente uzas la sistemajn defaŭltojn.
La limo estas kovrado. Ĉio ligita al GnuTLS aŭ NSS ignoras OPENSSL_CONF, kaj same ĉiu helpa procezo, kiun la kliento lanĉas sen heredi la medion. Kontrolu per ldd, al kiu TLS-biblioteko la binara dosiero efektive ligiĝas, antaŭ ol konstrui la ĉirkaŭaĵon, ĉar la respondo decidas, ĉu tiu opcio entute ekzistas.
Opcio 3: forĵetebla VM aŭ ujo
Por subkontraktisto, kiu du semajnojn trafas unu malnovan pordegon, dediĉita VM kun la malstreĉita politiko estas pli pura limo ol la laborejo. La malnova surfaco kaj la ĉiutaga retumila profilo ĉesas kunhavigi kernan politikon, kaj forigo estas forigo de dosiero, ne trovaĵo de revizio.
Ĝi restas reta maŝino, do limigu ĝian aliron kaj tenu ĝin ekster ĝenerala retumado. La prizorga kosto estas plia bildo por fliki, kio estas reala sed limigita kaj videbla, malkiel forgesita LEGACY-flago sur tekkomputilo.
Kion la komparo lasas al vi
Elektu per tri demandoj: kiu bezonas la malnovan protokolon, por kiom da tempo, kaj kiu rimarkos, se la escepto postvivos sian kaŭzon. Unu aplikaĵo, unu persono, kelkaj tagoj montras al la agordo por procezo. Tuta floto malantaŭ unu aparato montras al la pordego mem. Ĉio, kio bezonas daŭran LEGACY-gastigantan politikon, estas aĉeta decido en teknika kostumo.
La daŭra riparo apartenas al la aparato: TLS 1.2 aŭ pli nova, grupo de almenaŭ 2048 bitoj, AEAD-ĉifro kaj atestilo kun moderna subskribo. Petu tiun ŝanĝon de la posedanto de la aparato, poste konfirmu la intertraktitan version kaj ĉifron en la klienta protokolo. Skribu la escepton kun la gastiganto, la pordego, la intertraktita protokolo, la aprobanto kaj findato, ĉar la noto estas tio, kio malhelpas provizoran solvon fariĝi la defaŭlto.