Hvordan sette opp Linux Chroot -fengsler

Hvordan sette opp Linux Chroot -fengsler
Spesielt de som er dedikert til kritiske tjenester, Linux-systemer krever kunnskap på ekspertnivå for å jobbe med og kjernesikkerhetstiltak.

Dessverre, selv etter å ha tatt avgjørende sikkerhetstiltak, finner sikkerhetsproblemer fortsatt veien inn i sikre systemer. En måte å administrere og beskytte systemet ditt på er ved å begrense skaden som er mulig når et angrep oppstår.

I denne opplæringen vil vi diskutere prosessen med å bruke Chroot fengsel for å håndtere systemskader i tilfelle et angrep. Vi ser på hvordan vi kan isolere prosesser og underprosesser til et bestemt miljø med falske rotrettigheter. Å gjøre dette vil begrense prosessen til en spesifikk katalog og nekte tilgang til andre systemområder.

En kort introduksjon til Chroot fengsel

Et chroot fengsel er en metode for å isolere prosesser og deres underprosess fra hovedsystemet ved å bruke falske rotrettigheter.

Som nevnt begrenser isolering av en bestemt prosess ved bruk av falske rotrettigheter skader i tilfelle et ondsinnet angrep. Chrooted-tjenester er begrenset til katalogene og filene i katalogene sine og er ikke-vedvarende ved omstart av tjenesten.

Hvorfor bruke Chroot fengsel

Hovedformålet med Chroot fengsel er som et sikkerhetstiltak. Chroot er også nyttig når du gjenoppretter tapte passord ved å montere enheter fra live media.

Det er forskjellige fordeler og ulemper ved å sette Chroot fengsel. Disse inkluderer:

Fordeler

  • Begrenser tilgang: I tilfelle av sikkerhetskompromiss er de eneste skadede bare katalogene de i Chroot -fengselet.
  • Kommandobegrensninger: Brukere eller prosesser blir begrenset til kommandoer som er tillatt i fengselet.

Ulemper

  • Det kan være utfordrende å konfigurere.
  • Det krever mye arbeid-hvis du trenger en ekstra kommando enn de som er tillatt som standard, må du inkludere den manuelt.

Hvordan lage et grunnleggende chroot fengsel

I denne prosessen vil vi lage et grunnleggende chroot fengsel med 3 kommandoer begrenset til den mappen. Dette vil bidra til å illustrere hvordan du oppretter et fengsel og tildeler forskjellige kommandoer.

Begynn med å lage en hovedmappe. Du kan tenke på denne mappen som / mappen i hovedsystemet. Navnet på mappen kan være hva som helst. I vårt tilfelle kaller vi det /chrootjail

sudo mkdir /chrootjail

Vi vil bruke denne katalogen som den falske roten som inneholder kommandoene vi vil tilordne den. Med kommandoene vi bruker, vil vi kreve BIN -katalogen (inneholder kommandoen kjørbare) og osv., Katalog (som inneholder konfigurasjonsfiler for kommandoene).

Inne i /chrootjail -mappen, lag disse to mappene:

sudo mkdir /chrootjail /etc, bin

Neste trinn er å lage kataloger for dynamisk koblede biblioteker for kommandoene vi ønsker å inkludere i fengselet. For dette eksemplet vil vi bruke bash-, LS- og GREP -kommandoer.

Bruk LDD -kommandoen til å liste opp avhengighetene til disse kommandoene, som vist nedenfor:

sudo ldd /bin /bash /bin /ls /bin /grep

Hvis du ikke er inne i søppelmappen, må du passere hele banen for kommandoene du ønsker å bruke. For eksempel LDD /BIN /BASH eller LDD /BIN /GREP

Fra LDD-utgangen ovenfor trenger vi LIB64 og /LIB /X86_64-LINUX-GNU-katalogene. Inne i fengselskatalogen, oppretter disse mappene.

sudo mkdir -p /chrootjail lib /x86_64-linux-gnu, lib64

Når vi har opprettet dynamiske bibliotekskataloger, kan vi liste dem ved hjelp av et tre, som vist nedenfor:

Når vi går videre, vil du begynne å få et klart bilde av hva et chroot fengsel betyr.

Vi skaper et miljø som ligner på en normal rotkatalog for et Linux -system. Forskjellen er at i dette miljøet er det bare spesifikke kommandoer som er tillatt, og tilgangen er begrenset.

Nå som vi har laget søpla. etc., Lib og lib64, vi kan legge til de nødvendige filene i deres respektive kataloger.

La oss starte med binærene.

sudo cp /bin /bash /chrootjail /bin && sudo cp /bin /ls /chrootjail /bin && sudo cp /bin /grep /chrootjail /bin

Etter å ha kopiert binærene for kommandoene vi trenger, trenger vi bibliotekene for hver kommando. Du kan bruke LDD -kommandoen til å se filene du vil kopiere.

La oss starte med bash. For bash krever vi følgende biblioteker:

/lib/x86_64-linux-gnu/libtinfo.så.6
/lib/x86_64-linux-gnu/libdl.så.2
/lib/x86_64-Linux-GNU/libc.så.6
/lib64/ld-linux-x86-64.så.2

I stedet for å kopiere alle disse filene en etter en, kan vi bruke en enkel for loop til å kopiere hvert bibliotek i alle bibliotekene til/chrootjail/lib/x86_64-linux-gNU

La oss gjenta denne prosessen for både LS og GREP -kommando:

For LS -kommandoen:

For GREP -kommando:

Neste, inne i Lib64 -katalogen, har vi ett delt bibliotek på tvers av alle binærene. Vi kan ganske enkelt kopiere den ved hjelp av en enkel CP -kommando:

Deretter, la oss redigere hovedfilen for bash -påloggingsfil (som ligger i /etc /bash.Bashrc i Debian) slik at vi kan finjustere bash -ledeteksten etter vår smak. Bruke en enkel ekko- og tee -kommandoer som vist:

sudo ekko 'ps1 = "chrootjail #"' | sudo tee/chrootjail/etc/bash.Bashrc

Når vi har fullført alle trinnene ovenfor, kan vi logge inn i fengselsmiljøet ved hjelp av Chroot -kommandoen som vist.

sudo chroot /chrootjail /bin /bash

Du vil få rotrettigheter med ledeteksten som ligner de som er opprettet i Echo og Tee -kommandoen ovenfor.

Når du har logget inn, vil du se at du bare har tilgang til kommandoene du inkluderte når du opprettet fengselet. Hvis du trenger flere kommandoer, må du legge dem manuelt.

MERK: Siden du har inkludert bash-skallet, vil du ha tilgang til alle Bash-innebygde kommandoer. Som lar deg forlate fengselet ved hjelp av exit -kommandoen.

Konklusjon

Denne opplæringen dekket hva Chroot fengsel er og hvordan vi kan bruke det til å skape et isolert miljø fra hovedsystemet. Du kan bruke teknikkene som er omtalt i guiden for å skape isolerte miljøer for kritiske tjenester.

For å øve på det du har lært, kan du prøve å opprette et Apache2 -fengsel.

HINT: Begynn med å lage en rotkatalog, legg til konfigurasjonsfilene (etc/apache2), legg til dokumentroten (/var/www/html), legg til binær (/usr/sbin/apache2) og til slutt legg til de nødvendige bibliotekene (LDD/ usr/sbin/apache2)