Neplatná verzia TLS v AnyConnect na Linuxe: najprv vymedzte rozsah opravy
Politika LEGACY pre celý host, konfigurácia OpenSSL pre jednotlivý proces a jednorazový VM v porovnaní, plus zmena na bráne, ktorá chybu natrvalo odstráni.
Táto chyba prichádza ešte pred výzvou na zadanie hesla, a to je užitočná časť: nič sa zatiaľ neoverilo, takže problém nie je v prihlasovacích údajoch. Na Linuxe môže ten istý dialóg AnyConnect pochádzať zo starej verzie protokolu, zo 1024-bitovej skupiny na výmenu kľúčov alebo zo šifrovej sady, ktorú systémová krypto politika odmieta. Odstránil som ju tromi rôznymi spôsobmi na troch strojoch a tieto opravy odlišuje rozsah dopadu, nie dômysel. Každá je na správnom mieste obhájiteľná a kdekoľvek inde zlá predvolená hodnota.
Prečítajte si správu, kým sa dotknete politiky
Zachovajte presný reťazec z dialógu. Sťažnosť na verziu ukazuje na vrstvu protokolu, sťažnosť na certifikát na dôveru alebo pomenovanie a neúspešné prihlásenie na prihlasovacie údaje. Brána ponúkajúca TLS 1.0 so 1024-bitovou skupinou DHE, AES-256-CBC a podpisom SHA-1 môže mať úplne platný certifikát a napriek tomu ju moderná politika odmietne skôr, než sa vaše údaje vôbec odošlú.
Otestujte koncový bod systémovým OpenSSL, s reálnym názvom hostiteľa a portom, ktorý klient používa.
Ak openssl s_client -connect vpn.example.com:443 -servername vpn.example.com zlyhá a -tls1 -cipher DEFAULT@SECLEVEL=0 uspeje, hranicou je verzia a veľkosť kľúča spolu. Ak prvý príkaz hlási malý DH kľúč namiesto protokolového upozornenia, verzia je v poriadku a pozornosť si žiada len skupina. Nikdy nevkladajte do testu súkromný kľúč ani heslo.
Možnosť 1: uvoľnite celý host krypto politikou
Pri Fedore a RHEL 8 a 9 update-crypto-policies --set LEGACY znižuje systémovú politiku OpenSSL a update-crypto-policies --show potvrdzuje, čo je aktívne. Zvyčajne to obnoví tunel, ale politika sa čítа pri štarte procesu, preto pred ďalším testom reštartujte klienta aj každý pomocný proces, ktorý vytvoril. Umožňuje tiež staršie protokoly a slabšie skupiny každému TLS klientovi na stroji, od prehliadača v susednom okne po správcu balíkov, ktorý aktualizuje jadro.
Táto šírka je celý zmysel aj celý problém. LEGACY platí pre celý host, pretrváva a ľahko sa zabudne, preto by mal byť diagnostickým krokom alebo dokumentovanou výnimkou na spravovanej zostave, nikdy nie pokojovým stavom pracovnej stanice. Videl som jednu, ktorá zostala na LEGACY dva roky, pretože ju potreboval jediný interný portál, a nikto nedokázal povedať, kedy to začalo.
Debian a Ubuntu nemajú na to jeden prepínač. Ekvivalentom je úprava /etc/ssl/openssl.cnf, ktorá v sekcii systémových predvolených hodnôt nastaví nižší MinProtocol a CipherString = DEFAULT@SECLEVEL=0. Rovnaký rozsah, iný súbor, o niečo ľahšie stratiť prehľad pri aktualizácii vydania.
Možnosť 2: jeden konfiguračný súbor pre jedného klienta
Konfigurácia OpenSSL pre jednotlivý proces drží zmenu v jednom strome procesov, ale len ak je súbor zapojený tak, ako knižnica očakáva. Pomenovať sekciu ssl_conf nestačí: OpenSSL číta kľúč najvyššej úrovne openssl_conf, sleduje ho do inicializačnej sekcie a až potom sa dostane k predvoleným hodnotám 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=0Nasmerujte OPENSSL_CONF na tento súbor a spustite VPN klienta cez obal, ktorý ho exportuje. Všetko ostatné na hoste si ponechá predvolenú politiku, a to je vlastnosť, na ktorej záleží, keď príde otázka súladu. Než obviníte bránu, overte, že súbor skutočne platí: OPENSSL_CONF=/path/to/file openssl ciphers -s -tls1 má vypísať šifry TLS 1.0 a prázdny výsledok znamená, že reťaz je prerušená a klient potichu použil systémové predvolené hodnoty.
Súbor je citlivý na verziu. OpenSSL 1.1.1 a 3.x prijímajú rovnaké názvy sekcií, ale spracovanie direktív okolo poskytovateľov sa v 3.x zmenilo, preto overujte logom klienta a skúšobným handshake, namiesto toho, aby ste predpokladali, že sa súbor načítal. Preklep v názve sekcie zlyhá otvorene a klient potichu použije systémové predvolené hodnoty.
Obmedzením je pokrytie. Čokoľvek prepojené s GnuTLS alebo NSS ignoruje OPENSSL_CONF, rovnako ako každý pomocný proces, ktorý klient spustí bez zdedeného prostredia. Pomocou ldd zistite, proti ktorej TLS knižnici je binárka skutočne prepojená, skôr než obal postavíte, pretože odpoveď rozhoduje o tom, či táto možnosť vôbec existuje.
Možnosť 3: jednorazový VM alebo kontajner
Pre dodávateľa, ktorý dva týždne mieri na jednu starú bránu, je vyhradený VM s uvoľnenou politikou čistejšou hranicou než pracovná stanica. Starý povrch a každodenný profil prehliadača prestanú zdieľať politiku jadra a likvidácia je vymazanie, nie nález z auditu.
Stále je to stroj v sieti, preto obmedzte jeho prístup a držte ho mimo bežného prehliadania. Náklad na údržbu je ďalší obraz na záplatovanie, čo je reálne, ale obmedzené a viditeľné, na rozdiel od zabudnutého príznaku LEGACY na notebooku.
Čo vám porovnanie nechá
Vyberajte podľa troch otázok: kto potrebuje starý protokol, ako dlho a kto si všimne, ak výnimka prežije svoj dôvod. Jedna aplikácia, jeden človek, niekoľko dní ukazujú na konfiguráciu pre proces. Celá flotila za jedným zariadením ukazuje na samotnú bránu. Čokoľvek, čo potrebuje trvalú politiku LEGACY na hoste, je nákupné rozhodnutie v technickom kostýme.
Trvalá oprava patrí zariadeniu: TLS 1.2 alebo novší, skupina aspoň 2048 bitov, šifra AEAD a certifikát s moderným podpisom. Požiadajte vlastníka zariadenia o túto zmenu a potom potvrďte vyjednanú verziu a šifru v logu klienta. Zapíšte výnimku s hostom, bránou, vyjednaným protokolom, schvaľovateľom a dátumom vypršania, pretože práve ten záznam bráni tomu, aby sa dočasné obidenie stalo predvoleným stavom.