Pakalpojums startē, klients pievienojas, un servera pusē nekad neparādās maršruts. Vai arī dēmons atsakās startēt un nosauc komandu, kuru tas nevarēja izpildīt. Abi iznākumi seko tām pašām trim rindām, kuras parasti kopē kopā no sacietēšanas rokasgrāmatas: pāreja uz neprivileģētu kontu, grupas atmešana un failu sistēmas saknes maiņa. Tikai viena no trim slēpj failus, un tikai viena no tām atņem tiesības mainīt maršrutēšanas tabulu. To atdalīšana ir veids, kā uzzināt, kura rinda jums patiešām ir vajadzīga.

Ko cietums atņem, kas dēmonam vēl vajadzīgs

Saknes maiņa notiek pēc starta, tāpēc dēmons patur visu, ko jau ir atvēris, un zaudē visu, ko atvērtu vēlāk. Jebkuram palīgam, ko savienojums izpilda pēc šī punkta, ir jāpastāv jaunajā saknē, kopā ar ielādētajām koplietotajām bibliotēkām. Cietumam, kas būvēts no konfigurācijas faila un sertifikāta, nav neviena no tiem.

Pāreja uz neprivileģētu kontu ir atsevišķs ierobežojums. Process, kas atteicies no root, var nespēt mainīt maršrutus vai pacelt saskarni pat tad, ja binārais fails ir tepat, tāpēc abas kļūmes jādagnozē atsevišķi.

Trīs nosacījumi izlemj, kāds labojums jums vajadzīgs

Pirmais nosacījums ir tas, kā jūsu build instalē maršrutus. Jaunākās OpenVPN versijas konfigurē saskarni un maršrutēšanas tabulu procesa iekšienē, kamēr vecākas pakotnes un pašu konfigurācijas paļaujas uz ārējiem rīkiem vai up un down skriptiem. Ja žurnāls nosauc komandu, spēlē ir ārējs rīks un cietums to slēpj. Ja žurnāls tā vietā rāda atļauju kļūdu, problēma ir konts.

Otrais ir uzturēšana. Cietums ar kopētiem binārajiem failiem jāatsvaidzina katru reizi, kad tiek atjaunināta pakotne, kas tos nodrošina, citādi pirmais atjauninājums atstāj aiz sevis salauztu tuneli. Trešais ir tas, vai konkrēta kontrole patiešām prasa chroot; ja prasība patiesībā ir par privilēģiju atdalīšanu, var pietikt ar konta maiņu vien.

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

Kas jāsatur strādājošam cietumam

Cietumam, kas izpilda komandas, vajag bināro failu, katru bibliotēku, ar kuru tas saistās, un katru ierīces mezglu, ko dēmons atver vēlu. Nokopējiet daļas un pārbaudiet tās bez VPN attēlā:

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

Pirmā komanda uzskaita atkarības, un tieši to cilvēki izlaiž. Nokopēts binārais fails, kas neatrod bibliotēku, sabrūk ar citu ziņojumu nekā trūkstošs binārais fails, un abi izskatās kā OpenVPN kļūme, lasot no klienta puses. Komandas izpilde cietumā ar roku atkārto kļūmi, nepārstartējot pakalpojumu.

Nokopējiet cietumā arī konfigurāciju, sertifikātus un jebkuru CRL, jo fails, ko dēmons pēc starta grib atkārtoti nolasīt, netiks atrasts, kad sakne būs mainīta. Pierakstiet, ko nokopējāt, jo nākamais tīkla pakotnes atjauninājums aizstās oriģinālus un atstās cietumu uz vecās kopijas.

Tā vietā samaziniet sacietēšanu

Ja cietums pastāv tikai tāpēc, ka tā teica rokasgrāmata, šīs vienas rindas noņemšana, saglabājot konta ierobežojumus, ir aizstāvams iznākums. Dēmons saglabā savu failu sistēmas skatījumu un atbrīvojas no problēmas, un privilēģiju samazināšana joprojām atņem root ilgmūžīgajam procesam.

Pierakstiet, kas paliek, un kāpēc. Konfigurācija, kas klusi zaudēja kontroli bez piezīmes, ir veids, kā sacietēšana dreifē, un nākamais audits jautās, kāpēc rinda pazuda.

Sadaliet trīs rindas pirms izvēles

Nokopējiet konfigurāciju, atspējojiet visas trīs direktīvas un apstipriniet, ka klients pievienojas un parādās gaidītie maršruti. Pēc tam atkal iespējojiet tikai konta rindas, un tad chroot vienu pašu. Solis, kurā tunelis lūzt, norāda robežu, un jūs izvairāties no cietuma pārbūves, kas nekad nebija cēlonis.

Kad tas atkal maršrutē, palaidiet vienu klienta sesiju ar lielāku detalitāti un izlasiet rindu, kas nosauc komandu vai neizdevušos atļauju. Šī rinda ir vērtīgāka par taimautu, ko klients beigās ziņo.

Saistītie raksti