GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So richten Sie Chrooted SFTP unter Linux ein

Diese Anleitung erklärt, wie man Chrooted SFTP unter Linux einrichtet, um den SSH-Benutzerzugriff auf das Home-Verzeichnis oder ein bestimmtes Verzeichnis zu beschränken. Mit anderen Worten, wir werden die Benutzer in ein bestimmtes Verzeichnis zwingen und ihre Shell auf /bin/nologin oder eine andere Shell, die den Zugriff auf eine SSH-Anmeldung verweigert. Sobald das chrooted SFTP konfiguriert ist, können die Benutzer nur auf ihr zugewiesenes Home-Verzeichnis zugreifen, aber nicht auf das gesamte Dateisystem

Das Aktivieren des chrooted SFTP-Zugriffs bietet die folgenden Vorteile:

  • Gestatten Sie den Benutzern, sich nur über SFTP zu verbinden, aber erlauben Sie ihnen nicht, sich über SSH zu verbinden.
  • Beschränken Sie eine SSH-Benutzersitzung auf ihr Home-Verzeichnis oder ein bestimmtes Verzeichnis Ihrer Wahl.
  • Beschränken Sie den SSH-Zugriff auf bestimmte Benutzer und erlauben Sie ihnen trotzdem, Dateien zwischen lokalen und entfernten Systemen zu übertragen.
  • Benutzerzugriff auf das gesamte Dateisystem verweigern.

Lassen Sie uns nun fortfahren und Chrooted SFTP einrichten, um die SSH-Benutzer auf das Home-Verzeichnis und/oder ein beliebiges anderes Verzeichnis mit Chrooted-Gefängnis in Linux zu beschränken.

Dieser Leitfaden wurde offiziell auf den Distributionen Debian 11 Bullseye, Ubuntu 20.04 LTS und Ubuntu 18.04 LTS getestet. Die unten aufgeführten Schritte sollten jedoch auf allen Linux-Distributionen funktionieren, die openSSH unterstützen .

Chrooted SFTP unter Linux einrichten

Ab Version 4.9 hat openSSH eine Funktion, die als internal-sftp subsystem bekannt ist die nur SFTP-Zugriff erlaubt, aber keinen SSH-Zugriff. So können die Benutzer nur auf die Daten vom Server zugreifen, aber sie können nicht über SSH darauf zugreifen.

Chroot-Verzeichnis erstellen

Erstellen Sie zuerst ein Chroot-Verzeichnis mit dem Befehl:

$ sudo mkdir /sftp

Machen Sie dieses Verzeichnis vollständig zu root Benutzer mit Befehl:

$ sudo chown root:root /sftp/

Erstellen Sie in diesem Verzeichnis separate Verzeichnisse für jeden Benutzer, z. B. /sftp/user1 /sftp/user2 , und /sftp/user3 und so weiter.

Für die Zwecke dieser Anleitung werde ich ein Verzeichnis mit dem Namen ostechnix erstellen unter /sftp Verzeichnis.

$ sudo mkdir /sftp/ostechnix

Dies ist das Verzeichnis, in dem die Benutzer die Daten speichern können. Außerdem können die Benutzer nicht über dieses Verzeichnis hinausgehen. Es ist genau wie ihr $HOME Verzeichnis.

Erstellen Sie eine SFTP-Gruppe und weisen Sie dieser Gruppe Benutzer zu

Jetzt müssen wir die Benutzer erstellen, um auf das SFTP-Chroot-Verzeichnis zugreifen zu können.

Erstellen Sie eine Gruppe namens sftponly wie im folgenden Befehl gezeigt:

$ sudo groupadd sftponly

Erstellen Sie dann neue SFTP-Benutzer oder weisen Sie vorhandene Benutzer dem "sftponly" zu Gruppe wie unten gezeigt.

Lassen Sie mich einen neuen Nutzer erstellen, zum Beispiel senthil , und weisen Sie ihn dem "sftponly" zu Gruppe. Richten Sie dann sein Home-Verzeichnis als /sftp/ostechnix ein und die Standard-Shell als /sbin/nologin .

Wir können dies mit dem folgenden Online-Befehl tun:

$ sudo useradd -g sftponly -d /ostechnix -s /sbin/nologin senthil

Legen Sie das Passwort für den neu erstellten Benutzer mit dem Befehl fest:

$ sudo passwd senthil

Um den vorhandenen Benutzer zu ändern, verwenden Sie "usermod" statt "useradd" Befehl wie unten:

$ sudo usermod -g sftponly -d /ostechnix -s /sbin/nologin senthil

Weisen Sie dem Chroot-Verzeichnis die richtigen Berechtigungen zu

Sie müssen den SFTP-Benutzern die richtigen Berechtigungen zuweisen, um auf ihr HOME-Verzeichnis zuzugreifen, wie unten beschrieben.

$ sudo chown senthil:sftponly /sftp/ostechnix
$ sudo chmod 700 /sftp/ostechnix/

Die anderen SFTP-Benutzer können nicht auf dieses Verzeichnis zugreifen.

Weisen Sie auch allen anderen SFTP-Benutzern entsprechende Berechtigungen zu.

Empfohlener Download - Kostenloses eBook:"Lernen Sie Linux in 5 Tagen"

Chrooted SFTP konfigurieren

Bearbeiten Sie /etc/ssh/sshd_config Datei:

$ sudo vi /etc/ssh/sshd_config

Suchen Sie die folgenden Zeilen und kommentieren Sie sie aus (d. h. fügen Sie ein Sternchen # davor ein, um sie auszukommentieren).

#Subsystem       sftp    /usr/libexec/openssh/sftp-server

In einigen Distributionen, zum Beispiel Ubuntu 18.04 LTS , suchen und kommentieren Sie die folgende Zeile:

#Subsystem sftp /usr/lib/openssh/sftp-server

Fügen Sie als Nächstes die folgenden Zeilen am Ende der Datei hinzu:

Subsystem       sftp    internal-sftp
Match group sftponly
     ChrootDirectory /sftp/
     X11Forwarding no
     AllowTcpForwarding no
     ForceCommand internal-sftp

Chroot-SFTP konfigurieren

Wenn Sie Benutzer auf $HOME beschränken möchten Verzeichnis, ersetzen Sie einfach /sftp mit /home im obigen Code. Stellen Sie sicher, dass Sie den richtigen Pfad des sftp-Verzeichnisses angegeben haben. Drücken Sie ESC und geben Sie :wq ein um die Datei zu speichern und zu beenden.

Starten Sie ssh neu Dienst, um die Änderungen zu aktualisieren.

$ sudo systemctl restart sshd

Versuchen Sie nun, von jedem anderen System im Netzwerk mit SSH auf dieses System zuzugreifen, indem Sie den sftp-Benutzer verwenden (d. h. in unserem Fall senthil).

$ ssh [email protected]1

Sie erhalten die folgende Fehlermeldung.

[email protected]'s password: 
This service allows sftp connections only.
Connection to 192.168.122.181 closed.

Hier, 192.168.122.181 ist die IP-Adresse meines entfernten Debian-Systems, wo ich SFTP konfiguriert habe.

Sie können nur über sftp auf das Remote-System zugreifen wie unten gezeigt.

$ sftp [email protected]
[email protected]'s password: 
Connected to 192.168.43.2.
sftp>

Sehen? Der Benutzer "senthil" kann sich über sftp verbinden, aber nicht über ssh.

Um das aktuelle Arbeitsverzeichnis zu erfahren, verwenden Sie 'pwd' Befehl:

sftp> pwd
Remote working directory: /ostechnix
sftp>

Chroot-SFTP unter Linux einrichten

Grundlegende SFTP-Befehle

Wir können uns mit -p über einen alternativen Port verbinden Flagge.

$ sftp -P <port_number> [email protected]_host

Um eine entfernte Datei auf das lokale System zu übertragen, gehen Sie wie folgt vor:

sftp> get /path/remote_file

Wir können lokale Dateien mit folgendem Befehl auf das entfernte System übertragen:

sftp> put /path/local_file

So übertragen Sie den Remote-Ordner rekursiv auf das lokale System:

sftp> get -R /path/remote_folder

So zeigen Sie die Liste der Dateien auf dem lokalen Computer an:

sftp> lls

So zeigen Sie die Liste der Dateien auf dem Remote-Computer an:

sftp> ls

Weitere Einzelheiten zur sftp-Nutzung finden Sie in den Manpages.

$ man sftp

Schlussfolgerung

In diesem Handbuch haben wir besprochen, wie man chrooted SFTP in Linux-Betriebssystemen wie Debian und Ubuntu konfiguriert und einrichtet.

Empfohlene Lektüre:

  • So ändern Sie den FTP-Standardport in einen benutzerdefinierten Port
  • VSFTPD-Server in Ubuntu installieren
  • Sicherer VSFTPD-Server mit TLS/SSL-Verschlüsselung in Ubuntu
  • FTP-Server Schritt für Schritt in CentOS einrichten
  • FTP_Manager :Ein einfaches Skript zum Installieren und Verwalten von FTP-Servern in CentOS

Linux
  1. So aktualisieren Sie einen Linux-Symlink

  2. So richten Sie Linux-Chroot-Jails ein

  3. So richten Sie Chroot SFTP unter Linux ein (nur SFTP zulassen, nicht SSH)

  4. So erhalten Sie die Verzeichnisgröße in Linux

  5. So richten Sie eine passwortlose SSH-Anmeldung unter Linux ein

So zählen Sie Dateien im Verzeichnis in Linux

So richten Sie das neueste Oracle OpenJDK unter Linux ein

So führen Sie alle Skripte in einem Verzeichnis unter Linux aus

So kopieren Sie das Verzeichnis unter Linux

So zählen Sie Dateien im Verzeichnis unter Linux

Wie aktiviere ich sFTP in einem Linux VPS?