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 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: Sammen med biblioteker av ekko, det er noe annet som også vises . Den siste linjen i produksjonen innebærer at systemet mitt er 64bit Ved 32bit Vil bli noe sånt som: Nå: Echo kommando og relevante biblioteker av at sammen med arkitekturen bibliotek kopieres inne /Chroot henhold samme katalog med samme filnavn: 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: 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. For eksempel: Nå er din fengsel klar med bare 2 privilegier som bruker ekko og ls kommandoer Hvordan teste det Her:? 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? Nå brukertester er laget med standard hjemmekatalog som /home /u1 og videregående gruppe som "fengsel" Nå ønsker du å fengsle "U1" bare når han logger inn via SSH. For å oppnå dette, redigere /etc /ssh /sshd_config: Og føyer til følgende linjer: Lagre filen og avslutt Nå teste den. 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!
. Vår fengsel navn er Chroot Hotell og det ligger under " /
". Clear
# mkdir /Chroot
# 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 * /
arkitektur
system, output av kommandoen.
< b> # ldd /bin /ekko
linux-vdso.so.1 = > (0x00007ffff8ffd000) libc.so.6 = > /lib/libc.so.6 (0x0000003dbc400000) /lib/ld-linux.so.2 (0x0000003dbc400000) /* utgang * /
# 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 * /
$ ls -p /Chroot
bin /lib64 /------------------------------------------------------------------------------------------------------------------------------------------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"------------------------------------------------------------------------------------------------------------------------------------------
# ./cplb.sh command_name
# ./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 * /
# chroot jail_name
# chroot /chrootbash-4.1#echo "suksess .. !! "suksess .. !! bash-4.1 # ifconfigbash: ifconfig: kommando ikke foundbash-4.1 # exit
# useradd -G fengsel u1 /* lage en bruker som heter "U1" som sekundær gruppen er "fengsel" * /# passwd U1 /* tildele passwd til U1 * /
# su -. u1 $ pwd
/home /U1 /* Han er i normale omgivelser hvor han kan utføre alle kommandoer * /
$ exit
# vi /etc /ssh /sshd_config
# Re- dirigere brukere fra fengsel gruppen til fengsel på /ChrootMatch Gruppe jailChrootDirectory /Chroot
# tjenesten sshd starte
# ssh u1 @ localhostu1 @ localhost passord: Siste innlogging: Man 29 juli 13:11:30 2013 fra localhost.localdomainbash-4.1 $