Beschränken SSH Benotzer Zougang zu bestëmmte Verzeechnes mat Chrooted Jail


Et gi verschidde Grënn fir eng SSH Benotzer Sessioun op e bestëmmte Verzeechnes ze beschränken, besonnesch op Webserver, awer déi offensichtlech ass eng Systemsécherheet. Fir SSH Benotzer an engem bestëmmte Verzeichnis ze spären, kënne mir Chroot Mechanismus benotzen.

root änneren (chroot) an Unix-ähnleche Systemer wéi Linux, ass e Mëttel fir spezifesch Benotzeroperatioune vum Rescht vum Linux System ze trennen; ännert de scheinbar Root Verzeechnes fir den aktuellen lafende Benotzerprozess a säi Kandprozess mat engem neie Root Verzeechnes genannt e chrooted Prisong.

An dësem Tutorial weisen mir Iech wéi Dir en SSH Benotzer Zougang zu engem bestëmmte Verzeechnes am Linux beschränkt. Notéiert datt mir all d'Befehle als Root lafen, benotzt de sudo Kommando wann Dir op de Server als normale Benotzer ageloggt sidd.

Schrëtt 1: Erstellt SSH Chroot Jail

1. Start andeems Dir de Chroot Prisong erstellt mat dem mkdir Kommando hei ënnen:

# mkdir -p /home/test

2. Als nächst identifizéieren erfuerderlech Dateien, laut der sshd_config Man-Säit, spezifizéiert d'Optioun ChrootDirectory de Wee vum Verzeichnis fir no der Authentifikatioun ze chroot. De Verzeechnes muss déi néideg Dateien a Verzeichnisser enthalen fir d'Session vun engem Benotzer z'ënnerstëtzen.

Fir eng interaktiv Sessioun erfuerdert dëst op d'mannst eng Shell, allgemeng sh, a Basis /dev Noden wéi null, null, stdin, stdout, stderr, an tty Apparater:

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

3. Erstellt elo d'/dev Dateien wéi folgend mam Kommando mknod. Am Kommando hei drënner gëtt de -m Fändel benotzt fir d'Datei Permissiounen Bits ze spezifizéieren, c heescht Charakterdatei an déi zwou Zuelen si grouss a kleng Zuelen op déi d'Dateien weisen. .

# 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. Duerno setze déi entspriechend Erlaabnis op de Chroot Prisong. Notéiert datt de Chroot Prisong a seng Ënnerverzeechnungen an Ënnerdateien musse vum Root Benotzer gehéiert ginn, an net vun engem normale Benotzer oder Grupp schreiwen:

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

Schrëtt 2: Interaktive Shell fir SSH Chroot Jail installéieren

5. Erstellt als éischt den bin Verzeichnis a kopéiert dann d'/bin/bash Dateien an den bin Verzeichnis wéi follegt:

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

6. Elo identifizéieren bash erfuerderlech gedeelt libs, wéi hei ënnen a kopéiert se an de lib Verzeichnis:

# 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/

Schrëtt 3: SSH Benotzer erstellen a konfiguréieren

7. Elo erstellt den SSH Benotzer mam Useradd Kommando a setzt e séchert Passwuert fir de Benotzer:

# useradd tecmint
# passwd tecmint

8. Erstellt de Chroot Prisong allgemeng Konfiguratiounsverzeechnes, /home/test/etc a kopéiert déi aktualiséiert Kontdateien (/etc/passwd an /etc/group) an dëse Verzeichnis wéi follegt:

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

Bemierkung: All Kéier wann Dir méi SSH Benotzer an de System bäidréit, musst Dir déi aktualiséiert Kontdateien an de /home/test/etc Verzeechnes kopéieren.

Schrëtt 4: SSH konfiguréieren fir Chroot Jail ze benotzen

9. Elo, öffnen d'Datei sshd_config.

# vi /etc/ssh/sshd_config

a fügen/änneren d'Linnen hei ënnen an der Datei.

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

Späichert d'Datei a gitt eraus, a start d'SSHD-Servicer nei:

# systemctl restart sshd
OR
# service sshd restart

Schrëtt 5: Testen SSH mat Chroot Jail

10. Op dësem Punkt, Test ob de Chroot Prisong Setup funktionnéiert wéi erwaart:

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

Aus dem Screenshot hei uewen kënne mir gesinn datt den SSH Benotzer am chrooted Prisong gespaart ass, a kann keng extern Befehle lafen (ls, Datum, Uname etc).

De Benotzer kann nëmmen Bash a seng agebaute Kommandoen ausféieren wéi (pwd, Geschicht, Echo etc) wéi hei ënnendrënner:

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

Schrëtt 6. SSH User's Home Directory erstellen an Linux Kommandoen addéieren

11. Vum virege Schrëtt kënne mir bemierken datt de Benotzer am Root Verzeichnis gespaart ass, mir kënnen en Heemverzeechnes fir den SSH Benotzer erstellen wéi sou (maacht dëst fir all zukünfteg Benotzer):

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

12. Installéiert dann e puer Benotzerbefehle wéi ls, date, mkdir am bin Verzeichnis:

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

13. Als nächst, kontrolléiert d'gedeelt Bibliothéike fir d'Befehle hei uewen a réckelt se an de chrooted jail libraries directory:

# 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/

Schrëtt 7. Testen SFTP mat Chroot Prisong

14. Maacht e finalen Test mat sftp; kontrolléiert ob d'Befehle déi Dir just installéiert hutt funktionnéieren.

Füügt d'Linn hei ënnen an der /etc/ssh/sshd_config Datei:

#Enable sftp to chrooted jail 
ForceCommand internal-sftp

Späichert d'Datei a gitt eraus. Da starten d'SSHD Servicer nei:

# systemctl restart sshd
OR
# service sshd restart

15. Elo, Test mat SSH, Dir kritt de folgende Feeler:

# ssh [email 

Probéiert SFTP wéi follegt ze benotzen:

# sftp [email 

Dat ass et fir elo!. An dësem Artikel hu mir Iech gewisen wéi Dir en SSH Benotzer an engem bestëmmte Verzeechnes (chrooted Prisong) am Linux beschränkt. Benotzt de Kommentarsektioun hei drënner fir eis Är Gedanken iwwer dëse Guide ze bidden.