A szolgáltatás elindul, egy kliens csatlakozik, és a szerver oldalon soha nem jelenik meg útvonal. Vagy a daemon megtagadja az indulást, és megnevez egy parancsot, amelyet nem tudott végrehajtani. Mindkét kimenet ugyanazt a három sort követi, amelyeket általában együtt másolnak egy keményítési útmutatóból: átváltás jogosulatlan fiókra, a csoport elhagyása és a fájlrendszer gyökerének módosítása. A három közül csak egy rejt el fájlokat, és csak egy közülük vonja el az útválasztási tábla módosításának jogosultságát. A szétválasztásukkal tudod megtanulni, melyik sort akarod valójában.

Mit vesz el a börtön, amire a daemonnak még szüksége van

A gyökér módosítása az indítás után történik, így a daemon megtartja mindazt, amit már megnyitott, és elveszíti mindazt, amit később nyitna meg. Minden segédprogramnak, amelyet a kapcsolat e pont után futtat, léteznie kell az új gyökéren belül, a betöltött megosztott könyvtárakkal együtt. Egy konfigurációs fájlból és egy tanúsítványból épült börtönben egyik sincs meg.

A jogosulatlan fiókra váltás külön korlátozás. Egy rootról lemondott folyamat talán nem tud útvonalakat módosítani vagy interfészt felhozni, még akkor sem, ha a bináris éppen ott van, ezért a két hibát külön kell diagnosztizálni.

Három feltétel dönti el, milyen javításra van szükség

Az első feltétel az, hogyan telepíti az útvonalakat a build. Az újabb OpenVPN kiadások a folyamaton belül konfigurálják az interfészt és az útválasztási táblát, míg a régebbi csomagok és saját beállítások külső eszközökre vagy up és down szkriptekre támaszkodnak. Ha a napló parancsot nevez meg, külső eszköz van a játékban, és a börtön elrejti. Ha a napló helyette jogosultsági hibát mutat, a fiók a probléma.

A második a karbantartás. A másolt binárisokat tartalmazó börtönt frissíteni kell minden alkalommal, amikor az azokat biztosító csomag frissül, különben az első frissítés törött alagutat hagy maga után. A harmadik az, hogy egy adott vezérlő valóban igényel-e chrootot; ha a követelmény valójában a jogosultságok szétválasztásáról szól, a fiókváltás önmagában is elég lehet.

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

Mit kell tartalmaznia egy működő börtönnek

A parancsokat futtató börtönnek szüksége van a binárisra, minden könyvtárra, amelyhez kapcsolódik, és minden eszközcsomópontra, amelyet a daemon későn nyit meg. Másold be a darabokat, és teszteld őket VPN nélkül a képben:

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

Az első parancs listázza a függőségeket, és ezt szokták kihagyni az emberek. Egy másolt bináris, amely nem talál egy könyvtárat, más üzenettel hibázik meg, mint egy hiányzó bináris, és mindkettő OpenVPN-hibának tűnik a kliens oldaláról nézve. A parancs kézi futtatása a börtönben reprodukálja a hibát anélkül, hogy újraindítaná a szolgáltatást.

Másold be a konfigurációt, a tanúsítványokat és az esetleges CRL-t is a börtönbe, mert egy fájl, amelyet a daemon az indítás után újra akar olvasni, nem található meg, miután a gyökér megváltozott. Jegyezd fel, mit másoltál, mert a hálózati csomag következő frissítése lecseréli az eredetieket, és a börtönt a régi másolaton hagyja.

Inkább csökkentsd a keményítést

Ha a börtön csak azért létezik, mert egy útmutató így mondta, az az egy sor eltávolítása a fiókkorlátozások megtartása mellett védhető eredmény. A daemon megtartja a fájlrendszer-nézetét, és megszabadul a problémától, a jogosultságcsökkentés pedig továbbra is eltávolítja a rootot a hosszú életű folyamatból.

Írd le, mi marad, és miért. Egy konfiguráció, amely csendben elvesztett egy vezérlőt megjegyzés nélkül, így sodródik a keményítés, és a következő audit megkérdezi, miért tűnt el a sor.

Válaszd szét a három sort, mielőtt döntesz

Másold le a konfigurációt, tiltsd le mindhárom direktívát, és igazold, hogy egy kliens csatlakozik, és megjelennek a várt útvonalak. Ezután csak a fióksorokat engedélyezd újra, majd végül a chrootot egyedül. Az a lépés, ahol az alagút eltörik, jelöli ki a határt, és elkerülöd egy olyan börtön újjáépítését, amely soha nem volt az ok.

Amikor újra route-ol, futtass egy kliens munkamenetet nagyobb részletességgel, és olvasd el a sort, amely megnevezi a parancsot vagy a sikertelen jogosultságot. Az a sor többet ér, mint a timeout, amelyet a kliens végül jelent.

Kapcsolódó cikkek