hvordan sette Opp Linux chroot fengsler

begrepet chroot fengsel ble først brukt i 1992, I en artikkel av en fremtredende sikkerhetsforsker, Bill Cheswick, (som er interessant hvis du er i den slags ting, kan du finne artikkelen her). Chroot fengsler begynte å vises i 2003, med programmer SOM IRC og FTP. I 2005 introduserte Sun Sin “Containere” – teknologi Kalt Zones, som igjen var en forløper til begrepet navnerom, som er en kjerneteknologi som brukes med containere.

grunnleggende Om Chroot

Chroot lar en administrator kontrollere tilgangen til en tjeneste eller et filsystem mens han kontrollerer eksponeringen for det underliggende servermiljøet. De to vanlige eksemplene du kan støte på er under oppstartssekvensen og “nødskallet” På Red Hat / CentOS / Fedora-systemer, og I Secure FTP (SFTP).

kommandoen ser slik ut:

chroot <newroot> ]

i Likhet med kommandoen sudo endrer kommandoen chroot miljøet til følgende kommando. Med andre ord vil det forandre deg til katalogen newroot, og gjør også den katalogen til” working ” – katalogen. command utfører deretter på den plasseringen, noe som er nyttig for ting som å redde et system som ikke vil starte opp.

I Motsetning til sudo, vil du være “i” katalogen. Denne praksisen er igjen nyttig hvis du starter opp fra eksterne medier, men trenger tilgang til et “lokalt” filsystem eller kommando for å gjøre arbeid.

den andre vanlige bruken av chroot er å begrense en tjeneste eller bruker ved å bruke en wrapper for å skjule resten av filsystemet, og derfor begrense en ekstern brukers visning av andre brukeres data. En populær implementering ved hjelp AV DENNE tilnærmingen SFTP.

Eksempel

før du begynner å jobbe gjennom dette eksemplet, bør du sørge for at du har sikkerhetskopier. I dette tilfellet sikkerhetskopierer du /etc/ssh/sshd_config – filen fordi du vil gjøre endringer i den ene spesifikt:

# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

For nå vil du bare begrense SFTP-brukere til deres hjemmekataloger på serveren. Dette kravet betyr at du må legge til brukere og sette dem i en gruppe:

# useradd -g sftpusers -s /sbin/nologin -p nick nick

Merk at dette vil tildele nick en konto uten login shell. Denne teknikken er både praktisk og en god sikkerhetspraksis: hvis han bare bruker SFTP, bør han ikke ha påloggingsrettigheter. Jeg skal diskutere å gi et skall til eksterne brukere i neste artikkel.

nå må du fortelle ssh – tjenesten hva du skal gjøre når SFTP-brukere logger på. Åpne filen /etc/ssh/sshd_config og legg til følgende på slutten:

Subsystem sftp internal-sftpMatch Group sftpusersForceCommand internal-sftpChrootDirectory /homeX11Forwarding noAllowTcpForwarding no

det er viktig at du legger til disse innstillingene som et separat sett med oppføringer, og at du bruker syntaksen Match for å angi at denne delen bare gjelder for brukere i denne gruppen. Hvis du har gjort endringene i de eksisterende oppføringene, vil de gjelde for ALLE SSH-brukere, noe som kan bryte ekstern tilgang.

konfigurasjonslinjene brytes ned som følger:

  • ForceCommand gjør ssh velg sitt innebygde anlegg for Å gi SFTP-tjeneste(som du kan kontrollere uavhengig).
  • ChrootDirectory forteller sshd hvor brukeren skal begrense seg til.
  • Subsystem sftp internal-sftp forteller sshd å laste den interne sftp – tjenesten og gjøre den tilgjengelig.

du må kanskje sørge for at dette Subsystem ikke er definert allerede ved å kommentere denne linjen tidligere i config-filen:

# override default of no subsystems# Subsystem sftp /usr/libexec/openssh/sftp-server

Når du har gjort endringene og sjekket stavemåten, fortsett og lagre endringene. Start deretter på nytt sshd:

# systemctl restart sshd

Test den nye brukeren:

$ sftp nick@showmenick@showme's password:Connected to [email protected]> lsaccounting ansible fred jason kenny lisa nicksftp> pwdRemote working directory: /sftp> exit

Oops, henge på bare ett minutt: det ser ut som du kan se alle de andre brukernes kataloger også. Du kan imidlertid ikke navigere til disse katalogene:

sftp> cd fredsftp> lsremote readdir("/fred"): Permission denied

du kan lede den chrooted brukeren til sin egen hjemmekatalog ved å endre ChrootDirectory – linjen i sshd_config – filen slik:

ChrootDirectory /

denne raske endringen gjør At Det ser Ut Til Nick som om Han er i sin egen hjemmekatalog, og han vil ikke kunne se andre brukeres filer:

sftp> pwdRemote working directory: /home/nicksftp>sftp> exit$ touch test.txt$ sftp nick@showmenick@showme's password:Connected to [email protected]> put test.txtUploading test.txt to /home/nick/test.txttest.txt 100% 0 0.0KB/s 00:00sftp> lstest.txtsftp>

Hvor ble det av den? Sjekk dette ut:

# ls /home/nicktest.txt

Merk at en chroot jail ikke anses å være en tilstrekkelig sikkerhetsrestriksjon av seg selv. Mens det forhindrer en bruker i å bytte ut av en begrenset katalog, er det måter rundt dette (den generelle ideen er referert til i man-siden chroot(2), som du bør se på hvis du vurderer å bruke dette trikset i en produksjons – eller forretningskritisk kontekst.)

Innpakning (for nå)

så du kan se at chroot kan være et ganske nyttig verktøy. I del 2 ser jeg mer på å tildele bestemte kataloger til brukere, og gi et skallmiljø til en ekstern bruker uten å utsette resten av serveren.

Ny på containere? Last Ned Containers Primer og lær det grunnleggende Om Linux containers.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.