Firmvér spotrebiteľského routera alebo NAS často pri každom štarte znovu zostavuje konfiguráciu OpenVPN, takže direktíva, ktorú pridáte, prežije presne do ďalšieho štartu. To isté platí pre kľúče zadané do webového formulára, kde sa uložená hodnota môže po uložení vrátiť zdeformovaná. Ani jeden z týchto príznakov neznamená, že bola zmena odmietnutá. Znamená to, že úprava skončila v súbore, ktorý firmvér považuje za výstup, a trvalé miesto je o krok skôr v sekvencii štartu.

Prečo sa upravený súbor generuje znova

Spúšťací skript zostaví konfiguráciu servera zo šablóny a potom spustí démona, čím sa vykreslený súbor stáva artefaktom zostavenia, nie zdrojom. Čokoľvek pridané po štarte je pre ďalší beh tohto skriptu neviditeľné. Druhý vzorec je jemnejší: vstupy kľúča a certifikátu vo webovom rozhraní sa ukladajú v escapovanej podobe a uloženie formulára môže tento escapovaný text vtlačiť do súboru, ktorý démon číta. V oboch prípadoch je vykreslená konfigurácia nesprávne miesto na trvalú zmenu.

Pozrite sa, čo sekvencia štartu zapisuje a kedy. Odpoveďou je takmer vždy skript v adresári init alebo automatického spúšťania firmvéru.

Vložte direktívu tam, kde skript zostavuje súbor

Zariadenia QTS regenerujú konfiguráciu servera OpenVPN vnútri init skriptu, ktorý spúšťa démona, takže úprava musí prebehnúť tam. Pridanie vložte tesne pred príkaz na spustenie namiesto úpravy vygenerovaného súboru.

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

Ukotvite vloženie na príkaz, ktorý sa nepohne, pretože čísla riadkov sa medzi zostaveniami menia. Keďže samotný init skript sa pri štarte nahrádza, zmena sa musí znovu vydať z háčika automatického spúšťania pri každom štarte systému. Po jednom reštarte spočítajte výskyty vo vygenerovanom súbore: jeden riadok znamená, že záplata zabrala, dva znamenajú, že háčik beží viac ako raz. Dvojitý beh preskúmajte osobitne, pretože to nie je tá istá porucha ako zmiznutá zmena.

Opravte formulár, ktorý uložil escapované kľúče

Na stránkach v štýle Asus polia certifikátu a kľúča zobrazujú escapovaný text a uloženie po nesúvisiacej úprave môže tieto entity zapísať späť na disk. Pracujte z dekódovanej kópie a uložte iba raz, keď sú všetky úpravy hotové.

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

Pri výmene novej sady parametrov vložte iba dátovú časť base64, ak pole žiada telo kľúča, a riadky panciera ponechajte len vtedy, keď pole očakáva celý blok PEM. Obnova stránky už uloženej v escapovanej podobe zvyčajne znamená vymazať postihnuté vstupy a použiť, čo firmvéru umožní ich znova zostaviť. Generujte čokoľvek nad 2048 bitov na pracovnej stanici, pretože zásoba entropie routera robí operáciu pomalou a niekedy nespoľahlivou. Uložte súbor parametrov na miesto, kam sa dostanete aj po továrenskom resete.

Po aktualizáciách skontrolujte znova

Aktualizácie firmvéru nahrádzajú init skripty a môžu vymazať adresár automatického spúšťania, preto je potrebné záplatu znova nainštalovať a otestovať. Porovnajte regenerovaný súbor s kópiou, ktorú ste si ponechali, a potvrďte, že direktíva je prítomná presne raz. Hodnota viditeľná vo webovom rozhraní nie je dôkazom, že ju démon prijal, pretože stránka číta uložené polia. Zapíšte príkaz záplaty a verziu firmvéru do poznámok k údržbe, aby ich ďalšia aktualizácia preniesla ďalej.

Potom pripojte klienta a prečítajte v protokole servera odovzdanú voľbu. Nastavenie, ktoré kedysi existovalo iba vo formulári, je nastavenie, ktoré nikto netestoval.

Súvisiace články