Chroot Jail

Denne artikkelen ble skrevet med en intensjon om å hjelpe Linux-brukere i å forstå chroot fengsel funksjonen og setup en selv, for å eksperimentere.

Å fengsle brukere ved hjelp av "chroot Jail"

For å si det enkelt, det er ikke noe annet enn å begrense hva en prosess /brukeren kan se i systemet. Nå din gjetning er riktig. Det er en måte å sikre systemet fra ulike sikkerhetsangrep.

Nå, for å sette det litt mer teknisk, er Chroot Jail en funksjon for å opprette et begrenset sandkasse og dermed gir en prosess for å vise bare én sub-treet av filsystemet.

Kan ikke få det? Ikke et problem. Fortsette å lese, og jeg vil gjøre det klart.


Som navnet tilsier, kommer vi til å skape et fengsel innenfor der brukeren /prosessen blir fengslet. Nå, la oss bestemme hvor vi ønsker å ha fengsel. ie. I hvilken plassering. Ok, jeg har besluttet å ha den under root (/) katalog

La oss kalle det.; Jeg navngi den som Chroot
. Vår fengsel navn er Chroot Hotell og det ligger under " /
". Clear

  # mkdir /Chroot 

Neste, selv om det er et fengsel fangene er ment for å nyte noen grunnleggende rettigheter minst

Her?.; Privilegier = Kommandoer

Nå, hvordan dette fungerer. Hvordan vi fengsle?

Det er ganske enkelt. Vi kommer til å lure brukeren sier at /Chroot = /.

I enkle ord, fengslet brukeren vil tenke /Chroot er faktisk /. Ved denne måten, vil den fengslede brukeren ikke har tilgang over /Chroot eller ut av det. For å være presis, vil fengslet brukeren ikke engang vet at det finnes en verden utenfor fengsel.

Nå, hvordan å tilordne rettigheter til dem?

For eksempel si at jeg vil ha den fengslede brukeren å kjøre bare svært få grunnleggende kommandoer som "ekko, ls, pwd, touch". Nå er alle disse kommandoene er tilgjengelig utenfor fengsel. Så, for å gjøre den tilgjengelig for fengsel brukere vi trenger å ha en kopi av den inne i fengsel, så vel.

Nå mens kopiering, husk bare å kopiere kommandoen alene ikke vil gjøre. Biblioteker relatert til den aktuelle kommandoen, må også kopieres:

 # som ekko /* forteller deg hele banen ekko * /
 /bin /ekko /* utgang * /
 # ldd /bin /ekko /* viser biblioteker av echo kommandoen * /
 linux-vdso.so.1 = > (0x00007ffff8ffd000) libc.so.6 = > /lib64/libc.so.6 (0x0000003dbc400000) /lib64/ld-linux-x86-64.so.2 (0x0000003dbbc00000) /* utgang * /

Sammen med biblioteker av ekko, det er noe annet som også vises . Den siste linjen i produksjonen innebærer at systemet mitt er 64bit
arkitektur

Ved 32bit
system, output av kommandoen.

 < b> # ldd /bin /ekko 

Vil bli noe sånt som:

 linux-vdso.so.1 = > (0x00007ffff8ffd000) libc.so.6 = > /lib/libc.so.6 (0x0000003dbc400000) /lib/ld-linux.so.2 (0x0000003dbc400000) /* utgang * /

Nå:

 # cp /bin /ekko /Chroot /bin /ekko /* kopier ekkoet kommandoskriptfil * /# cp /lib64/libc.so.6 /Chroot/lib64/libc.so.6 /* kopiering bibliotekene som fant vi ved hjelp av kommandoen ldd * /
 # cp /lib64 /ld-linux-x86-64.so.2 /Chroot//lib64/ld-linux-x86-64.so.2 /* kopiere arkitektur bibliotek samt * /

Echo kommando og relevante biblioteker av at sammen med arkitekturen bibliotek kopieres inne /Chroot henhold samme katalog med samme filnavn:

  $ ls -p /Chroot 
bin /lib64 /

Nå, for ls og andre kommandoer , vil prosessen bli langvarig, siden disse kommandoene har flere antall biblioteker. Så, skal du benytte deg av manuset jeg har skrevet å kopiere kommandoene samt biblioteker i ett go:

------------------------------------------------------------------------------------------------------------------------------------------Cplb.shJAIL='/Chroot/'for jeg i $ (LDD "$ @" | cut -d "" -F3 | sort -u | grep -v ': $') docp --parents "$ i" "$ FENGSEL" donecp --parents "$ @" "$ FENGSEL" # 64-bit archif [-f /lib64/ld-linux-x86-64.so.2]; thencp --parents /lib64/ld-linux-x86-64.so.2 $ JAILfi # 32-bit archif [-f /lib/ld-linux.so.2]; thencp --parents /lib/ld-linux.so.2 $ JAILfiecho "Chroot fengsel er klar til å få tilgang til det utføre. chroot $JAIL"------------------------------------------------------------------------------------------------------------------------------------------

Give utføre tillatelse til ovennevnte script før du går videre nå, for å kopiere en kommando, og alle relevante biblioteker, herunder arkitektur biblioteket, bare løpe.

  # ./cplb.sh command_name 

For eksempel:

 # ./cplb.sh /bin /ls /* Dette vil kopiere ls kommandoen script, samt andre relevante bibliotek til "/Chroot" katalog * /
 # ./cplb. sh /bin /{touch, katt} /* Dette vil kopiere touch &. katt kommandoer sammen med sine biblioteker * /

Nå er din fengsel klar med bare 2 privilegier som bruker ekko og ls kommandoer

Hvordan teste det

  # chroot jail_name 

Her:?

 # chroot /chrootbash-4.1#echo "suksess .. !! "suksess .. !! bash-4.1 # ifconfigbash: ifconfig: kommando ikke foundbash-4.1 # exit 

Dette vil ta deg ut av fengsel

Vi var i stand til å kjøre ekko fordi. vi har kopiert echo kommandoen og dens relevante bibliotekene inne fengsel.

Den siste finpussen

Tenk sanntid scenario, at jeg vil ha en bestemt bruker å bli fengslet inne fengsel når han logger på via SSH.

I utgangspunktet vil vi SSH når vi har logget inn fra en annen maskin. Så her vil jeg fengsel brukeren bare når han logger inn fra en annen maskin.

Hvordan oppnå det?

 # useradd -G fengsel u1 /* lage en bruker som heter "U1" som sekundær gruppen er "fengsel" * /# passwd U1 /* tildele passwd til U1 * /

Nå brukertester er laget med standard hjemmekatalog som /home /u1 og videregående gruppe som "fengsel"

  # su -. u1 $ pwd 
 /home /U1 /* Han er i normale omgivelser hvor han kan utføre alle kommandoer * /
  $ exit 

Nå ønsker du å fengsle "U1" bare når han logger inn via SSH. For å oppnå dette, redigere /etc /ssh /sshd_config:

  # vi /etc /ssh /sshd_config 

Og føyer til følgende linjer:

 # Re- dirigere brukere fra fengsel gruppen til fengsel på /ChrootMatch Gruppe jailChrootDirectory /Chroot 

Lagre filen og avslutt

  # tjenesten sshd starte 

Nå teste den.

 # ssh u1 @ localhostu1 @ localhost passord: Siste innlogging: Man 29 juli 13:11:30 2013 fra localhost.localdomainbash-4.1 $ 

Så, når noen fra andre maskinen prøver å logge inn på din maskin via SSH (i dette tilfellet, bare når han har logget inn som "U1" bruker), han vil bli fengslet under /Chroot fengsel, slik at han ikke får tilgang til noe over eller utenfor det. Dessuten kan han bruke bare de kommandoene som tilbys.

Takk for lesing. Cheers!