Pro und Contra

FTP-Server, SFTP- & NFS-Server für Linux im Überblick

23.12.2015 von Thorsten Eggeling
Der Dateitransport von A nach B ist mit einem Linux-Server kein Problem. Für die reibungslose Funktion und insbesondere für erhöhte Sicherheit sollten Sie jedoch die Konfiguration anpassen.

Für den Dateitransfer zwischen Linux-Servern oder Desktop-PCs gibt es viele Methoden. Einige davon sind schneller, andere sicherer und wieder andere bequemer. Passende Lösungen gibt es für jeden Einsatzbereich: für Backups, Downloads, Uploads oder für direktes Bearbeiten von Dateien auf dem Server. Wie Sie die nötige Software auf dem Server konfigurieren und dann auf die Dateien zugreifen, erklärt dieser Artikel. Die Beschreibungen gelten für Ubuntu 14.04 und ähnliche Systeme. Bei anderen Linux-Distributionen können Paketnamen und Dateipfade abweichen.

SFTP: Sicher und schnell

Der Open-SSH-Server bietet nicht nur einen Shell-Zugang, sondern auch den Dateitransfer über SFTP an (SSH File Transfer Protocol oder Secure File Transfer Protocol). Die Kommunikation läuft wie bei SSH verschlüsselt über Port 22. Richten Sie zuerst den SSH-Server ein.

Für die Kommandozeile gibt es zwei Befehle, über die Sie auf einen SFTP-Server zugreifen können. Mit der Zeile

scp test.tar.gz Benutzer@Server.de:~/

kopieren Sie die Datei „test.tar.gz“ aus dem aktuellen Verzeichnis in das Home-Verzeichnis auf dem Server. „Benutzer“ ersetzen Sie durch Ihren Anmeldenamen und „Server.de“ durch die IP-Adresse oder den Domain-Namen Ihres Linux-Servers. Bei der erstmaligen Verbindung zum Server müssen Sie den SSL-Schlüssel mit „yes“ akzeptieren. scp funktioniert ähnlich wie cp in der allgemeinen Form mit „scp Quelle Ziel“. Mit

scp Benutzer@Server.de:~/test.tar.gz test.tar.gz

laden Sie die Datei „test.tar.gz“ vom Server in das aktuelle Verzeichnis herunter. scp kann auch Wildcards wie „*“ verarbeiten. Um alle PNG-Dateien aus dem Verzeichnis „Bilder“ in Ihrem Home-Verzeichnis auf den Server hochzuladen, verwenden Sie dieses Kommando:

scp ~/Bilder/*.png BenutzerName@ MeinServer.de:~/Bilder

sftp ist eine Alternative zu scp. Sie starten es mit

sftp Benutzer@Server.de

und melden sich mit Ihrem Passwort an. help liefert eine Übersicht der verfügbaren Kommandos. Mit ls lassen Sie sich den Verzeichnisinhalt auf dem Server anzeigen, mit cd Ordner wechseln Sie in ein anderes Verzeichnis. Sie können wie in der Bash-Shell die Tab-Taste für die automatische Ergänzung von Datei- und Ordnernamen verwenden. Mit get DateiName laden Sie eine Datei herunter, put DateiName verwenden Sie für den Upload.

SFTP im Dateimanager: Über eine URL wie „ssh://192.168.0.20“ binden Sie eine SFTP-Freigabe in Thunar oder Nautilus ein. Dabei erfolgt eine Abfrage von Benutzer und Passwort.

Grafische Programme für den Dateitransfer:scp und sftp überschreiben vorhandene Dateien ohne Rückfrage. Mehr Komfort bieten Dateimanager wie Nautilus (Gnome/ Ubuntu) oder Thunar (Xfce/Xubuntu). Hier verwenden Sie eine URL wie „ssh://Server.de“ in der Adresszeile. Im KDE-Dateimanager Dolphin tragen Sie fish://MeinServer.de ein. Die Adresszeile lässt sich jeweils mit Strg-L einblenden. Der Zugriff ist außerdem über Programme wie Filezilla möglich (> nächster Punkt).

SFTP mounten: Sie können einen SSH/SFTP-Server über Fuse (Filesystem in Userspace) und das Modul sshfs auch in das lokale Dateisystem einbinden. Installieren Sie die nötige Software über

sudo apt-get install sshfs

Damit ein Benutzer ohne root-Rechte Fuse nutzen kann, fügen Sie ihn mit

sudo usermod -aG fuse Benutzer

zur Gruppe „fuse“ hinzu. „Benutzer“ ersetzen Sie durch Ihren Anmeldenamen. Melden Sie sich ab und wieder an. Erstellen Sie einen Mountpunkt im Home-Verzeichnis, und hängen Sie das Dateisystem ein:

mkdir ~/fusessh
sshfs Benutzer@Server.de:/Pfad ~/fusessh

Mit fusermount -u ~/fusessh lösen Sie die Einbindung wieder.

SFTP einschränken:Standardmäßig hat jedes Benutzerkonto SSH- und SFTP-Zugriff. Sie können aber für einzelne Benutzern oder Gruppen den Shell-Zugang über SSH verbieten und SFTP auf ein bestimmtes Verzeichnis beschränken, etwa für den Datenaustausch mit Bekannten oder Mitarbeitern.

Dazu öffnen Sie die Datei „/etc/ssh/sshd_config“ als root in einem Editor und fügen am Ende folgende sechs Zeilen an:

Match Group sftpgroup
ChrootDirectory /home/sftphome
ForceCommand internal-sftp
AllowTcpForwarding no
PermitTunnel no
X11Forwarding no

Erstellen Sie mit addgroup sftpgroup eine neue Gruppe und mit den folgenden fünf Zeilen einen neuen Benutzer mit Passwort und das Verzeichnis „/home/sftphome“ mit den erforderlichen Rechten:

sudo useradd -s /bin/false -g sftpgroup sftpuser
sudo passwd sftpuser
sudo mkdir /home/sftphome
sudo chown root:root /home/sftphome
sudo chmod 755 /home/sftphome

Der Benutzer sftpuser kann sich jetzt über SFTP anmelden und Dateien aus „/home/smthome“ herunterladen. Wenn er auch Dateien hochladen soll, führen Sie folgende Befehle aus:

mkdir /home/sftphome/upload
chown root:sftpgroup /home/sftp home/upload
chmod 775 /home/sftphome/upload

Damit erhalten Mitglieder der Gruppe sftpgroup Schreibrechte im Ordner „/home/sftphome/upload“. Eine Anmeldung über SSH ist für diese Gruppe nicht möglich.

FTP-Server unter Linux: Schnell, aber nicht ungefährlich

FTP über SSL absichern: FTP-Server wie Proftpd übertragen Daten standardmäßig unverschlüsselt. In der Konfigurationsdatei „/etc/ proftpd/tls.conf“ lässt sich das ändern.

Das File Transfer Protocol (FTP) ist ein Klassiker unter den Netzwerkprotokollen. Es ist seit 1985 standardisiert, bei vielen Web-Hostern im Einsatz und dient vor allem dem Upload von Dateien auf die eigene Homepage. Die ungebrochene Beliebtheit von FTP erklärt sich wohl dadurch, dass FTP-Clients auf allen Plattformen standardmäßig vorhanden sind.

FTP überträgt jedoch alle Daten unverschlüsselt. Das ist innerhalb eines privaten Netzwerkes kein Problem, im Internet jedoch ein Sicherheitsrisiko. Wenn ein Web-Hoster auch SSH/SFTP anbietet, ist es besser, wenn Sie FTP deaktivieren.

FTP über SSL:Sollten Sie auf FTP angewiesen sein, lässt sich auch hier Verschlüsselung aktivieren. Der Dienst nennt sich „FTP über SSL“, 2FTP über TLS2 oder kurz „FTPS“. Richten Sie mit apt-get install proftpd beispielsweise den FTP-Server Proftpd ein. Wählen Sie dabei für optimale Leistung die Option „Servermodus“. Öffnen Sie dann die Konfigurationsdatei mit sudo nano /etc/proftpd/proftpd.conf. In der Standardkonfiguration erlaubt das Programm allen Benutzerkonten den Zugriff auf alle Dateien auf dem Server, soweit sie dafür Berechtigungen besitzen. Wenn Sie das ändern möchten, entfernen Sie das Kommentarzeichen „#“ vor „DefaultRoot ~“.

Für FTPS entfernen Sie das Kommentarzeichen vor der Zeile „Include /etc/ proftpd/tls.conf“. Speichern Sie die Datei mit Strg-O, und schließen Sie den Editor mit Strg-X. Dann öffnen Sie mit sudo nano /etc/proftpd/tls.conf die Konfigurationsdatei für die Verschlüsselung.

Entfernen Sie die Kommentarzeichen, und ergänzen Sie fehlende Zeilen, so dass nach der Zeile

<IfModule mod_tls.c>

der Inhalt gemäß nebenstehender Abbildung entsteht – beginnend mit „TLSEngine on“ und endend mit „</ IfModule>“. Die Zertifikatdateien „proftpd.crt“ und „proftpd.key“ können Sie selbst erstellen und signieren. Der Befehl dafür steht als Kommentar in der Datei. Starten Sie den FTP-Server mit service proftpd restart neu.

FTP/SFTP-Client: Für den bequemen Transfer von Dateien und Ordnern beispielsweise auf Ihre Homepage ist die Client-Software Filezilla immer eine Empfehlung.

FTP-Client-Software: Ein beliebter FTP-Client ist Filezilla, das in den Repositorien aller größeren Linux-Distributionen zu finden ist. Über „Datei > Servermanager > Neuer Server“ tragen Sie die Verbindungsdaten ein. Hinter „Protokoll“ wählen Sie „FTP - File Transfer Protokoll“ und hinter „Verschlüsselung“ den Eintrag „Explizites FTP über TLS erfordern“. Bei „Verbindungsart“ stellen Sie „Normal“ ein und tragen darunter Benutzernamen und Passwort ein. Ist alles korrekt, erhalten Sie mit „Verbinden“ Zutritt.

NFS: Dateitransfer im lokalen Netzwerk

SFTP und FTP eignen sich für die Datenübertragung im lokalen Netzwerk wie im Internet. NFS (Network File System) sollten Sie aus Sicherheitsgründen nur im eigenen Netz verwenden. Das Dateisystem hat vor allem Vorzüge bei permanenten Verbindungen zwischen mehreren Linux-PCs. Im Vergleich zu Samba arbeitet NFS schneller, die Freigaben sind aber ohne zusätzliche Software nicht für Windows-PCs erreichbar.

Auf dem Server installieren Sie zuerst die nötige Software mit der Zeile

sudo apt-get install nfs-kernelserver

Auf den Client-PCs richten Sie das Paket „nfs-common“ ein. Öffnen Sie auf dem Server mit sudo nano /etc/exports die NFS-Konfigurationsdatei im Editor. Mit folgender Zeile

/mnt/data0 192.168.0.14(rw,async)

geben Sie eine Festplatte, die in „/mnt/ data0“ eingehängt ist, für den Rechner mit der IP-Adresse 192.168.0.14 frei. Starten Sie den NFS-Server mit sudo service nfs-kernel-server restart neu. Auf dem Client-PC hängen Sie das Dateisystem dann mit dem folgenden Befehl ein:

sudo mount 192.168.0.20:/mnt/data0 /mnt/data0

Für die Beispiel-IP setzen Sie die tatsächliche IP-Adresse Ihres Servers ein.

Das Zielverzeichnis „/mnt/data0“ muss existieren. Jeder Benutzer kann die Dateien lesen, root hat Schreibrechte. Wenn Sie das ändern wollen, setzen Sie auf Server wie Client die Rechte für die Mount-Verzeichnisse entsprechend, etwa mit sudo chmod 777 /mnt/data0. NFS kennt keine Authentifizierung der Benutzer. Die Rechte werden über die Benutzer-IDs gewährt, was nur dann problemlos funktioniert, wenn auf allen beteiligten PCs die gleichen Benutzer mit identischen IDs vorhanden sind.

Bei einem privaten Server und Client ist das jedoch leicht zu verwalten, solange Sie NFS nur als root (ID:0) und mit dem ersten angelegten Benutzerkonto (ID:1000) verwenden. Gibt es auf dem Client, nicht aber auf dem Server einen weiteren Benutzer etwa mit der ID 1001, werden Ordner und Dateien mit dessen ID erstellt. Das macht spätere Neuzuweisungen von Rechten auf dem Server kompliziert.

(PC-Welt/ad)