OpenVPN tls-ciphersuites kundrejt tls-version-min: çfarë imponon secili
Një listë grupesh TLS 1.3 nuk e kufizon versionin e protokollit, dhe show-tls shfaq vetëm mbështetjen lokale. Kontrollo politikën, grupet dhe rezultatet e negociuara veçmas.
Tre fakte të ndryshme reduktohen në një rresht në shumicën e diskutimeve OpenVPN për TLS: çfarë mund të bëjë ndërtimi i klientit tuaj, çfarë lejon profili dhe çfarë ka negociuar në të vërtetë sesioni. Një listë e shkurtër e grupeve TLS 1.3 përgjigjet vetëm gjysmën e pyetjes së mesme dhe nuk thotë asgjë për kufirin e poshtëm të versionit të protokollit. Kalo nëpër kontrollet më poshtë me radhë dhe ndalu në të parën që nuk qëndron, sepse çdo kontroll i mëpasshëm supozon se të mëparshmit janë zgjidhur.
Kontrollo ndërtimin përpara se të lexosh çdo listë
Një direktivë konfigurimi nuk mund t'i shtojë mbështetje protokolli një binari që nuk e ka. Filloni me bannerin e versionit, i cili emërton bibliotekën kriptografike të kompiluar:
openvpn --version
Një ndërtim 2.6 i lidhur me OpenSSL pranon si tls-cipher ashtu edhe tls-ciphersuites. Një ndërtim me mbed TLS nuk ka fare zgjedhje grupesh TLS 1.3, dhe manuali 2.6 e shënon tls-ciphersuites si opsion OpenSSL. Nëse serveri rindërtohet me një backend tjetër, i njëjti profil mund të ndryshojë sjelljen pa ndryshuar asnjë rresht të vetëm konfigurimi.
Ndërsa jeni këtu, ekzekutoni openvpn --show-tls dhe ruani daljen. Është inventari me të cilin do të krahasoni më vonë, dhe është e lirë ta kapni përpara se dikush të fillojë të redaktojë profilet.
Shkruajeni bannerin dhe listën në biletën e ndryshimit, jo në një dritare chat-i. Kur dy njerëz debatojnë nëse një klient mund të ofrojë një grup pas gjashtë javësh, dalja e kapur e zgjidh atë në një rresht.
Mbajini kufijtë e versionit të ndarë nga listat e shifrave
Në manualin 2.6 këto janë tre kontrolle, jo një:
tls-ciphercakton politikën e shifrave për TLS 1.2 dhe më të vjetër, dhe i kalon listës së shifrave të OpenSSL;tls-ciphersuiteszgjedh grupet TLS 1.3;tls-version-mindhetls-version-maxkufizojnë versionet e protokollit që lidhja mund të përdorë.
Pra, një listë grupesh TLS 1.3 e krasitur me kujdes nuk provon asgjë për faktin që një version më i vjetër është ende i lejuar. Nëse kërkesa është «vetëm TLS 1.3», atë e mban kufiri i poshtëm i versionit, dhe lista e grupeve vetëm ngushton zgjedhjet brenda atij kufiri:
tls-version-min 1.3
tls-ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
Ai çift bën dy punë. Fshirja e njërës prej rreshtave e lë tjetrën të imponojë më pak nga sa mendoni, dhe pikërisht ai është dështimi për të cilin ekziston i gjithë ky kontroll.
Kanali i të dhënave është kontrolli i katërt. data-ciphers negocion shifrën simetrike brenda tunelit, dhe rezultati i tij nuk thotë asgjë për versionin TLS të kanalit të kontrollit. Të shohësh AES-256-GCM në përmbledhjen e sesionit nuk është provë për TLS 1.3 në asnjë drejtim.
Lexo show-tls si inventar lokal
--show-tls liston grupet e mbështetura nga biblioteka kriptografike me të cilën është lidhur ky binar, sipas rendit të preferencës. Nuk është raport nga gateway-i. Manuali thotë shprehimisht se lista vjen nga biblioteka lokale, që do të thotë se një laptop me OpenSSL 3.x dhe një router me një ndërtim më të vjetër do të shtypin lista të ndryshme ndërsa flasin me të njëjtin server.
| Evidence | What it actually describes |
|---|---|
--show-tls output | Capabilities of this client build and its library |
| Profile directives | What this attempt is allowed to offer |
| Session log line | What this one negotiation selected |
Supozoni se një klient mbështet grupet A, B dhe C dhe një sesion zgjedh B. Kjo nuk vërteton asgjë për atë nëse serveri lejon A ose C, as për atë nëse B është zgjedhja e tij e vetme e lejuar. Mbajini tre rreshtat të ndarë, dhe shumica e temave konfuze të TLS zgjidhen vetë.
Inventari vlen gjithsesi të ruhet. Kur një sesion dështon, krahasimi i listës së bibliotekës me listën e profilit ju tregon nëse klienti kishte ndonjë shans të ofronte atë që donte serveri. Ai tregon gjithashtu nëse një ndryshim backend ka hequr në heshtje TLS_CHACHA20_POLY1305_SHA256 nga grupi ku mbështeten klientët më të vjetër — lloji i regresionit që shfaqet si një grusht përdoruesish që nuk arrijnë të lidhen, ndërsa të gjithë të tjerët nuk vënë re asgjë.
Pyetni gateway-in për diçka që mund të përgjigjet
Nëse e administroni shërbimin, inspektoni konfigurimin efektiv të instancës që po funksionon, jo një skedar në disk. OpenVPN mund të jetë nisur me një shteg --config tjetër, mund të tërheqë përfshirje dhe mund të mos jetë rinisur që nga redaktimi. Politika e daemonit që po funksionon është ajo që hasin klientët.
Nëse nuk e administroni, kërkoni nga operatori kërkesat e mbështetura të klientit ose një test pranimi të kufizuar. Një përpjekje e refuzuar nuk është automatikisht një grup i refuzuar: një kufi i poshtëm versioni, kontrolle identiteti certifikate si remote-cert-tls, ose një mospërputhje midis tls-auth dhe tls-crypt mund ta përfundojnë shkëmbimin përpara se zgjedhja e grupit të ketë rëndësi. Lexoni gabimin e serverit përpara se të ndryshoni listën e klientit, sepse «handshake failed» mbulon katër shkaqe të ndryshme dhe vetëm njëri prej tyre është mospërputhje shifre.
Drejtimi i openssl s_client në portën VPN gjithashtu nuk e riprodhon pyetjen. Kanali i kontrollit funksionon brenda kornizës së vetë OpenVPN, pra një sondë e papërpunuar TLS teston një protokoll tjetër në një port që pret diçka tjetër. Çdo përfundim i nxjerrë prej saj ka të bëjë me sondën, jo me tunelin.
Regjistroni dy rezultate dhe mbajini të ndarë
Një sesion i ri i lejuar prodhon një rresht të kanalit të kontrollit që emërton versionin e protokollit dhe shifrën e zgjedhur, dhe një rresht të veçantë të kanalit të të dhënave që emërton shifrën e tunelit. Kapini të dyja bashkë me versionin e klientit dhe emrin e profilit, dhe shënoni cila instancë serveri u përgjigj:
openvpn --config office.ovpn --verb 4 2>&1 | tee session.txt
Më pas lexoni dy rreshtat nga ai skedar dhe jo nga kujtesa. Çifti është prova; emri i grupit vetëm është preferencë, dhe kufiri i versionit është deklaratë e veçantë për atë që serveri refuzon.
Kryeni kontrollet në këtë rend. Konfirmoni ndërtimin dhe backend-in me --version. Kapni --show-tls përpara se të ndryshoni asgjë. Deklaroni kufirin e poshtëm të versionit të kërkuar veçmas nga lista e grupeve. Konfirmoni politikën efektive të instancës që funksionon me pronarin e saj. Vëzhgoni një sesion të lejuar dhe, nëse plani e lejon, një përpjekje të refuzuar me një version më të vjetër. Regjistroni rezultatet e kanalit të kontrollit dhe të kanalit të të dhënave si gjetje të ndara.
Nëse një klient i kërkuar nuk mund të plotësojë një minimum të ri, merrni atë vendim migrimi ose përjashtimi në mënyrë eksplicite në vend që të ulni në heshtje një rregull pranimi të palidhur që vendosja të duket e përfunduar.