Зашто је OpenVPN престао да се повезује после надоградње Ubuntu-а?
Ubuntu 22.04 и 22.10 променили су OpenSSL политику, подразумевано преговарање шифре и подразумеване вредности пакета. Прочитајте фазу која пада пре него што уредите профил.
VPN профили који су радили прошле недеље пуцају после надоградње издања Ubuntu-а, а дневник ретко уопште помиње надоградњу. Оно што именује јесте слој који је пао: TLS руковање, шифра преговарана за канал података, инсталирани пакет или копија OpenSSL-а коју бинарни фајл учитава при покретању. Сваки слој има свој облик грешке и свој поправак, због чега је класификација први посао, а уређивање други. Сматрајте профил невиним док га дневник не именује.
Који слој је пао: руковање, шифра, пакет или библиотека
Прочитајте дневник клијента пре него што дирнете профил. најранија грешка у излазу је она која идентификује слој; све што се испише после ње обично је последица тог првог пада. Када се клијент уопште не покрене, VPN дневник је погрешан фајл за отварање.
Жалбе на сертификате и потписе, или порука о дужини кључа, долазе из контролног канала и политике библиотеке која га уређује. Уместо тога, упозорење које почиње са DEPRECATED OPTION припада преговарању канала података.
Линија облика Unrecognized option је трећа категорија: нови бинарни фајл више не прихвата директиву коју је стари толерисао, па профил треба преписати, а не библиотеку попустити. Откази пакета изгледају опет другачије јер се дешавају пре него што се покрене иједан код тунела. Недостајући бинарни фајл, додатак који се не учитава или репозиторијум који показује на погрешно кодно име дају тај облик. Четири симптома, четири места за гледање и готово никакво преклапање између поправака.
Када руковање падне, TLS политика одбија сертификат
Ubuntu 22.04 је преместио систем на OpenSSL 3, а подразумевани ниво безбедности у тој грани строжи је према потписима сертификата и величинама кључева него у 20.04. CA сертификат потписан старијим сажетком или кључ испод тренутног прага сада падају током руковања. Пошто још ништа није аутентификовано, грешка се чита као погрешна лозинка или мртав сервер.
Уски поправак прикачињује шифровани низ само на ову везу. У сточном уређивачу отворите профил, пређите на напредне поставке и ставите DEFAULT:@SECLEVEL=0 у поље TLS шифре. Датотека са кључем NetworkManager-а узима исту вредност под [vpn]:
[vpn]
tls-cipher=DEFAULT:@SECLEVEL=0Рестартујте NetworkManager и повежите се поново, јер демон кешира рашчлањене профиле и иначе би наставио да користи копију коју већ држи. Знајте шта линија ради пре него што је задржите: та поставка је праг преко неколико параметара сертификата и кључева, а не назив шифре, па њено снижавање шири оно што појединачни профил прихвата. Запишите који је сервер то захтевао и одбаците поставку када оператер поново изда актуелни материјал. Мењање /etc/ssl/openssl.cnf достиже исти праг за сваки програм који чита тај фајл, што је далеко изван VPN-а.
OpenVPN 2.6 захтева да шифра буде наведена за преговарање
Ubuntu 22.10 је донео OpenVPN 2.6, и у том издању --cipher престаје сам да бира канал података. Шифра мора бити и на преговараној листи data-ciphers, иначе клијент испише упозорење о застарелости и затим не успе да подигне тунел.
Додатак NetworkManager-а из истог периода још је писао само стару директиву. Тај детаљ дели дијагнозу, јер профил исправљен ручно може да се повеже из љуске и ипак падне из сточне апликације. Додајте листу у датотеку везе под [vpn]:
data-ciphers=AES-256-CBCКористите вредност коју сервер оглашава, а не ону које се сећате; сервер који нуди AES-256-GCM неће преговарати са клијентском листом која наводи само CBC. Рестартујте менаџер и повежите се поново, па поновите покушај из љуске са шифром експлицитно прослеђеном и за преговарање и за резерву:
sudo openvpn --config client.ovpn --data-ciphers AES-256-CBC --data-ciphers-fallback AES-256-CBCАко та команда подигне тунел, сервер, сертификати и акредитиви су сви здрави, и једини преостали недостатак је сачувана опција менаџера. Упозорење о директиви keysize припада истом чишћењу: закоментаришите је и чувајте оригинални фајл поред профила.
Откази пакета и додатака изгледају као VPN откази
Није сваки отказ после надоградње криптографски. OpenVPN репозиторијум додат под кодним именом које издање не користи даје пакет који се никада не инсталира, зато упоредите шта lsb_release -a пријављује са листом коју сте додали. Недостајућа universe компонента или сигурносни џеп даје пакет који се уопште не може наћи. Оба случаја остављају профил нетакнут, а тунел немогућ.
Прочитајте грешку менаџера пакета пре VPN дневника. Ако клијент никада није инсталиран, никакво уређивање профила неће дати руковање.
Профили са два фактора који престану да питају верзија су исте приче за додатак. Изазов долази од додатка за аутентификацију, а надоградња која га је испустила или заменила оставља профил нетакнут док упит нестаје. Поново инсталирајте подржани додатак уместо да бришете други фактор да би веза радила.
Библиотека добављача може се сакрити иза грешке политике
Један образац заслужује препознавање јер побеђује сваки поправак политике. Алат за конфигурацију добављача хардвера може инсталирати сопствене OpenSSL библиотеке и поставити их испред системских копија у путањи претраге учитавача. Клијент тада стартује против библиотеке коју нико није надоградио, а отказ при покретању изгледа тачно као одбијен сертификат.
Поновна инсталација VPN пакета не мења која се библиотека прва налази, а снижавање TLS нивоа не може да дође до библиотеке која никада није дошла из система. Питајте учитавач које крипто објекте бинарни фајл заиста разрешава:
ldd /usr/sbin/openvpn | grep -i -E 'ssl|crypto'Уклоните или преусмерите копију добављача, па поново покрените исту проверу. Очекивана верзија мора бити она у употреби пре него што се вратите профилу.
Причвршћивање старијег клијента купује време, не решење
Задржавање претходне верзије клијента враћа тунел док год задржавање траје. Оно такође замрзава безбедносне исправке за тај пакет и заказује исти отказ за следећу надоградњу, зато то третирајте као датирани привремени излаз, а не као решење.
Ако га ипак причврстите, држите пакет изричито да ненадгледана надоградња не може да поништи причвршћивање, запишите разлог и датум прегледа и поставите подсетник за следеће издање профила од добављача. Услов који вреди пратити је серверски профил који преговара актуелну шифру; када он постоји, причвршћивање више нема никакво оправдање. Незаписано причвршћивање, насупрот томе, постаје прекид који нико не може да објасни после шест месеци, јер је особа која га је применила отишла, а фајл не бележи ништа.
Следећи пут када VPN умре после надоградње издања, поставите пет питања по реду: који слој је дао прву грешку, да ли је TLS политика одбила сертификат, да ли је шифра преговарљива у оба смера, да ли су се пакет и његов додатак стварно инсталирали и коју библиотеку процес учитава. Тек када свих пет врати чисто, враћање на старију верзију има смисла.