Hoe u de SSH-gebruikerstoegang tot bepaalde directory’s beperkt met een Chrooted Jail

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.

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}
Listing Required Files

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
Create /dev and Required Files

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
Set Permissions on Directory

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/
Copy Files to bin Directory

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/
Copy Shared Library Files

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/
Copy Password Files
Note: Each time you add more SSH users to the system, you will need to copy the updated account files into the /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
Configure SSH Chroot Jail

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
Testing SSH User Chroot Jail

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
SSH Built-in Commands

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
Create SSH User Home Directory

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/
Add Commands to SSH User

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/
Copy Shared Libraries

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]
Test SSH Chroot Jail

Probeer SFTP als volgt te gebruiken:

# sftp [email protected]
Testing sFTP SSH User

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/