Sådan oprettes chroot-fængsler

udtrykket chroot-fængsel blev først brugt i 1992 i en artikel af en fremtrædende sikkerhedsforsker, Bill chroot, (hvilket er interessant, hvis du er i den slags ting, kan du finde artiklen her). Chroot-fængsler begyndte at dukke op i 2003 med applikationer som IRC og FTP. I 2005 introducerede Sun sin” containere ” – teknologi kaldet områder, hvilket igen var en forløber for begrebet navnerum, som er en kerneteknologi, der bruges sammen med containere.

grundlæggende om Chroot

Chroot tillader en administrator at kontrollere adgangen til en tjeneste eller et filsystem, mens han kontrollerer eksponeringen for det underliggende servermiljø. De to almindelige eksempler, du kan støde på, er under opstartssekvensen og” nødskallen ” på Red Hat/CentOS/Fedora-systemer og i Secure FTP (SFTP).

kommandoen ser sådan ud:

chroot <newroot> ]

i lighed med kommandoen sudo ændrer kommandoen chroot miljøet for følgende kommando. Med andre ord vil det ændre dig til newroot – mappen og gør også denne mappe til “arbejdende” – mappen. command udføres derefter på det sted, hvilket er nyttigt til ting som at redde et system, der ikke starter.

i modsætning til sudo vil du være “i” mappen. Denne praksis er igen nyttig, hvis du starter fra eksterne medier, men har brug for at få adgang til et “lokalt” filsystem eller kommando for at udføre arbejde.

den anden almindelige anvendelse af chroot er at begrænse en tjeneste eller bruger ved at bruge en indpakning til at skjule resten af filsystemet og derfor begrænse en fjernbrugers visning af andre brugeres data. En populær implementering ved hjælp af denne tilgang SFTP.

eksempel

før du begynder at arbejde gennem dette eksempel, skal du sørge for, at du har sikkerhedskopier. I dette tilfælde skal du sikkerhedskopiere /etc/ssh/sshd_config filen, fordi du vil foretage ændringer til den ene specifikt:

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

For nu vil du kun begrænse SFTP-brugere til deres hjemmekataloger på serveren. Dette krav betyder, at du skal tilføje brugere og sætte dem i en gruppe:

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

Bemærk, at hvis du gør dette, tildeles nick en konto uden login-skal. Denne teknik er både praktisk og en god sikkerhedspraksis: hvis han bare bruger SFTP, skal han ikke have loginrettigheder. Jeg vil diskutere at levere en shell til fjernbrugere i den næste artikel.

nu skal du fortælle ssh – tjenesten, hvad du skal gøre, når SFTP-brugere logger ind. Åbn filen /etc/ssh/sshd_config, og tilføj følgende i slutningen:

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

det er vigtigt, at du tilføjer disse indstillinger som et separat sæt poster, og at du bruger syntaksen Match til at angive, at dette afsnit kun gælder for brugere i denne gruppe. Hvis du har foretaget ændringerne i de eksisterende poster, gælder de for alle SSH-brugere, hvilket kan ødelægge fjernadgang.

konfigurationslinjerne nedbrydes som følger:

  • ForceCommand gør ssh vælg sin indbyggede facilitet til at levere SFTP-service (som du kan styre uafhængigt).
  • ChrootDirectory fortæller sshd hvor brugeren skal begrænses til.
  • Subsystem sftp internal-sftp fortæller sshd at indlæse den interne sftp service og gøre den tilgængelig.

du skal muligvis sørge for, at denne Subsystem ikke allerede er defineret ved at kommentere denne linje tidligere i konfigurationsfilen:

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

når du har foretaget ændringerne og kontrolleret stavemåden, skal du fortsætte og gemme ændringerne. Genstart derefter sshd:

# systemctl restart sshd

Test den nye bruger:

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

ups, hænge på bare et minut: det ser ud som du kan se alle de andre brugeres mapper samt. Du kan dog ikke navigere til disse mapper:

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

du kan dirigere den chrooted bruger til deres egen hjemmemappe ved at ændre ChrootDirectory linjen i sshd_config filen som denne:

ChrootDirectory /

denne hurtige ændring får det til at se ud til Nick, som om han er i sin egen hjemmekatalog, og han kan ikke se nogen anden brugers 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 blev den af? Tjek dette ud:

# ls /home/nicktest.txt

Bemærk, at en chroot jail ikke anses for at være en tilstrækkelig sikkerhedsbegrænsning i sig selv. Selvom det forhindrer en bruger i at skifte ud af en begrænset mappe, er der måder omkring dette (den generelle ide henvises til i chroot(2) man – siden, som du bør se på, hvis du overvejer at bruge dette trick i en produktions-eller forretningskritisk kontekst.)

indpakning (for nu)

så du kan se, at chroot kan være et ret nyttigt værktøj. I del 2 vil jeg se mere på at tildele specifikke mapper til brugere og give et shell-miljø til en fjernbruger uden at udsætte resten af serveren.

nyt til containere? Hent containerens Primer og lær det grundlæggende i containere.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.