Egy régi kerülőmegoldás máshová helyezte az OpenVPN végrehajtható fájlját, és egy shell burkot hagyott az eredeti útvonalon. Hónapokkal később megérkezik egy frissítés, és a kerülőmegoldás visszabontása találgatássá válik arról, melyik fájl is valójában a kliens. A parancsnév, a szolgáltatásban beállított végrehajtható fájl és a csomag saját fájllistája mind különböző objektumokra mutathat, és ezek egyikének javítása a többi nélkül olyan gazdagépet eredményez, amely javítottnak látszik, de rosszabbul viselkedik.

Kezdje azzal az útvonallal, amelyet a szolgáltatás indít

A terminál és a systemd egység nem ugyanúgy oldja fel a végrehajtható fájlokat. A shell a PATH-ban keres; az egység megnevez egy útvonalat, és a drop-in felülírások kicserélhetik anélkül, hogy hozzányúlnának a fájlhoz, amelyet olvas. Ez a különbség magyarázza a feladat zavarának nagy részét. Azt is eldönti, hogy a javításának melyik fájlt kell célba vennie.

Kérdezze meg az egységet, mit futtat, beleértve az őt módosító drop-in fájlokat, és az eredményül kapott ExecStart sort olvassa, ne azt a töredéket, amelyet mérvadónak feltételez. Ezután kövesse ezt az útvonalat bármely szimbolikus hivatkozáson át a végső fájlig. Egy burok, amely exec-vel egy rejtett könyvtárba végződik, ezeknek a régi javításoknak a szokásos megoldása.

Jegyezze fel a feloldott útvonalat, mielőtt bármit megváltoztat.

systemctl cat [email protected] | grep -n 'ExecStart'
readlink -f "$(command -v openvpn)"

Hasonlítsa össze a parancsnevet a szolgáltatás útvonalával

A két válasz gyakran eltér, és ez az eltérés nem feltétlenül hiba. Egy NetworkManager-bővítmény indíthatja a saját útvonalát, egy konténer pedig egy másikat csatolhat.

Az a fontos, hogy tudja, melyik tulajdonos indítja a forgalmat kiszolgáló folyamatot. Ha az egység /usr/local/sbin/openvpn-wrapper futtat, miközben a shellje /usr/sbin/openvpn old fel, a második fájl javítása semmit sem változtat a szolgáltatáson.

Kérdezze meg, melyik csomag birtokolja az egyes jelölteket, majd döntse el, hogy a fájlt a csomag kezeli-e vagy helyben került-e oda. Az a fájl, amelynek nincs birtokló csomagja, olyan fájl, amelyet valaki szándékosan tett oda, és megérdemel egy nevet, egy tulajdonost és egy indokot, mielőtt törlik. A fordított hiba is gyakori: egy csomagfájl felülírása egy régi mentett binárissal, mert egy fórumbejegyzés ugyanazt a könyvtárat használta.

Hagyja, hogy a csomagadatbázis beszéljen a csomagfájlokról

Ha a szoftver Debian-csomagból származik, a csomagadatbázis meg tudja mondani, hogy a fájljai még mindig megfelelnek-e a telepítettnek. Ez szűk integritáskérdés, nem biztonsági ítélet, és a különbség számít, amikor eldönti, mit javítson. Az eltérés azt jelenti, hogy a fájl a telepítés után megváltozott, ami lehet a régi kerülőmegoldása vagy egy legitim helyi szerkesztés. A kimenet nem dönti el, melyik, ezért tekintse jelzésnek, nem következtetésnek.

Futtassa az ellenőrzést, és olvassa a kimenetet ahelyett, hogy az üres eredményt bármi bizonyítékának tekintené.

dpkg -S /usr/sbin/openvpn
dpkg --verify openvpn

A dpkg kézikönyv dokumentálja, hogy az ellenőrzés a telepített fájlokat a helyben rögzített metaadatokkal hasonlítja össze, a tárolt ellenőrzőösszegeket használva ott, ahol vannak. Észreveszi a megváltozott csomagfájlt, és nem tudja megmondani, hogy helyette egy másik bináris indul-e.

Rögzítse az állapotot a javítás előtt

Gyűjtse össze a feloldott indítási útvonalat, a fájl csomagkapcsolatát, a burok helyét és a változásrekordot, amely bevezette. Másolja a burkot védett helyre, ha olyan integrációs munkát tartalmaz, amelyre később szükség lesz.

Ne illessze be a burok tartalmát egy támogatási szálba, mielőtt elolvasta volna, mert ezek a szkriptek néha hitelesítő adatokat vagy átjáró részleteit hordozzák.

Rögzítse, mely profilokat használ a szolgáltatás, és ki van csatlakozva, miközben dolgozik, mert az alagút újraindítása megszakíthatja azt a munkamenetet, amellyel a gazdagépet igazgatja.

Ellenőrizze az indítást, majd távolítsa el a burkot

A javítás után indítsa el a szolgáltatást, és erősítse meg, hogy a folyamat a szándékolt útvonalon fut. Egy kézzel futtatott verziólekérdezés bizonyítja, hogy a fájl működik; nem bizonyítja, hogy az egység használja.

Ezután csatlakoztasson újra egy klienst, és ellenőrizze, hogy a profil továbbra is hitelesít, mert az eredeti beállításokat figyelmen kívül hagyó bináriscsere olyan módon fog meghiúsulni, amely tanúsítványproblémának tűnik.

Távolítsa el az elmozdított burkot ugyanazon változásrekord révén, amely bevezette. A befejezett javítás megmondja, melyik végrehajtható fájl fut, miért, és melyik fájlt távolították el; egy fájlnevet visszaállítani és reménykedni nem ugyanaz.

Kapcsolódó cikkek