Komanda chroot izveido izolētu vidi operētājsistēmā Linux, mainot visu darbojošos procesu saknes direktoriju.

Vai vēlaties palaist lietojumprogrammas vai pakalpojumus izolētā vietā operētājsistēmā Linux? Vai varbūt vēlaties pārbaudīt un atkļūdot lietojumprogrammu, neiejaucoties pārējā sistēmā? Ja tā, tad vēlēsities uzzināt par chroot — jaudīgu Linux iebūvēto mehānismu, kas ļauj sistēmā izveidot atsevišķu vidi.

Sīkāk izpētīsim chroot, uzzināsim par tā priekšrocībām, lietošanas gadījumiem, kā to iestatīt Linux sistēmā un, ja nepieciešams, kā no tā izvairīties.

Kas ir chroot operētājsistēmā Linux?

chroot vai change-root neapšaubāmi ir viens no vienkāršākajiem un senākajiem konteinerizācijas programmatūras veidiem, kas ļauj lietotājam droši izmantot smilškastes lietojumprogrammas un pakalpojumus. Smilškaste, skaitļošanas terminos, ir process, kurā programma tiek izolēta ierobežotā telpā ar iepriekš noteiktiem resursiem.

Ja esat iepazinies ar Docker un kā tas darbojas, jūs varat domāt par chroot kā tā ļoti attīrītu versiju. chroot darbojas, mainot programmas saknes direktoriju, ierobežojot piekļuvi un redzamību, tādējādi nodrošinot papildu izolācijas un drošības slāni.

Būtībā jūs izveidojat atsevišķu direktoriju, pārkopējiet visas programmas atkarības jaunajā direktorijā un pēc tam palaidiet komandu chroot. Tas ļauj programmai pareizi darboties, bet tai nav piekļuves pamata failu sistēmai.

programmas chrootēšana ir lielisks veids, kā pārbaudīt tās uzticamību drošā vietā, nemainot faktiskos sistēmas failus. Turklāt jūs varat arī samazināt drošības risku, ko rada apdraudēta pakotne, jo chrootētā vidē uzlauztā pakotne nevarēs piekļūt un modificēt sensitīvus sistēmas failus.

Programma varēs piekļūt un skatīt tikai failus, kas importēti chroot direktorijā, ko citādi sauc par "chroot cietumu". Tādējādi programma un tās apakšprocesi neiejaucas pamata sistēmā.

Kas ir chroot cietums?

Chroot cietums ir izolēta vide, kurā atrodas un tiek izpildītas chroot programmas. Termins chroot cietums ir atvasināts no jēdziena, ka process un tā apakšprocesi chrootētā vidē nav piekļuves vai redzamības bāzes failu sistēmai un ir iesprostoti chroot robežās ar iepriekš noteiktu resursus.

Tagad, kad chroot jēdziens jums ir skaidrs, pievērsīsimies praktiskajai darbībai un uzzināsim, kā izveidot chroot cietumu un izveidot tajā procesus.

Kā izveidot chroot cietumu un izpildīt tajā esošās programmas

Chroot cietums būtībā ir direktorijs, kurā ir visi nepieciešamie resursi, faili, binārie faili un citas atkarības, kas būtu nepieciešamas, lai programma darbotos pareizi.

Tomēr atšķirībā no parastās Linux vides, chroot cietuma vide ir ļoti ierobežota, un programma nevar piekļūt ārējiem vai papildu failiem un sistēmas resursiem.

Piemēram, lai palaistu Bash čaulu chroot cietumā, Bash binārais fails un visas tā atkarības ir jāpārkopē uz chroot direktoriju.

Tālāk ir norādītas darbības, lai izveidotu chroot cietumu un izveidotu Bash čaulu:

  1. Lai programma darbotos veiksmīgi, visas tās atkarības ir jākopē chrooted direktorijā. Atradīsim bināro, šajā gadījumā Bash, un visu tā atkarību atrašanās vietu, izmantojot komandas what un ldd:
    kas bash
    ldd /usr/bin/bash
  2. Tagad, kad zināt binārā faila atrašanās vietas un tā atkarības, kopējiet tos direktorijā, kuru vēlaties pārvērst par chroot cietumu. Izmantojot komandu mkdir izveidojiet nepieciešamos direktorijus un izmantojot cp komanda, kopējiet visus failus attiecīgajos direktorijos:
    mkdir bin lib lib64 && cp -r /lib/ * ./lib && cp -r /lib64/* /lib64/ && cp /bin/bash /bin/
  3. Visbeidzot, pārkopējot programmu un tās atkarības, varat palaist komandu chroot ar paaugstinātām privilēģijām, izmantojot sudo prefiksu, lai izvēlētajā direktorijā izveidotu chroot vidi. Pēc noklusējuma tas radīs Bash apvalku. Šeit ir komanda, kas jāievada:
    sudo chroot direktorija_nosaukums

Šīs ir visas darbības, lai izveidotu chroot cietumu un palaistu tajā programmu.

Kā izkļūt no chroot cietuma

Lai gan chroot cietumi ir piemēroti nestabilas programmatūras testēšanai, tie ir noderīgi arī SSH savienojumu apstrādē, jo savienoto lietotāju chroot ir viens no daudzajiem veidi, kā nodrošināt SSH serveri.

No otras puses, ja esat iespiešanās pārbaudītājs un esat pieteicies sava mērķa SSH serverī, atrast to par hrootētu vidi var radīt vilšanos un justies kā strupceļā.

Tomēr ir diezgan daudz veidu, kā izkļūt no nepareizi konfigurēta chroot cietuma, dažiem ir nepieciešamas C programmēšanas prasmes, savukārt citus var automatizēt, izmantojot rīkus. Daži vienkārši veidi, kā izvairīties no chroot, ir:

  • Ligzdoti chroot zvani
  • Ligzdoti chroot izsaukumi ar saglabāta faila deskriptoru
  • Mount saknes metode
  • procfs aizbēgt
  • ptrace aizbēgt

Ņemiet vērā, ka, lai veiktu chroot aizbēgšanu, izmantojot kādu no šīm metodēm, jums sistēmā ir jābūt eskalētām privilēģijām. Uzziniet vairāk par šīm evakuācijas metodēm, dodoties uz chw00t GitHub repozitorijschroot evakuācijas automatizācijas rīks.

Tagad jūs zināt visu par chroot operētājsistēmā Linux

Tagad, kad zināt, kas ir chroot, kā tas darbojas un kā to ieviest, jums vajadzētu būt iespējai bez piepūles ievietot smilškastes lietojumprogrammas no termināļa. Ņemiet vērā, ka, kā jūs zināt, ir vairāki veidi, kā izkļūt no chrooted vides.

Tas liecina, ka chroot nekādā gadījumā nebija paredzēts ieviest kā drošības līdzekli. Tāpēc jums vajadzētu izmantot chroot ar lielu piesardzību, jo nepareiza konfigurācija var izraisīt atgriešanos un apdraudēt jūsu sistēmas drošību.

Vislabāk ir pieturēties pie īpašiem smilškastes risinājumiem, piemēram, konteinerizācijas programmatūrai vai virtuālajām mašīnām. Abas tās ir vērstas uz smilškaste un drošību, tāpēc, ja vien pilsētā nav jauna nulles diena, jums nav jāuztraucas par savas sistēmas drošību un integritāti.

Ja neesat pārliecināts, kuru izvēlēties starp konteinerizācijas un virtualizācijas programmatūru, jums vajadzētu izmēģināt abus un pārliecināties, kura no tām ir labāka.