OpenVPN nustatymai maršrutizatoriuje grįžta po perkrovimo: pataisykite generatorių
Programinė įranga, kuri kiekvieno paleidimo metu iš naujo sukompiliuoja OpenVPN konfigūraciją, išmeta jūsų pakeitimus. Pataisykite generatoriaus kabliuką, tada po vieno perkrovimo palyginkite sugeneruotą failą.
Vartotojo maršrutizatoriaus ar NAS programinė įranga dažnai kiekvieno paleidimo metu iš naujo sukompiliuoja OpenVPN konfigūraciją, todėl jūsų pridėta direktyva išlieka lygiai iki kito paleidimo. Tas pats galioja raktams, įvestiems į žiniatinklio formą, kur išsaugota reikšmė po išsaugojimo gali grįžti sugadinta. Nė vienas iš šių simptomų nereiškia, kad pakeitimas buvo atmestas. Tai reiškia, kad pakeitimas atsidūrė faile, kurį programinė įranga laiko išvestimi, o nuolatinė vieta yra vienu žingsniu anksčiau paleidimo sekoje.
Kodėl redaguotas failas generuojamas iš naujo
Paleidimo scenarijus surenka serverio konfigūraciją iš šablono ir tada paleidžia demoną, todėl atvaizduotas failas tampa kompiliavimo artefaktu, o ne šaltiniu. Viskas, kas pridedama po paleidimo, yra nematoma kitam to scenarijaus paleidimui. Antrasis modelis subtilesnis: rakto ir sertifikato įvestys žiniatinklio sąsajoje saugomos escapintu pavidalu, o formos išsaugojimas gali įstumti tą escapintą tekstą į failą, kurį skaito demonas. Bet kuriuo atveju atvaizduota konfigūracija yra netinkama vieta ilgalaikiam pakeitimui.
Pažiūrėkite, ką rašo paleidimo seka ir kada. Atsakymas beveik visada yra scenarijus programinės įrangos init arba automatinio paleidimo kataloge.
Įterpkite direktyvą ten, kur scenarijus kuria failą
QTS įrenginiai iš naujo generuoja OpenVPN serverio konfigūraciją init scenarijuje, kuris paleidžia demoną, todėl pakeitimas turi įvykti ten. Pridėjimą įterpkite tiesiai prieš paleidimo komandą, o ne redaguokite sugeneruotą failą.
sed -i '/daemon_mgr/i echo client-config-dir clientconfig >>/etc/openvpn/server.conf' /etc/init.d/vpn_openvpn.sh
grep -c client-config-dir /etc/openvpn/server.confPrisekite įterpimą prie komandos, kuri nejudės, nes eilučių numeriai keičiasi tarp kompiliavimų. Kadangi pats init scenarijus paleidimo metu pakeičiamas, pakeitimas turi būti iš naujo išduotas iš programinės įrangos automatinio paleidimo kabliuko kiekvieną kartą paleidžiant sistemą. Po vieno perkrovimo suskaičiuokite pasikartojimus sugeneruotame faile: viena eilutė reiškia, kad pataisa veikė, o dvi reiškia, kad kabliukas veikia daugiau nei kartą. Dvigubą paleidimą tirkite atskirai, nes tai ne tas pats gedimas kaip dingęs pakeitimas.
Pataisykite formą, kuri išsaugojo escapintus raktus
Asus stiliaus puslapiuose sertifikato ir rakto laukai rodo escapintą tekstą, o išsaugojimas po nesusijusio pataisymo gali tuos subjektus vėl įrašyti į diską. Dirbkite su iššifruota kopija ir išsaugokite tik vieną kartą, kai visi pakeitimai bus paruošti.
openssl dhparam -out dh2048.pem 2048
grep -n "BEGIN DH PARAMETERS" dh2048.pemKeisdami naują parametrų rinkinį, įklijuokite tik base64 naudingąją apkrovą, jei etiketė prašo rakto kūno, o šarvų eilutes palikite tik tada, kai laukas tikisi viso PEM bloko. Jau escapintu pavidalu išsaugoto puslapio atkūrimas paprastai reiškia paveiktų įvesčių išvalymą ir pritaikymą, o tai leidžia programinei įrangai juos vėl sukurti. Generuokite viską, kas viršija 2048 bitus, darbo stotyje, nes maršrutizatoriaus entropijos tiekimas daro operaciją lėtą ir kartais nepatikimą. Laikykite parametrų failą vietoje, kurią pasieksite po gamyklinių nustatymų atkūrimo.
Po naujinimų patikrinkite dar kartą
Programinės įrangos naujinimai pakeičia init scenarijus ir gali ištrinti automatinio paleidimo katalogą, todėl pataisą reikia įdiegti ir dar kartą patikrinti. Palyginkite iš naujo sugeneruotą failą su išsaugota kopija ir patvirtinkite, kad direktyva yra lygiai vieną kartą. Žiniatinklio sąsajoje matoma reikšmė nėra įrodymas, kad demonas ją gavo, nes puslapis skaito išsaugotus laukus. Užsirašykite pataisos komandą ir programinės įrangos versiją techninės priežiūros pastabose, kad kitas naujinimas jas perkeltų toliau.
Tada prijunkite klientą ir perskaitykite serverio žurnalą apie perduotą parinktį. Nustatymas, kuris kadaise egzistavo tik formoje, yra nustatymas, kurio niekas neišbandė.