Begræns SSH-brugeradgang til visse biblioteker ved hjælp af rodfængsel


Der er flere grunde til at begrænse en SSH-brugersession til en bestemt mappe, især på webservere, men den åbenlyse er en systemsikkerhed. For at låse SSH-brugere i en bestemt mappe kan vi bruge chroot-mekanismen.

ændre rod (chroot) i Unix-lignende systemer som Linux, er et middel til at adskille specifikke brugerhandlinger fra resten af Linux-systemet; ændrer den tilsyneladende rodkatalog for den aktuelle kørende brugerproces og dens underordnede proces med ny rodkatalog kaldet en rodet fængsel.

I denne vejledning viser vi dig, hvordan du begrænser en SSH-brugeradgang til en given mappe i Linux. Bemærk, at vi kører alle kommandoerne som root. Brug sudo-kommandoen, hvis du er logget ind på serveren som en normal bruger.

Trin 1: Opret SSH Chroot-fængsel

1. Start med at oprette chroot-fængslet ved hjælp af kommandoen mkdir nedenfor:

# mkdir -p /home/test

2. Dernæst identificer krævede filer i henhold til sshd_config man-siden, indstillingen ChrootDirectory specificerer stienavnet på den mappe, der skal chroot til efter godkendelse. Kataloget skal indeholde de nødvendige filer og kataloger til at understøtte en brugers session.

For en interaktiv session kræver dette mindst en shell, almindeligvis sh og grundlæggende /dev noder såsom null-, zero-, stdin-, stdout-, stderr- og tty-enheder:

# ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}

3. Opret nu /dev -filerne som følger ved hjælp af kommandoen mknod. I kommandoen nedenfor bruges flaget -m til at specificere filtilladelsesbitene, c betyder tegnfil, og de to tal er store og mindre tal, som filerne peger på .

# mkdir -p /home/test/dev/		
# cd /home/test/dev/
# mknod -m 666 null c 1 3
# mknod -m 666 tty c 5 0
# mknod -m 666 zero c 1 5
# mknod -m 666 random c 1 8

4. Derefter skal du indstille den passende tilladelse til chrootfængslet. Bemærk, at chroot-fængslet og dets underkataloger og underfiler skal ejes af rodbrugeren og ikke kan skrives af nogen normal bruger eller gruppe:

# chown root:root /home/test
# chmod 0755 /home/test
# ls -ld /home/test

Trin 2: Konfigurer interaktiv shell til SSH Chroot-fængsel

5. Opret først mappen bin , og kopier derefter /bin/bash -filerne til mappen bin som følger:

# mkdir -p /home/test/bin
# cp -v /bin/bash /home/test/bin/

6. Identificer nu bash krævede delte libs som nedenfor, og kopier dem til lib -mappen:

# ldd /bin/bash
# mkdir -p /home/test/lib64
# cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/test/lib64/

Trin 3: Opret og konfigurer SSH-bruger

7. Opret nu SSH-brugeren med kommandoen useradd og indstil en sikker adgangskode til brugeren:

# useradd tecmint
# passwd tecmint

8. Opret chroot-fængsels generelle konfigurationsmappe, /home/test/etc og kopier de opdaterede kontofiler (/ etc/passwd og/etc/group) til denne mappe som følger:

# mkdir /home/test/etc
# cp -vf /etc/{passwd,group} /home/test/etc/

Bemærk: Hver gang du tilføjer flere SSH-brugere til systemet, skal du kopiere de opdaterede kontofiler til mappen /home/test/etc .

Trin 4: Konfigurer SSH til at bruge Chroot-fængsel

9. Åbn nu filen sshd_config .

# vi /etc/ssh/sshd_config

og tilføj/rediger nedenstående linjer i filen.

#define username to apply chroot jail to
Match User tecmint
#specify chroot jail
ChrootDirectory /home/test

Gem filen og afslut, og genstart SSHD-tjenesterne:

# systemctl restart sshd
OR
# service sshd restart

Trin 5: Test SSH med Chroot-fængsel

10. Test på dette tidspunkt, om chroot-fængselsopsætningen fungerer som forventet:

# ssh [email 
-bash-4.1$ ls
-bash-4.1$ date
-bash-4.1$ uname

Fra skærmbilledet ovenfor kan vi se, at SSH-brugeren er låst i den rodede fængsel og ikke kan køre nogen eksterne kommandoer (ls, dato, uname osv.).

Brugeren kan kun udføre bash og dens indbyggede kommandoer som (pwd, historie, ekko osv.) Som vist nedenfor:

# ssh [email 
-bash-4.1$ pwd
-bash-4.1$ echo "Tecmint - Fastest Growing Linux Site"
-bash-4.1$ history

Trin 6. Opret SSH-brugerens hjemmekatalog og tilføj Linux-kommandoer

11. Fra det forrige trin kan vi bemærke, at brugeren er låst i rodmappen, vi kan oprette et hjemmekatalog til SSH-brugeren sådan (gør dette for alle fremtidige brugere):

# mkdir -p /home/test/home/tecmint
# chown -R tecmint:tecmint /home/test/home/tecmint
# chmod -R 0700 /home/test/home/tecmint

12. Installer derefter et par brugerkommandoer såsom ls, date, mkdir i bin -mappen:

# cp -v /bin/ls /home/test/bin/
# cp -v /bin/date /home/test/bin/
# cp -v /bin/mkdir /home/test/bin/

13. Tjek derefter de delte biblioteker for ovenstående kommandoer, og flyt dem til det rodfængte fængselsbibliotekskatalog:

# ldd /bin/ls
# cp -v /lib64/{libselinux.so.1,libcap.so.2,libacl.so.1,libc.so.6,libpcre.so.1,libdl.so.2,ld-linux-x86-64.so.2,libattr.so.1,libpthread.so.0} /home/test/lib64/

Trin 7. Test af SFTP med Chroot-fængsel

14. Lav en afsluttende test ved hjælp af sftp; Kontroller, om de kommandoer, du lige har installeret, fungerer.

Tilføj linjen nedenfor i filen /etc/ssh/sshd_config :

#Enable sftp to chrooted jail 
ForceCommand internal-sftp

Gem filen, og afslut. Genstart derefter SSHD-tjenesterne:

# systemctl restart sshd
OR
# service sshd restart

15. Test nu ved hjælp af SSH, du får følgende fejl:

# ssh [email 

Prøv at bruge SFTP som følger:

# sftp [email 

Det er det for nu !. I denne artikel viste vi dig, hvordan du begrænser en SSH-bruger i et givet bibliotek (chrooted fængsel) i Linux. Brug kommentarsektionen nedenfor til at give os dine tanker om denne vejledning.