A fogyasztói routeren vagy NAS-on futó firmware gyakran minden indításkor újraépíti az OpenVPN-konfigurációt, ezért a hozzáadott direktíva pontosan a következő indításig marad meg. Ugyanez igaz a webes űrlapba gépelt kulcsokra, ahol a tárolt érték mentés után torzultan térhet vissza. E tünetek egyike sem jelenti azt, hogy a módosítást elutasították. Azt jelenti, hogy a szerkesztés egy olyan fájlba került, amelyet a firmware kimenetként kezel, és a tartós hely egy lépéssel korábban van az indítási sorrendben.

Miért generálódik újra a szerkesztett fájl

Az indítószkript sablonból állítja össze a szerverkonfigurációt, majd elindítja a démont, ami a renderelt fájlt build-összetevővé teszi forrás helyett. Bármi, ami az indítás után hozzáadódik, láthatatlan a szkript következő futásának. A második minta finomabb: a webes felület kulcs- és tanúsítványbevitelei escape-elt formában tárolódnak, és az űrlap mentése ezt az escape-elt szöveget a démon által olvasott fájlba tolhatja. Mindkét esetben a renderelt konfiguráció a rossz hely egy tartós változtatáshoz.

Nézze meg, mit ír az indítási sorrend, és mikor. A válasz szinte mindig egy szkript a firmware init vagy autostart könyvtárában.

Szúrja be a direktívát oda, ahol a szkript a fájlt építi

A QTS-eszközök az init szkripten belül generálják újra az OpenVPN szerverkonfigurációt, tehát a szerkesztésnek ott kell történnie. A hozzáfűzést közvetlenül az indítóparancs elé illessze be, ne a generált fájlt szerkessze.

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.conf

A beszúrást olyan parancshoz horgonyozza, amely nem mozdul, mert a sorszámok buildről buildre változnak. Mivel maga az init szkript is kicserélődik az indítás során, a változtatást minden rendszerindításkor újra ki kell adni a firmware autostart horgából. Egy újraindítás után számolja meg az előfordulásokat a generált fájlban: egy sor azt jelenti, hogy a javítás működött, kettő pedig azt, hogy a horog többször fut. A kettős futást külön vizsgálja, mert az nem ugyanaz a hiba, mint egy eltűnt változtatás.

Javítson meg egy űrlapot, amely escape-elt kulcsokat mentett

Az Asus stílusú oldalakon a tanúsítvány- és kulcsmezők escape-elt szöveget mutatnak, és egy független módosítás utáni mentés visszaírhatja ezeket az entitásokat a lemezre. Dekódolt másolatból dolgozzon, és csak egyszer mentse el, amikor minden szerkesztés kész.

openssl dhparam -out dh2048.pem 2048
grep -n "BEGIN DH PARAMETERS" dh2048.pem

Új paraméterkészlet cseréjekor csak a base64 tartalmat illessze be, ha a címke a kulcs törzsét kéri, és csak akkor tartsa meg az armor sorokat, ha a mező teljes PEM blokkot vár. Egy már escape-elt formában mentett oldal helyreállítása általában az érintett mezők kiürítését és alkalmazását jelenti, amitől a firmware újraépítheti őket. Mindent 2048 bit felett munkaállomáson generáljon, mert a router entrópiaellátása lassúvá és néha megbízhatatlanná teszi a műveletet. A paraméterfájlt olyan helyen tárolja, ahová gyári visszaállítás után is eljut.

Frissítések után ellenőrizze újra

A firmware-frissítések lecserélik az init szkripteket, és törölhetik az autostart könyvtárat, ezért a javítást újra kell telepíteni és tesztelni. Hasonlítsa össze az újragenerált fájlt a megtartott példánnyal, és erősítse meg, hogy a direktíva pontosan egyszer szerepel. A webes felületen látható érték nem bizonyítja, hogy a démon megkapta, mert az oldal tárolt mezőket olvas. Írja be a javítóparancsot és a firmware verzióját a karbantartási jegyzetekbe, hogy a következő frissítés továbbvigye őket.

Ezután csatlakoztasson egy klienst, és olvassa ki a kiszolgálónaplóból a továbbított beállítást. Az a beállítás, amely valaha csak egy űrlapban létezett, olyan beállítás, amelyet senki nem tesztelt.

Kapcsolódó cikkek