Ši klaida pasirodo prieš slaptažodžio užklausą, ir tai yra naudingoji dalis: dar niekas neautentifikuota, todėl problema ne prisijungimo duomenys. „Linux“ ta pati „AnyConnect“ dialogas gali kilti iš senos protokolo versijos, 1024 bitų raktų mainų grupės ar šifravimo rinkinio, kurį sistemos kriptografijos politika atmeta. Aš pašalinau ją trimis skirtingais būdais trijose mašinose, ir šiuos sprendimus skiria poveikio apimtis, o ne sumanumas. Kiekvienas yra pateisinamas tinkamoje vietoje ir blogas numatytasis visur kitur.

Perskaitykite pranešimą prieš liesdami politiką

Išsaugokite tikslią eilutę iš dialogo. Versijos nusiskundimas nurodo protokolo sluoksnį, sertifikato nusiskundimas – pasitikėjimą ar pavadinimą, o nepavykęs prisijungimas – prisijungimo duomenis. Šliuzas, siūlantis TLS 1.0 su 1024 bitų DHE grupe, AES-256-CBC ir SHA-1 parašu, gali turėti visiškai galiojantį sertifikatą ir vis tiek būti atmestas modernios politikos dar prieš išsiunčiant jūsų duomenis.

Patikrinkite galinį tašką sistemos OpenSSL, naudodami tikrąjį hosto vardą ir prievadą, kurį naudoja klientas.

Kai openssl s_client -connect vpn.example.com:443 -servername vpn.example.com nepavyksta, o -tls1 -cipher DEFAULT@SECLEVEL=0 pavyksta, tai rodo, kad riba yra versija ir rakto dydis kartu. Jei pirmoji komanda praneša apie mažą DH raktą, o ne protokolo įspėjimą, versija tvarkinga ir dėmesio reikia tik grupei. Niekada nedėkite privataus rakto ar slaptažodžio į patikrą.

1 variantas: atlaisvinti visą hostą kriptografijos politika

„Fedora“ ir RHEL 8 ir 9 update-crypto-policies --set LEGACY sumažina OpenSSL sistemos politiką, o update-crypto-policies --show patvirtina, kas aktyvu. Paprastai tai atkuria tunelį, tačiau politika nuskaitoma paleidus procesą, todėl prieš bandydami dar kartą paleiskite klientą ir bet kurį jo sukurtą pagalbinį procesą. Ji taip pat leidžia senesnius protokolus ir silpnesnes grupes kiekvienam mašinos TLS klientui – nuo naršyklės gretimame lange iki paketų tvarkyklės, atnaujinančios branduolį.

Šis plotis yra visas tikslas ir visa problema. LEGACY galioja visam hostui, yra ilgalaikė ir lengvai pamirštama, todėl ji turėtų būti diagnostinis žingsnis arba dokumentuota išimtis valdomame rinkinyje, o ne darbo stoties ramybės būsena. Mačiau vieną, kuri LEGACY išliko dvejus metus, nes vienam vidiniam portalui to reikėjo, ir niekas negalėjo pasakyti, kada tai prasidėjo.

„Debian“ ir „Ubuntu“ neturi vieno jungiklio tam. Atitikmuo – /etc/ssl/openssl.cnf pakeitimas, nustatantis žemesnį MinProtocol ir CipherString = DEFAULT@SECLEVEL=0 sistemos numatytųjų nustatymų skiltyje. Ta pati apimtis, kitas failas, šiek tiek lengviau pamesti iš akių diegiant naują versiją.

2 variantas: vienas konfigūracijos failas vienam klientui

OpenSSL konfigūracija kiekvienam procesui išlaiko pakeitimą viename procesų medyje, bet tik jei failas prijungtas taip, kaip tikisi biblioteka. Pavadinti ssl_conf skiltį nepakanka: OpenSSL nuskaito viršutinio lygio openssl_conf raktą, seka jį į inicijavimo skiltį ir tik tada pasiekia SSL numatytuosius nustatymus.

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

Nukreipkite OPENSSL_CONF į tą failą ir paleiskite VPN klientą per apvalkalą, kuris jį eksportuoja. Visa kita hoste išlaiko numatytąją politiką, ir tai yra savybė, kuri svarbi, kai kyla atitikties klausimas. Prieš kaltindami šliuzą patvirtinkite, kad failas tikrai galioja: OPENSSL_CONF=/path/to/file openssl ciphers -s -tls1 turėtų išvardyti TLS 1.0 šifrus, o tuščias rezultatas reiškia, kad grandinė nutrūko ir klientas tyliai paliko sistemos numatytuosius nustatymus.

Failas jautrus versijai. OpenSSL 1.1.1 ir 3.x priima tuos pačius skilčių pavadinimus, tačiau direktyvų apdorojimas aplink tiekėjus pasikeitė 3.x, todėl tikrinkite kliento žurnalu ir bandomuoju susikibimu rankomis, o ne manykite, kad failas buvo nuskaitytas. Rašybos klaida skilties pavadinime nepavyksta atvirai, ir klientas tyliai naudoja sistemos numatytuosius nustatymus.

Riba yra aprėptis. Viskas, kas susieta su GnuTLS ar NSS, ignoruoja OPENSSL_CONF, taip pat bet kuris pagalbinis procesas, kurį klientas paleidžia nepaveldėjęs aplinkos. Prieš statydami apvalkalą patikrinkite su ldd, su kuria TLS biblioteka dvejetainis failas iš tikrųjų susietas, nes atsakymas nulemia, ar ši parinktis apskritai egzistuoja.

3 variantas: vienkartinė VM arba konteineris

Subrangovui, kuris dvi savaites atakuoja vieną seną šliuzą, atskira VM su atlaisvinta politika yra švaresnė riba nei darbo stotis. Senas paviršius ir kasdienis naršyklės profilis nustoja dalytis branduolio politika, o utilizavimas yra ištrynimas, o ne audito radinys.

Tai vis dar tinklo mašina, todėl apribokite jos prieigą ir laikykite atokiau nuo bendro naršymo. Priežiūros kaina yra dar vienas atnaujinamas atvaizdas, tai realu, bet ribota ir matoma, skirtingai nei pamiršta LEGACY vėliavėlė nešiojamajame kompiuteryje.

Ką palieka palyginimas

Rinkitės pagal tris klausimus: kam reikia seno protokolo, kiek laiko ir kas pastebės, jei išimtis pergyvens savo priežastį. Viena programa, vienas žmogus, kelios dienos nurodo konfigūraciją procesui. Visas parkas už vieno įrenginio nurodo patį šliuzą. Viskas, kam reikia nuolatinės LEGACY hosto politikos, yra pirkimo sprendimas techniniu kostiumu.

Ilgalaikis taisymas priklauso įrenginiui: TLS 1.2 arba naujesnis, bent 2048 bitų grupė, AEAD šifras ir sertifikatas su moderniu parašu. Paprašykite įrenginio savininko šio pakeitimo, tada patvirtinkite suderėtą versiją ir šifrą kliento žurnale. Užrašykite išimtį su hostu, šliuzu, suderėtu protokolu, tvirtintoju ir galiojimo data, nes būtent tas įrašas neleidžia laikinam apeinimui tapti numatytuoju.

Susiję straipsniai