SFTP steht für Secure File Transfer Protocol / SSH File Transfer Protocol, es ist eine der gebräuchlichsten Methoden, um Dateien sicher über ssh von unserem lokalen System auf einen Remote-Server und umgekehrt zu übertragen. Der Hauptvorteil von sftp besteht darin, dass wir kein zusätzliches Paket außer „openssh-server“ installieren müssen “, in den meisten Linux-Distributionen ist das Paket „openssh-server“ Teil der Standardinstallation. Ein weiterer Vorteil von sftp ist, dass wir Benutzern erlauben können, nur sftp und nicht ssh zu verwenden.
Kürzlich wurde Debian 10 mit dem Codenamen „Buster“ veröffentlicht. In diesem Artikel werden wir demonstrieren, wie man sftp mit einer Chroot „Jail“-ähnlichen Umgebung im Debian 10-System konfiguriert. Hier bedeutet eine Chroot Jail-ähnliche Umgebung, dass Benutzer nicht über ihre jeweiligen Home-Verzeichnisse hinausgehen können oder Benutzer Verzeichnisse von ihren Home-Verzeichnissen aus nicht ändern können. Im Folgenden finden Sie die Labordetails:
- Betriebssystem =Debian 10
- IP-Adresse =192.168.56.151
Lassen Sie uns zu den SFTP-Konfigurationsschritten springen,
Schritt:1) Erstellen Sie eine Gruppe für sftp mit dem Befehl groupadd
Öffnen Sie das Terminal, erstellen Sie eine Gruppe mit dem Namen „sftp_users ” mit dem folgenden groupadd-Befehl,
[email protected]:~# groupadd sftp_users
Schritt:2) Benutzer zur Gruppe „sftp_users“ hinzufügen und Berechtigungen festlegen
Falls Sie einen neuen Benutzer erstellen und diesen Benutzer zur Gruppe „sftp_users“ hinzufügen möchten, führen Sie den folgenden Befehl aus:
Syntax: # useradd -m -G sftp_users
Nehmen wir an, der Benutzername ist „Jonathan“
[email protected]:~# useradd -m -G sftp_users jonathan
Legen Sie das Passwort mit dem folgenden chpasswd-Befehl fest,
[email protected]:~# echo "jonathan:<enter_password>" | chpasswd
Falls Sie vorhandene Benutzer zur Gruppe „sftp_users“ hinzufügen möchten, führen Sie den Befehl „usermod“ aus. Nehmen wir an, der bereits vorhandene Benutzername ist „chris“
[email protected]:~# usermod -G sftp_users chris
Legen Sie nun die erforderlichen Berechtigungen für Benutzer fest,
[email protected]:~# chown root /home/jonathan /home/chris/
Erstellen Sie einen Upload-Ordner im Home-Verzeichnis des Benutzers und legen Sie den richtigen Besitz fest,
[email protected]:~# mkdir /home/jonathan/upload [email protected]:~# mkdir /home/chris/upload [email protected]:~# chown jonathan /home/jonathan/upload [email protected]:~# chown chris /home/chris/upload
Hinweis: Benutzer wie Jonathan und Chris können Dateien und Verzeichnisse hochladen, um Ordner von ihren lokalen Systemen hochzuladen.
Schritt:3) Bearbeiten Sie die sftp-Konfigurationsdatei (/etc/ssh/sshd_config)
Wie wir bereits erwähnt haben, werden sftp-Operationen über ssh ausgeführt, daher ist die Konfigurationsdatei „/etc/ssh/sshd_config “, Bevor Sie Änderungen vornehmen, würde ich vorschlagen, zuerst eine Sicherungskopie zu erstellen und dann diese Datei zu bearbeiten und den folgenden Inhalt hinzuzufügen,
[email protected]:~# cp /etc/ssh/sshd_config /etc/ssh/sshd_config-org [email protected]:~# vim /etc/ssh/sshd_config ……… #Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp internal-sftp Match Group sftp_users X11Forwarding no AllowTcpForwarding no ChrootDirectory %h ForceCommand internal-sftp …………
Speichern und beenden Sie die Datei.
Um die oben genannten Änderungen vorzunehmen, starten Sie den ssh-Dienst mit dem folgenden systemctl-Befehl neu
[email protected]:~# systemctl restart sshd
In der obigen Datei „sshd_config“ haben wir die Zeile, die mit „Subsystem“ beginnt, auskommentiert und einen neuen Eintrag „Subsystem sftp internal-sftp“ und neue Zeilen wie
hinzugefügt„Match Group sftp_users“ –> Das bedeutet, wenn ein Benutzer Teil der Gruppe „sftp_users“ ist, wenden Sie die unten aufgeführten Regeln auf diesen Eintrag an.
„ChrootDierctory %h ” –> Es bedeutet, dass Benutzer Verzeichnisse nur innerhalb ihrer jeweiligen Home-Verzeichnisse wechseln können, sie können nicht über ihre Home-Verzeichnisse hinausgehen, oder mit anderen Worten, wir können sagen, dass Benutzer Verzeichnisse nicht wechseln dürfen, sie erhalten eine Jai-ähnliche Umgebung in ihren Verzeichnissen und können nicht auf die Verzeichnisse anderer Benutzer und Systeme zugreifen.
„ForceCommand internal-sftp ” –> Dies bedeutet, dass Benutzer nur auf den sftp-Befehl beschränkt sind.
Schritt:4) sftp testen und verifizieren
Melden Sie sich bei einem anderen Linux-System an, das sich im selben Netzwerk wie Ihr SFTP-Server befindet, und versuchen Sie dann, den SFTP-Server über die Benutzer, die wir in der Gruppe „sftp_users“ zugeordnet haben, per SSH zu erreichen.
[[email protected] ~]# ssh [email protected] [email protected]'s password: Write failed: Broken pipe [[email protected] ~]# ssh [email protected] [email protected]'s password: Write failed: Broken pipe [[email protected] ~]#
Oben wird bestätigt, dass Benutzer nicht zu SSH berechtigt sind. Versuchen Sie jetzt sftp mit den folgenden Befehlen,
[[email protected] ~]# sftp [email protected] [email protected]'s password: Connected to 192.168.56.151. sftp> ls -l drwxr-xr-x 2 root 1001 4096 Sep 14 07:52 debian10-pkgs -rw-r--r-- 1 root 1001 155 Sep 14 07:52 devops-actions.txt drwxr-xr-x 2 1001 1002 4096 Sep 14 08:29 upload
Versuchen wir, eine Datei mit sftp „get“ herunterzuladen ‘Befehl
sftp> get devops-actions.txt Fetching /devops-actions.txt to devops-actions.txt /devops-actions.txt 100% 155 0.2KB/s 00:00 sftp> sftp> cd /etc Couldn't stat remote file: No such file or directory sftp> cd /root Couldn't stat remote file: No such file or directory sftp>
Die obige Ausgabe bestätigt, dass wir Dateien von unserem sftp-Server auf den lokalen Computer herunterladen können, und abgesehen davon haben wir auch getestet, dass Benutzer Verzeichnisse nicht wechseln können.
Versuchen wir, eine Datei unter „Upload“ hochzuladen ”-Ordner,
sftp> cd upload/ sftp> put metricbeat-7.3.1-amd64.deb Uploading metricbeat-7.3.1-amd64.deb to /upload/metricbeat-7.3.1-amd64.deb metricbeat-7.3.1-amd64.deb 100% 38MB 38.4MB/s 00:01 sftp> ls -l -rw-r--r-- 1 1001 1002 40275654 Sep 14 09:18 metricbeat-7.3.1-amd64.deb sftp>
Dies bestätigt, dass wir erfolgreich eine Datei von unserem lokalen System auf den sftp-Server hochgeladen haben.
Testen Sie nun den SFTP-Server mit dem Winscp-Tool, geben Sie die IP-Adresse des SFTP-Servers zusammen mit den Anmeldeinformationen des Benutzers ein,
Klicken Sie auf Anmelden und versuchen Sie dann, Dateien herunter- und hochzuladen
Versuchen Sie nun, Dateien in den Upload-Ordner hochzuladen,
Das obige Fenster bestätigt, dass das Hochladen auch gut funktioniert, das ist alles aus diesem Artikel. Wenn diese Schritte Ihnen helfen, den SFTP-Server mit Chroot-Umgebung in Debian 10 zu konfigurieren, teilen Sie uns bitte Ihr Feedback und Ihre Kommentare mit.