Storitev se zažene, odjemalec se pridruži in na strežniški strani se nikoli ne pojavi pot. Ali pa se daemon noče zagnati in navede ukaz, ki ga ni mogel izvesti. Oba izida sledita istim trem vrsticam, ki se običajno kopirajo skupaj iz vodnika za utrjevanje: prehod na neprivilegiran račun, opustitev skupine in sprememba korena datotečnega sistema. Le ena od treh skriva datoteke in le ena od njih odvzame pravico do spreminjanja usmerjevalne tabele. Njihova ločitev je način, da se naučite, katero vrstico v resnici želite.

Kaj ječa odvzame, kar daemon še potrebuje

Sprememba korena se zgodi po zagonu, zato daemon obdrži vse, kar je že odprl, in izgubi vse, kar bi odprl pozneje. Vsak pomočnik, ki ga povezava zažene po tej točki, mora obstajati znotraj novega korena, skupaj z deljenimi knjižnicami, ki jih nalaga. Ječa, sestavljena iz konfiguracijske datoteke in potrdila, nima ne enega ne drugega.

Prehod na neprivilegiran račun je ločena omejitev. Proces, ki se je odpovedal rootu, morda ne more spreminjati poti ali dvigniti vmesnika, tudi ko je binarna datoteka prav tam, zato je treba obe napaki diagnosticirati ločeno.

Trije pogoji odločajo, katero popravilo potrebujete

Prvi pogoj je, kako vaša gradnja namešča poti. Novejše OpenVPN izdaje konfigurirajo vmesnik in usmerjevalno tabelo znotraj procesa, medtem ko se starejši paketi in lastne nastavitve zanašajo na zunanja orodja ali na skripte up in down. Če dnevnik navede ukaz, je v igri zunanje orodje in ječa ga skriva. Če dnevnik namesto tega pokaže napako dovoljenja, je problem račun.

Drugi je vzdrževanje. Ječo s kopiranimi binarnimi datotekami je treba osvežiti vsakič, ko se paket, ki jih zagotavlja, nadgradi, sicer prva nadgradnja za seboj pusti pokvarjen tunel. Tretji je, ali določena kontrola res zahteva chroot; če se zahteva v resnici nanaša na ločevanje pravic, lahko zadošča že sprememba računa.

Signal in the logOther side of the boundaryRepair direction
Command not found after startupBinary and its libraries absent inside the new rootPopulate the jail, or drop the chroot line
Operation not permittedAccount lost the privilege to edit routesKeep the account privileged, or pre-create routes elsewhere
No such deviceJail lacks the tun device nodeCreate the node inside, or open it before the root change

Kaj mora vsebovati delujoča ječa

Ječa, ki izvaja ukaze, potrebuje binarno datoteko, vsako knjižnico, na katero se povezuje, in vsako vozlišče naprave, ki ga daemon odpre pozno. Kopirajte dele in jih preizkusite brez VPN v sliki:

ldd /usr/sbin/ip
chroot /etc/openvpn/jail /sbin/ip route show
chroot /etc/openvpn/jail /sbin/ip link set tun0 up

Prvi ukaz navede odvisnosti in to je tisti, ki ga ljudje preskočijo. Kopirana binarna datoteka, ki ne najde knjižnice, odpove z drugačnim sporočilom kot manjkajoča binarna datoteka, in oboje je videti kot okvara OpenVPN, ko se bere z odjemalske strani. Ročna izvedba ukaza v ječi ponovi okvaro brez ponovnega zagona storitve.

V ječo kopirajte tudi konfiguracijo, potrdila in morebitni CRL, ker datoteke, ki jo daemon po zagonu želi znova prebrati, po spremembi korena ne bo mogoče najti. Zapišite, kaj ste kopirali, saj naslednja nadgradnja omrežnega paketa nadomesti izvirnike in pusti ječo na stari kopiji.

Namesto tega zmanjšajte utrjevanje

Če ječa obstaja samo zato, ker je tako rekel vodnik, je odstranitev te ene vrstice ob ohranitvi omejitev računa zagovorljiv izid. Daemon obdrži svoj pogled na datotečni sistem in se znebi težave, znižanje pravic pa še vedno odvzame root dolgoživemu procesu.

Zapišite, kaj ostane, in zakaj. Konfiguracija, ki je tiho izgubila kontrolo brez opombe, je način, kako utrjevanje drsi, in naslednja revizija bo vprašala, zakaj je vrstica izginila.

Razdelite tri vrstice, preden izberete

Kopirajte konfiguracijo, onemogočite vse tri direktive in potrdite, da se odjemalec poveže in da se pojavijo pričakovane poti. Nato znova omogočite samo vrstice računa in nazadnje chroot sam. Korak, v katerem se tunel zlomi, označi mejo, in se izognete ponovni gradnji ječe, ki nikoli ni bila vzrok.

Ko znova usmerja, zaženite eno odjemalsko sejo z višjo podrobnostjo in preberite vrstico, ki navede ukaz ali dovoljenje, ki ni uspelo. Ta vrstica je vredna več kot časovna omejitev, ki jo odjemalec na koncu sporoči.

Sorodni članki