In letzter Zeit wurde viel über das FTP-Protokoll geredet, und alles deutet darauf hin, dass es veraltet ist und nicht mehr sicher ist. All dies wird noch verstärkt, da wir heute eine sicherere Alternative haben, das sogenannte SFTP (Secure File Transfer Protocol) . In diesem Artikel werde ich zeigen, wie Sie unseren SFTP-Server so konfigurieren, dass nur die Verwendung von SFTP und nicht die Verwendung von SSH-Befehlen (Chroot SFTP) zulässig ist .
Alle Tests wurden auf einem DigitalOcean VPS-Server mit dem Betriebssystem Ubuntu 14.04 x64 durchgeführt.
Einführung in den SFTP-Zugriff ohne Shell in Ubuntu
Das erste, was wir wissen müssen, ist, dass das SFTP-Protokoll sicherer ist, da die Authentifizierung über SSH erfolgt. Daher wird SFTP als Erweiterung des SSH-Protokolls betrachtet, das speziell für die Übertragung und Verwaltung von Dateien entwickelt wurde .
Das Problem, das bei der Standardkonfiguration in Ubuntu auftritt, ist, dass ein Benutzer, der Zugriff über SFTP benötigt, auch Zugriff über SSH haben muss, um alle Arten von Befehlen ausführen zu können, die unseren Server gefährden können.
In diesem Artikel erfahren Sie, wie Sie einem Benutzer den Zugriff über SFTP ermöglichen, ohne jedoch den SSH-Zugriff zuzulassen. Außerdem werden wir den Benutzer in seinem Basisordner “einschließen”, damit er nicht frei auf die restlichen Dateien auf dem Server zugreifen kann, da dies seine Sicherheit gefährden könnte. Dies wird als Chroot-to-SFTP-Benutzer bezeichnet, dh Einschränken ihrer Berechtigungen, sodass sie nur auf Dateien / Ordner in ihrem Basisordner zugreifen können.
Konfigurieren Sie den SFTP-Server so, dass der SSH-Zugriff eingeschränkt wird (Zugriff auf das Terminal einschränken).
In diesem Abschnitt könnte ich verschiedene Konfigurationen entsprechend den organisatorischen Anforderungen der Benutzer zeigen. Ich werde eine sehr einfache Konfiguration zeigen, die es Ihnen ermöglicht, den Prozess zu verstehen, damit Sie ihn später an Ihre Bedürfnisse anpassen können.
Zuerst erstellen wir einen Benutzer namens “sftptest”, auf den wir SFTP-Zugriff gewähren. Dazu führen wir den Befehl aus:
adduser sftptest
Dann entfernen wir die Berechtigungen für den Benutzer, um mit dem folgenden Befehl auf die Shell / das Terminal zuzugreifen:
chsh -s /bin/false sftptest
Jetzt kann der Benutzer nicht über SSH zugreifen oder Befehle im Terminal ausführen.
Der nächste Schritt besteht darin, eine Benutzergruppe mit dem Namen “sftpusers” zu erstellen, auf die wir Ihren Zugriff einschränken, sodass Sie nur SFTP verwenden können:
addgroup sftpusers
Jetzt fügen wir dieser Gruppe den Benutzer hinzu, den wir zuvor erstellt haben:
gpasswd -a sftptest sftpusers
Dann modifizieren wir die Datei /etc/ssh/sshd_config
, ich benutze den nano
Editor des Terminals.
Als erstes muss nach der Zeile gesucht werden:
Subsystem sftp /usr/lib/openssh/sftp-server
Wir lassen es kommentiert (indem wir das #
-Zeichen am Anfang der Zeile einfügen ) und fügen es direkt unter der folgenden Zeile ein, so dass das Ergebnis wie folgt aussieht:
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Am Ende der Datei (sehr wichtig, dass sie am Ende ist oder nicht funktioniert) fügen wir die folgenden Zeilen hinzu:
Match Group sftpusers ChrootDirectory /home ForceCommand internal-sftp AllowTCPForwarding no X11Forwarding no
Schließlich starten wir den SSH-Dienst mit dem Befehl neu:
service ssh restart
Jetzt werden alle Benutzer, die über SFTP zugreifen, im Ordner /home
gesperrt. Es ist sehr wichtig, dass dieser Ordner den Root-Benutzer besitzt, da er sonst nicht funktioniert. Mit anderen Worten, der Ordner, in dem wir den Chroot ausführen, muss den Root-Benutzer als Eigentümer haben. Der /home
Ordner in Ubuntu besitzt standardmäßig den Root-Benutzer, daher müssen wir nichts ändern, aber Sie wissen, dass der Befehl zum Ändern des Besitzes in einen Ordner ungefähr so ??lautet:
chown root:root /carpeta/usuario/sftp/archivos
Wenn Sie mehrere Benutzer haben und möchten, dass diese nicht auf die Ordner der anderen Benutzer zugreifen können, müssen Sie die Berechtigungen ihres Basisordners mit dem folgenden Befehl ändern:
chmod 700 /home/usuario
In unserem Beispiel wäre der Befehl:
chmod 700 /home/sftptest
Sie sollten wissen, dass diese Verzeichnisstruktur / Räumlichkeiten den Zugriff anderer Benutzer auf den Basisordner eines Benutzers nicht zulässt, jedoch die Auflistung aller Benutzer mit SFTP-Zugriff zulässt. Wenn Sie eine restriktivere Konfiguration benötigen, müssen Sie möglicherweise die ChrootDirectory %h
Match User usuario
und ChrootDirectory %h
in der Konfiguration der /etc/ssh/sshd_config
vielleicht später) .
Lassen Sie zum Schluss den Hinweis, dass Sie für den Zugriff über SFTP FileZilla verwenden können, indem Sie das Feld Server sftp://
gefolgt von der IP- sftp://128.50.50.50
Ihres Servers sftp://128.50.50.50
, z. B. sftp://128.50.50.50
.
Ich hoffe, Sie fanden den Artikel nützlich und wenn Sie irgendwelche Zweifel haben, zögern Sie nicht, die Kommentare zu verwenden.