Zoeken op website

Beperk de toegang van SSH-gebruikers tot de thuismap met behulp van gechroote gevangenis


Er zijn verschillende redenen om een SSH-gebruikerssessie te beperken tot een bepaalde map, vooral op webservers, maar de voor de hand liggende is systeembeveiliging. Om SSH-gebruikers in een bepaalde map te vergrendelen, kunnen we het chroot-mechanisme gebruiken.

root wijzigen (chroot) in Unix-achtige systemen zoals Linux, is een manier om specifieke gebruikersbewerkingen te scheiden van de rest van het Linux-systeem; verandert de schijnbare hoofdmap voor het momenteel actieve gebruikersproces en het onderliggende (bovenliggende) proces met een nieuwe hoofdmap die een gechroote jail wordt genoemd.

In deze zelfstudie laten we u zien hoe u SSH-gebruikerstoegang tot een bepaalde map in Linux kunt beperken. Houd er rekening mee dat we alle opdrachten als root uitvoeren. Gebruik de opdracht sudo als u als normale gebruiker op de server bent ingelogd.

Stap 1: Maak een SSH Chroot-jail aan

1. Begin met het maken van de chroot jail met behulp van de onderstaande mkdir-opdracht:

mkdir -p /home/test

2. Identificeer vervolgens de vereiste bestanden, volgens de sshd_config manpagina, de ChrootDirectory optie specificeert de padnaam van de map waarnaar moet worden gechroot na authenticatie . De map moet de benodigde bestanden en mappen bevatten om de sessie van een gebruiker te ondersteunen.

Voor een interactieve sessie vereist dit op zijn minst een shell, gewoonlijk sh, en standaard /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 als volgt met behulp van het mknod-commando. In de onderstaande opdracht wordt de vlag -m gebruikt om de bits voor bestandsrechten te specificeren, c betekent tekenbestand en de twee cijfers zijn hoofd- en secundaire getallen 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. Stel daarna de juiste toestemming in voor de chroot-jail. Merk op dat de chroot jail en zijn submappen en subbestanden eigendom moeten zijn van de root gebruiker, en niet schrijfbaar moeten zijn door een normale gebruiker of groep:

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

Stap 2: Interactieve shell instellen voor SSH Chroot Jail

5. Maak eerst de map bin en kopieer vervolgens de bestanden /bin/bash naar de map bin met behulp van het cp-commando als volgt:

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

6. Identificeer nu de bash die vereist is voor gedeelde libs, zoals hieronder, en kopieer ze naar de map lib:

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 opdracht useradd en stel een veilig wachtwoord in voor de gebruiker:

useradd tecmint
passwd tecmint

8. Maak de map met algemene configuraties van de chroot jail, /home/test/etc en kopieer de bijgewerkte accountbestanden (/etc/passwd en /etc/group) als volgt naar deze map:

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

Stap 4: Configureer SSH om Chroot Jail te gebruiken

9. Open nu het bestand sshd_config.

vi /etc/ssh/sshd_config

en voeg de onderstaande regels in het bestand toe/wijzig ze.

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

Sla het bestand op, sluit af en start de SSHD-services opnieuw:

systemctl restart sshd
OR
service sshd restart

Stap 5: SSH testen met Chroot Jail

10. Test nu of de chroot jail-installatie werkt zoals verwacht:

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

Uit de bovenstaande schermafbeelding kunnen we zien dat de SSH-gebruiker is opgesloten in de gechroote gevangenis en geen externe opdrachten kan uitvoeren (ls, date, uname, enz.).

De gebruiker kan alleen bash en de ingebouwde opdrachten zoals (pwd, history, echo, enz.) uitvoeren, zoals hieronder te zien:

ssh [email 
-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 en voeg Linux-opdrachten toe

11. Uit de vorige stap kunnen we opmerken dat de gebruiker is vergrendeld in de hoofdmap. We kunnen op deze manier een thuismap voor de SSH-gebruiker 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 een paar gebruikersopdrachten zoals ls, date en mkdir in de map bin:

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 op de bovenstaande opdrachten en verplaats ze naar de gechroote map met gevangenisbibliotheken:

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. SFTP testen met Chroot Jail

14. Voer een laatste test uit met behulp van sftp; controleer of de opdrachten die u zojuist hebt geïnstalleerd, werken.

Voeg de onderstaande regel toe aan het bestand /etc/ssh/sshd_config:

#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 SSH en u krijgt de volgende foutmelding:

ssh [email 

Probeer SFTP als volgt te gebruiken:

sftp [email 

Dat is het voor nu! In dit artikel hebben we je laten zien hoe je een SSH-gebruiker in een bepaalde map (chrooted jail) in Linux kunt beperken. Gebruik het commentaargedeelte hieronder om ons uw mening over deze gids te geven.