Er zijn verschillende redenen om een SSH-gebruikerssessie te beperken tot een bepaalde directory, vooral op webservers, maar de duidelijke reden is systeembeveiliging. Om SSH-gebruikers in een bepaalde directory te vergrendelen, kunnen we het chroot mechanisme gebruiken.
Het wijzigen van de root (chroot) in Unix-achtige systemen zoals Linux, is een manier om bepaalde gebruikersoperaties te isoleren van de rest van het Linux-systeem; wijzigt de schijnbaar rootdirectory voor de huidig uitgevoerde gebruikersproces en zijn kind (ouder) proces met een nieuwe rootdirectory, genaamd een chrooted jail.
In deze tutorial laten we zien hoe u SSH-gebruikers toegang kunt beperken tot een bepaalde directory in Linux. Let erop dat we alle opdrachten uitvoeren als root, gebruik de sudo-opdracht als u ingelogd bent op de server als een normale gebruiker.
Inhoudsopgave
1. Begin met het aanmaken van de chroot gevangenis met de mkdir opdracht hieronder:
1. Begin met het maken van de chroot-gevangenis met behulp van de mkdir-opdracht hieronder:
# mkdir -p /home/test
2. Vervolgens, identificeer de vereiste bestanden, volgens de sshd_config man-pagina, de ChrootDirectory
optie specificeert het padnaam van de directory om te chrooten na verificatie. De directory moet de benodigde bestanden en directories bevatten om een gebruikerssessie te ondersteunen.
Voor een interactieve sessie vereist dit ten minste een shell, meestal sh
, en basis /dev
knooppunten zoals null, zero, stdin, stdout, stderr en tty-apparaten:
# ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}

3. Maak nu de /dev
bestanden aan als volgt met behulp van de mknod-opdracht. In de onderstaande opdracht wordt de -m
vlag gebruikt om de bestandstoegangsbits te specificeren, c
betekent karakterbestand en de twee nummers zijn de hoofd- en bijzondere nummers waarnaar de bestanden verwijzen.
# 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. Vervolgens, stel de juiste toegangsrechten in op de chroot-gevangenis. Merk op dat de chroot-gevangenis en zijn subdirectories en subbestanden eigendom moeten zijn van de root gebruiker, en niet schrijfbaar door een normale gebruiker of groep:
# chown root:root /home/test # chmod 0755 /home/test # ls -ld /home/test

Stap 2: Instellen van een interactieve shell voor SSH chroot-gevangenis
5. Eerst, maak de bin
map aan en kopieer vervolgens de /bin/bash
bestanden naar de bin
map met behulp van de cp-opdracht als volgt:
# mkdir -p /home/test/bin # cp -v /bin/bash /home/test/bin/

6. Zoek nu de benodigde bash-bestanden voor gedeelde libs
op, zoals hieronder, en kopieer ze naar de lib
map:
# 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/

Stap 3: SSH-gebruiker aanmaken en configureren
7. Maak nu de SSH-gebruiker aan met de useradd-opdracht en stel een veilig wachtwoord in voor de gebruiker:
# useradd tecmint # passwd tecmint
8. Maak de algemene configuratiemap voor chroot-gevangenis aan, /home/test/etc
en kopieer de bijgewerkte accountbestanden (/etc/passwd en /etc/group) naar deze map, zoals hieronder:
# mkdir /home/test/etc # cp -vf /etc/{passwd,group} /home/test/etc/

/home/test/etc
directory.Stap 4: SSH configureren voor gebruik van chroot-gevangenis
9. Open nu het sshd_config
bestand.
# vi /etc/ssh/sshd_config
en voeg/wijzig de onderstaande regels in het bestand toe.
#define username to apply chroot jail to Match User tecmint #specify chroot jail ChrootDirectory /home/test

Sla het bestand op en sluit het, en start de SSHD-services opnieuw:
# systemctl restart sshd OR # service sshd restart
Stap 5: SSH-testen met chroot-gevangenis
10. Controleer op dit punt of de chroot jail-setup naar verwachting werkt:
# ssh [email protected] -bash-4.1$ ls -bash-4.1$ date -bash-4.1$ uname

Uit de screenshot hierboven kunnen we zien dat de SSH-gebruiker in de gecchrootte gevangenis is opgesloten en geen externe opdrachten kan uitvoeren (ls, date, uname, enz.).
De gebruiker kan alleen bash en zijn ingebouwde opdrachten uitvoeren zoals (pwd, history, echo, enz.) zoals hieronder te zien is:
# ssh [email protected] -bash-4.1$ pwd -bash-4.1$ echo "Tecmint - Fastest Growing Linux Site" -bash-4.1$ history

Stap 6. Maak de thuismap van de SSH-gebruiker aan en voeg Linux-opdrachten toe
11. In de vorige stap kunnen we merken dat de gebruiker in de hoofdmap is opgesloten, we kunnen een thuismap voor de SSH-gebruiker zo maken (doe dit voor alle toekomstige gebruikers):
# mkdir -p /home/test/home/tecmint # chown -R tecmint:tecmint /home/test/home/tecmint # chmod -R 0700 /home/test/home/tecmint

12. Installeer vervolgens enkele gebruikerscommando’s zoals ls, date en mkdir in de bin
directory:
# cp -v /bin/ls /home/test/bin/ # cp -v /bin/date /home/test/bin/ # cp -v /bin/mkdir /home/test/bin/

13. Controleer vervolgens de gedeelde bibliotheken voor de bovenstaande commando’s en verplaats ze naar de bibliothekenmap van de gechrootte gevangenis:
# 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/

Stap 7. Testen van SFTP met Chroot Jail
14. Doe een laatste test met behulp van sftp; controleer of de zojuist geïnstalleerde commando’s werken.
Voeg de onderstaande regel toe in het /etc/ssh/sshd_config
bestand:
#Enable sftp to chrooted jail ForceCommand internal-sftp
Sla het bestand op en sluit af. Start vervolgens de SSHD-services opnieuw:
# systemctl restart sshd OR # service sshd restart
15. Test nu met behulp van SSH en je krijgt de volgende foutmelding:
# ssh [email protected]

Probeer SFTP als volgt te gebruiken:
# sftp [email protected]

Voor nu is dat alles! In dit artikel hebben we je laten zien hoe je een SSH-gebruiker kunt beperken tot een bepaalde map (chrooted jail) in Linux. Gebruik het commentaarveld hieronder om je gedachten over deze handleiding met ons te delen.
Source:
https://www.tecmint.com/restrict-ssh-user-to-directory-using-chrooted-jail/