Гэтая памылка з’яўляецца да запыту пароля, і гэта карысная частка: нішто яшчэ не прайшло аўтэнтыфікацыю, таму ўліковыя даныя не з’яўляюцца праблемай. У Linux той жа дыялог AnyConnect можа паходзіць ад старой версіі пратакола, 1024-бітнай групы абмену ключамі або набору шыфраў, які адхіляе крыптапалітыка сістэмы. Я выпраўляў гэта трыма рознымі спосабамі на трох машынах, і гэтыя рашэнні адрознівае не дасціпнасць, а маштаб уздзеяння. Кожнае апраўданае на сваім месцы і дрэннае па змаўчанні ўсюды іншым разам.

Прачытайце паведамленне, перш чым чапаць палітыку

Трымайце дакладны радок з дыялогу. Скарга на версію ўказвае на ўзровень пратакола, скарга на сертыфікат — на давер ці імёны, а няўдалы ўваход — на ўліковыя даныя. Шлюз, які прапануе TLS 1.0 з 1024-бітнай групай DHE, AES-256-CBC і подпісам SHA-1, можа мець цалкам сапраўдны сертыфікат і ўсё ж быць адхіленым сучаснай палітыкай яшчэ да таго, як вашы ўліковыя даныя будуць адпраўленыя.

Праверце канчатковы пункт сістэмным OpenSSL, выкарыстоўваючы сапраўднае імя хоста і порт, які выкарыстоўвае кліент.

Калі openssl s_client -connect vpn.example.com:443 -servername vpn.example.com церпіць няўдачу, а -tls1 -cipher DEFAULT@SECLEVEL=0 паспяхова — гэта значыць, што мяжа адначасова і ў версіі, і ў памеры ключа. Калі першая каманда паведамляе пра малы ключ DH, а не пра папярэджанне пратакола, версія ў парадку і ўвагі патрабуе толькі група. Ніколі не ўключайце прыватны ключ або пароль у праверку.

Варыянт 1: паслабіць увесь хост крыптапалітыкай

У Fedora і RHEL 8 і 9 update-crypto-policies --set LEGACY зніжае сістэмную палітыку OpenSSL, а update-crypto-policies --show пацвярджае, што актыўна. Звычайна гэта аднаўляе тунель, але палітыка чытаецца пры запуску працэсу, таму перазапусціце кліент і ўсе дапаможныя працэсы, якія ён стварыў, перш чым паўтарыць тэст. Гэта таксама дазваляе старыя пратаколы і слабейшыя групы для кожнага TLS-кліента на машыне — ад браўзера ў суседнім акне да менеджэра пакетаў, які абнаўляе ядро.

Гэтая шырыня — і ўвесь сэнс, і ўся праблема. LEGACY дзейнічае на ўвесь хост, захоўваецца і лёгка забываецца, таму ён павінен быць дыягнастычным крокам або дакументаваным выключэннем у кіраванай зборцы, але ніколі — сталым станам працоўнай станцыі. Я бачыў адну, што заставалася на LEGACY два гады, бо аднаму ўнутранаму парталу гэта было патрэбна, і ніхто не мог сказаць, калі гэта пачалося.

У Debian і Ubuntu няма аднаго перамыкача для гэтага. Эквівалент — праўка /etc/ssl/openssl.cnf, якая задае ніжэйшы MinProtocol і CipherString = DEFAULT@SECLEVEL=0 у раздзеле сістэмных значэнняў па змаўчанні. Ты ж маштаб, іншы файл, крыху лягчэй страціць з увагі падчас абнаўлення выпуску.

Варыянт 2: адзін файл канфігурацыі для аднаго кліента

Канфігурацыя OpenSSL для асобнага працэсу трымае змену ў межах аднаго дрэва працэсаў, але толькі калі файл падключаны так, як чакае бібліятэка. Назваць раздзел ssl_conf недастаткова: OpenSSL чытае ключ верхняга ўзроўню openssl_conf, пераходзіць па ім да раздзела ініцыялізацыі і толькі тады дасягае значэнняў 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

Накіруйце OPENSSL_CONF на гэты файл і запусціце кліент VPN праз абгортку, якая экспартуе яго. Усё астатняе на хосце захоўвае палітыку па змаўчанні — менавіта гэтая ўласцівасць мае значэнне, калі ўзнікае пытанне адпаведнасці. Пераканайцеся, што файл сапраўды дзейнічае, перш чым вінаваціць шлюз: OPENSSL_CONF=/path/to/file openssl ciphers -s -tls1 павінна пералічыць шыфры TLS 1.0, а пусты вынік азначае, што ланцуг парваны і кліент моўчкі пакінуў сістэмныя значэнні па змаўчанні.

Файл адчувальны да версіі. OpenSSL 1.1.1 і 3.x прымаюць тыя ж назвы раздзелаў, але апрацоўка дырэктыў вакол пастаўшчыкоў змянілася ў 3.x, таму правярайце па ўласным журнале кліента і тэставым рукапацісканні, а не дапускайце, што файл быў прачытаны. Друкавая памылка ў назве раздзела прыводзіць да адкрытага адказу, і кліент ціха выкарыстоўвае сістэмныя значэнні па змаўчанні.

Абмежаванне — ахоп. Усё, што злучана з GnuTLS або NSS, ігнаруе OPENSSL_CONF, як і любы дапаможны працэс, які кліент стварае без атрымання асяроддзя. Праверце праз ldd, з якой TLS-бібліятэкай насамрэч злучаны бінарны файл, перш чым будаваць абгортку, бо адказ вырашае, ці існуе гэты варыянт наогул.

Варыянт 3: аднаразовая VM або кантэйнер

Для падрадчыка, які два тыдні звяртаецца да аднаго старога шлюза, выдзеленая VM з паслабленай палітыкай — чысцейшая мяжа, чым працоўная станцыя. Старая паверхня і штодзённы профіль браўзера перастаюць дзяліць палітыку ядра, а ўтылізацыя — гэта выдаленне, а не знаходка аўдыту.

Гэта ўсё яшчэ машына ў сетцы, таму абмяжуйце яе доступ і трымайце па-за агульным агляданнем. Кошт абслугоўвання — яшчэ адзін вобраз для абнаўлення, што рэальна, але абмежавана і бачна, у адрозненне ад забытага сцяга LEGACY на ноўтбуку.

Што пакідае вам параўнанне

Выбірайце па трох пытаннях: каму патрэбны стары пратакол, на колькі і хто заўважыць, калі выключэнне перажыве сваю прычыну. Адна праграма, адзін чалавек, некалькі дзён — гэта канфігурацыя на працэс. Цэлы парк за адным прыстасаваннем — гэта сам шлюз. Усё, што патрабуе пастаяннай палітыкі LEGACY на хосце, — гэта закупачнае рашэнне ў тэхнічным касцюме.

Трывалае рашэнне належыць прыстасаванню: TLS 1.2 або навейшы, група не менш за 2048 біт, шыфр AEAD і сертыфікат з сучасным подпісам. Папрасіце ўладальніка прыстасавання пра гэтую змену, затым пацвердзіце ўзгодненую версію і шыфр у журнале кліента. Запішыце выключэнне разам з хостам, шлюзам, узгодненым пратаколам, пагаджальнікам і датай заканчэння, бо менавіта запіс не дае часовым абыходам стаць значэннем па змаўчанні.

Падобныя артыкулы