linux-suse-opensuse file-transfer ftp sftp yast sles opensuse security

FTP & SFTP Services on SUSE (Artikel 161)

Konfiguration von Dateitransfer-Diensten unter SUSE. Erfahren Sie alles über vsftpd via YaST, sicheres SFTP über den SSH-Dämon und den Schutz von Benutzerdaten.

# FTP & SFTP on SUSE: Sicherer Dateiaustausch im Enterprise

TL;DR / Management Summary Während das klassische FTP (File Transfer Protocol) aufgrund seiner unsicheren Natur (Klartext-Übertragung) nur noch in isolierten Netzen eingesetzt werden sollte, ist SFTP (SSH File Transfer Protocol) der moderne Standard. In diesem Modul lernen wir, wie wir einen vsftpd-Server mittels YaST für Altsysteme aufsetzen und wie wir den SSH-Dämon so konfigurieren, dass User via SFTP sicher in ein Chroot-Gefängnis gesperrt werden.


# 1. Einführung & Architektur

Die Wahl des Protokolls.

  • FTP (vsftpd): Braucht Port 21 und eine dynamische Port-Range (Passive Mode). Komplex in der Firewall-Konfiguration.
  • SFTP (openssh): Nutzt nur Port 22 (SSH). Verschlüsselt, firewall-freundlich und oft performanter.
graph LR
    A[Client] -->|Port 21 / FTP| B[vsftpd Daemon]
    A -->|Port 22 / SFTP| C[sshd Daemon]
    B --> D[Filesystem: /srv/ftp]
    C --> E[Filesystem: /home/user]
    subgraph "SUSE Security"
        F[AppArmor] --- B
        F --- C
    end

# 2. FTP-Server mit YaST

Der geführte Weg.

# Einrichtung

  1. sudo zypper install vsftpd yast2-ftp-server.
  2. sudo yast2 ftp-server.
  3. General Settings: Wählen Sie zwischen anonymem Zugriff oder lokalen Usern.
  4. Chroot: Aktivieren Sie “Chroot Users”, um zu verhindern, dass FTP-Nutzer den gesamten Server durchsuchen können.
  5. Firewall: Lassen Sie YaST den Service ftp und die passiven Ports automatisch freischalten.

# 3. SFTP Chroot Setup

Sicherer Dateizugriff via SSH.

Die sicherste Methode für Partner oder Kunden ist ein reiner SFTP-Zugang ohne Shell-Zugriff.

# Konfiguration (/etc/ssh/sshd_config)

Match Group sftpusers
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

# User anlegen

sudo groupadd sftpusers
sudo useradd -m -g sftpusers -s /bin/false sftpuser
sudo passwd sftpuser
# Wichtig: Das Home-Verzeichnis muss Root gehören für Chroot!
sudo chown root:root /home/sftpuser
sudo mkdir /home/sftpuser/uploads
sudo chown sftpuser:sftpusers /home/sftpuser/uploads

# 4. Day-2 Operations: Logging & Monitoring

Wer lädt was hoch?

# FTP Logs

In SUSE finden Sie die Logs standardmäßig unter /var/log/xferlog (oder via journalctl -u vsftpd).

# SFTP Logs

Aktivieren Sie detailliertes Logging in der sshd_config:

Subsystem sftp internal-sftp -l INFO -f AUTHPRIV

Die Logs landen dann in /var/log/messages.


# 5. Troubleshooting & “War Stories”

Wenn der Transfer hakt.

# Story 1: “Der hängende Passive Mode”

Symptom: Login geht, aber ls schlägt fehl. Ursache: Die dynamischen Daten-Ports werden durch eine externe Firewall blockiert. Lösung: Definieren Sie eine feste Port-Range in /etc/vsftpd.conf: pasv_min_port=30000, pasv_max_port=30100. Schalten Sie diese Range in der Firewall frei.

# Story 2: “Der Chroot-Fehler bei SFTP”

Symptom: Der User kann sich nicht einloggen, Fehlermeldung: client_loop: send disconnect: Connection reset by peer. Ursache: Die Berechtigungen für das Chroot-Verzeichnis sind falsch. SSH fordert, dass alle Verzeichnisse im Pfad bis zum Chroot-Punkt root:root gehören und nicht für andere beschreibbar sind (755). Lösung: Pfad-Rechte prüfen: ls -ld /home/sftpuser. Falls nötig: chown root:root /home/sftpuser && chmod 755 /home/sftpuser.


# 6. Fazit & Empfehlung

  • Standard: Nutzen Sie SFTP für 99% aller Aufgaben. Es ist sicherer und einfacher zu warten.
  • Sicherheit: Wenn Sie FTP nutzen müssen, erzwingen Sie Verschlüsselung (FTPS).
  • Wartung: Entfernen Sie das Paket vsftpd, wenn Sie es nicht aktiv brauchen, um die Angriffsfläche zu verringern.

# Anhang: Cheatsheet

Aufgabe SUSE / CLI Befehl
FTP Status systemctl status vsftpd
SSH Status systemctl status sshd
FTP Test ftp localhost
SFTP Test sftp <user>@localhost
SELinux Boolean `getsebool -a
Log-Datei FTP /var/log/xferlog
YaST Modul yast2 ftp-server
Verbindung scannen `ss -tulpn