Firmver na potrošačkom ruteru ili NAS-u često pri svakom pokretanju ponovno gradi OpenVPN konfiguraciju, pa direktiva koju dodate preživi tačno do sljedećeg podizanja. Isto vrijedi za ključeve upisane u web obrazac, gdje se sačuvana vrijednost nakon snimanja može vratiti iskvarena. Nijedan od tih simptoma ne znači da je izmjena odbijena. Znači da je izmjena završila u datoteci koju firmver tretira kao izlaz, a trajno mjesto nalazi se korak ranije u slijedu podizanja.

Zašto se izmijenjena datoteka ponovno generiše

Skripta za pokretanje sastavlja konfiguraciju servera iz predloška i zatim pokreće demona, zbog čega generisana datoteka postaje artefakt gradnje, a ne izvor. Sve što se doda nakon pokretanja nevidljivo je za sljedeće izvršavanje te skripte. Drugi obrazac je suptilniji: unosi ključa i certifikata u web sučelju čuvaju se u izbjegnutom obliku, a snimanje obrasca može taj izbjegnuti tekst gurnuti u datoteku koju demon čita. U oba slučaja generisana konfiguracija pogrešno je mjesto za trajnu izmjenu.

Pogledajte šta slijed podizanja zapisuje i kada to zapisuje. Odgovor je gotovo uvijek skripta u firmverovom init ili autorun direktoriju.

Umetnite direktivu tamo gdje skripta gradi datoteku

QTS uređaji ponovno generišu OpenVPN konfiguraciju servera unutar init skripte koja pokreće demona, pa se izmjena mora dogoditi tamo. Dodajte dopisivanje neposredno prije naredbe za pokretanje umjesto da uređujete generisanu datoteku.

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

Usidrite umetanje na naredbu koja se neće pomjeriti, jer se brojevi redova mijenjaju između gradnji. Budući da se init skripta i sama zamjenjuje tijekom podizanja, izmjena se mora ponovno izdati iz firmverove autorun kuke pri svakom pokretanju sistema. Nakon jednog ponovnog pokretanja prebrojite pojavljivanja u generisanoj datoteci: jedan red znači da je zakrpa uspjela, a dva znače da kuka radi više od jednom. Dvostruko izvršavanje istražite odvojeno, jer to nije ista greška kao izmjena koja je nestala.

Popravite obrazac koji je sačuvao izbjegnute ključeve

Na stranicama u stilu Asus polja za certifikat i ključ prikazuju izbjegnuti tekst, a snimanje nakon nepovezane izmjene može te entitete vratiti na disk. Radite iz dekodirane kopije i snimite samo jednom, kad sve izmjene budu spremne.

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

Kada zamjenjujete novi skup parametara, zalijepite samo base64 sadržaj ako polje traži tijelo ključa, a armor redove zadržite samo kad polje očekuje cijeli PEM blok. Spašavanje stranice već sačuvane u izbjegnutom obliku obično znači brisanje pogođenih polja i primjenu, što firmveru dopušta da ih ponovno izgradi. Generišite sve iznad 2048 bita na radnoj stanici, jer ruterova zaliha entropije čini operaciju sporom i ponekad nepouzdanom. Pohranite datoteku parametara negdje do čega možete doći nakon vraćanja na tvorničke postavke.

Provjerite ponovno nakon nadogradnji

Firmverova ažuriranja zamjenjuju init skripte i mogu izbrisati autorun direktorij, pa se zakrpa mora ponovno instalirati i testirati. Uporedite regenerisanu datoteku s kopijom koju ste sačuvali i potvrdite da je direktiva prisutna tačno jednom. Vrijednost vidljiva u web sučelju nije dokaz da ju je demon primio, jer stranica čita pohranjena polja. Zapišite naredbu zakrpe i verziju firmvera u napomene za održavanje kako bi ih sljedeće ažuriranje ponijelo sa sobom.

Zatim spojite klijenta i pročitajte dnevnik servera za gurnutu opciju. Postavka koja je ikada postojala samo u obrascu postavka je koju nitko nije testirao.

Povezani članci