Moatst de chroot loslitte of iproute2 yn ’e finzenis kopiearje?
In ûnfolsleine finzenis falt nei it starten, net by de boot. Kies tusken it fersêftsjen fan ’e hurding en it kopiearjen fan binaries plus bibleteken yn ’e nije root.
De tsjinst start, in klant assosjearret, en oan ’e serverskant ferskynt nea in rûte. Of de daemon wegert te starten en neamt in opdracht dy’t er net útfiere koe. Beide útkomsten folgje deselde trije rigels, dy’t meastentiids byinoar út in hurdingsgids kopiearre wurde: oerstappe nei in ûnprivilegearre akkount, de groep falle litte en de bestânsysteemroot feroarje. Mar ien fan ’e trije ferstoppet bestannen, en mar ien fan harren nimt de foech fuort om de routingtabel te feroarjen. Se útinoar heljen is hoe’t do learst hokker rigel do eins wolst.
Wat de finzenis fuortnimt dat de daemon noch nedich hat
It feroarjen fan ’e root bart nei it starten, dus de daemon hâldt alles wat er al iepene hie en ferliest alles wat er letter iepenje soe. Eltse helper dy’t de ferbining dêrnei útfiert, moat binnen de nije root bestean, tegearre mei de dielde bibleteken dy’t er laadt. In finzenis boud út in konfiguraasjebestân en in sertifikaat hat gjin fan beide.
Oerstappe nei in ûnprivilegearre akkount is in aparte beheining. In proses dat root opjûn hat, kin miskien gjin rûtes feroarje of in ynterface omheech bringe, sels as de binary krekt dêrnjonken leit, dus de beide flaters moatte apart diagnostisearre wurde.
Trije betingsten beslute hokker repaaraasje do nedich hast
De earste betingst is hoe’t dyn build rûtes ynstallearret. Resinte OpenVPN útjeften konfigurearje de ynterface en routingtabel yn-proses, wylst âldere pakketten en eigen opsettings op eksterne ark of op up- en down-skripts fertrouwe. Neamt it log in opdracht, dan is der in ekstern ark yn it spul en ferstoppet de finzenis it. Lit it log ynstee in tastimmingflater sjen, dan is it akkount it probleem.
De twadde is ûnderhâld. In finzenis mei kopiearre binaries moat ferfrisse wurde sa gau’t it pakket dat se leveret bywurke wurdt, oars lit de earste upgrade in brutsen tunnel efter. De tredde is oft in spesifike kontrôle echt in chroot fereasket; giet it by de eask eins om foechskieding, dan kin it akkount allinnich dat al foldwaan.
| Signal in the log | Other side of the boundary | Repair direction |
|---|---|---|
| Command not found after startup | Binary and its libraries absent inside the new root | Populate the jail, or drop the chroot line |
| Operation not permitted | Account lost the privilege to edit routes | Keep the account privileged, or pre-create routes elsewhere |
| No such device | Jail lacks the tun device node | Create the node inside, or open it before the root change |
Wat in wurkjende finzenis befetsje moat
In finzenis dy’t opdrachten útfiert hat de binary nedich, eltse bibleteek dêr’t er tsjin linkt, en eltse apparaatknoop dy’t de daemon let iepenet. Kopiearje de stikken en test se sûnder de VPN yn byld:
ldd /usr/sbin/ip
chroot /etc/openvpn/jail /sbin/ip route show
chroot /etc/openvpn/jail /sbin/ip link set tun0 up
De earste opdracht listet de ôfhinklikheden op, en dat is dejinge dy’t minsken oerslaan. In kopiearre binary dy’t in bibleteek net fine kin, falt mei in oare melding as in ûntbrekkende binary, en beide lykje as in OpenVPN-flater as se fan ’e klantskant lêzen wurde. De opdracht mei de hân yn ’e finzenis útfiere reprodusearret de flater sûnder de tsjinst opnij te starten.
Kopiearje ek de konfiguraasje, sertifikaten en in eventuele CRL yn ’e finzenis, want in bestân dat de daemon nei it starten opnij lêze wol, wurdt net fûn as de root ienris feroare is. Skriuw op wat do kopiearre hast, want de folgjende upgrade fan it netwurkpakket ferfiemmet de originelen en lit de finzenis op ’e âlde kopy.
Ferlytsje ynstee de hurding
As de finzenis allinnich bestiet om’t in gids dat sei, is it fuortheljen fan dy iene rigel wylst de akkountbeheiningen bliuwe, in ferdigenber útkoms. De daemon hâldt syn bestânsysteembyld en rekket it probleem kwyt, en de foechsferlaging hellet noch altyd root út it langlibbige proses.
Skriuw op wat oerbliuwt, en wêrom. In konfiguraasje dy’t stilwei in kontrôle sûnder notysje ferlear, is hoe’t hurding weidrift, en de folgjende audit sil freegje wêrom’t de rigel ferdwûn is.
Bisektje de trije rigels foardat do kiest
Kopiearje de konfiguraasje, skeakelje alle trije rjochtlinen út en befêstigje dat in klant ferbynt en dat de ferwachte rûtes ferskine. Skeakelje dan allinnich de akkountrigels wer yn, dêrnei de chroot allinnich. De stap dêr’t de tunnel brekt, wiist de grins oan, en do foarkommst it werbouwen fan in finzenis dy’t nea de oarsaak wie.
Sadree’t it wer rûtelet, draai ien kliïntsesje mei hegere ferboppichheid en lês de rigel dy’t de opdracht of de mislearre tastimming neamt. Dy rigel is mear wurdich as de timeout dy’t de klant úteinlik rapportearret.