Begrens SSH-brukertilgang til hjemmekatalog ved å bruke chrooted Jail


Det er flere grunner til å begrense en SSH-brukerøkt til en bestemt katalog, spesielt på webservere, men den åpenbare er systemsikkerhet. For å låse SSH-brukere i en bestemt katalog, kan vi bruke chroot-mekanismen.

endre root (chroot) i Unix-lignende systemer som Linux, er et middel til å skille spesifikke brukeroperasjoner fra resten av Linux-systemet; endrer den tilsynelatende rotkatalogen for den gjeldende brukerprosessen og dens underordnede (overordnede) prosess med en ny rotkatalog kalt chrooted jail.

I denne opplæringen viser vi deg hvordan du begrenser SSH-brukertilgang til en gitt katalog i Linux. Merk at vi kjører alle kommandoene som root, bruk sudo-kommandoen hvis du er logget på serveren som en vanlig bruker.

Trinn 1: Opprett SSH Chroot-fengsel

1. Start med å lage chroot-fengselet ved å bruke mkdir-kommandoen nedenfor:

mkdir -p /home/test

2. Deretter identifiserer du nødvendige filer, i henhold til sshd_config man-siden, alternativet ChrootDirectory spesifiserer banen til katalogen som skal chroot til etter autentisering . Katalogen må inneholde de nødvendige filene og katalogene for å støtte en brukers økt.

For en interaktiv økt krever dette minst et skall, vanligvis sh, og grunnleggende /dev-noder som null, zero, stdin, stdout, stderr og tty-enheter:

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

3. Opprett nå /dev-filene som følger ved å bruke mknod-kommandoen. I kommandoen nedenfor brukes -m-flagget til å spesifisere filtillatelsesbitene, c betyr tegnfil og de to tallene er store og små tall som filene peker 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. Etterpå setter du riktig tillatelse på chroot-fengselet. Merk at chroot-fengselet og dets underkataloger og underfiler må eies av root-brukeren, og ikke skrivbare av noen normal bruker eller gruppe:

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

Trinn 2: Konfigurer Interactive Shell for SSH Chroot Jail

5. Først oppretter du bin-katalogen og kopierer deretter /bin/bash-filene til bin-katalogen ved å bruke cp-kommandoen som følger:

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

6. Identifiser nå bashen som kreves for delte libs, som nedenfor, og kopier dem inn i lib-katalogen:

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/

Trinn 3: Opprett og konfigurer SSH-bruker

7. Opprett nå SSH-brukeren med kommandoen useradd og angi et sikkert passord for brukeren:

useradd tecmint
passwd tecmint

8. Opprett den generelle konfigurasjonskatalogen for chroot jail, /home/test/etc og kopier de oppdaterte kontofilene (/etc/passwd og /etc/group) inn i denne katalogen som følger:

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

Trinn 4: Konfigurer SSH til å bruke Chroot Jail

9. Åpne nå filen sshd_config.

vi /etc/ssh/sshd_config

og legg til/endre linjene nedenfor i filen.

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

Lagre filen og avslutt, og start SSHD-tjenestene på nytt:

systemctl restart sshd
OR
service sshd restart

Trinn 5: Testing av SSH med Chroot Jail

10. På dette tidspunktet kan du teste om chroot-fengseloppsettet fungerer som forventet:

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

Fra skjermbildet ovenfor kan vi se at SSH-brukeren er låst i det chrooted fengselet, og kan ikke kjøre noen eksterne kommandoer (ls, dato, uname, etc).

Brukeren kan bare utføre bash og dens innebygde kommandoer som (pwd, historie, ekko, etc) som vist nedenfor:

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

Trinn 6. Opprett SSH-brukers hjemmekatalog og legg til Linux-kommandoer

11. Fra forrige trinn kan vi legge merke til at brukeren er låst i rotkatalogen, vi kan lage en hjemmekatalog for SSH-brukeren slik (gjør dette for alle fremtidige brukere):

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

12. Deretter installerer du noen få brukerkommandoer som ls, date og mkdir i bin-katalogen:

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

13. Deretter sjekker du de delte bibliotekene for kommandoene ovenfor og flytter dem til katalogen for chrooted jail libraries:

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/

Trinn 7. Tester SFTP med Chroot Jail

14. Gjør en siste test med sftp; sjekk om kommandoene du nettopp har installert fungerer.

Legg til linjen nedenfor i filen /etc/ssh/sshd_config:

#Enable sftp to chrooted jail 
ForceCommand internal-sftp

Lagre filen og avslutt. Start deretter SSHD-tjenestene på nytt:

systemctl restart sshd
OR
service sshd restart

15. Test nå med SSH, og du får følgende feilmelding:

ssh [email 

Prøv å bruke SFTP som følger:

sftp [email 

Det var det for nå! I denne artikkelen viste vi deg hvordan du begrenser en SSH-bruker i en gitt katalog (chrooted jail) i Linux. Bruk kommentarfeltet nedenfor for å gi oss dine tanker om denne veiledningen.