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
sudo zypper install vsftpd yast2-ftp-server.sudo yast2 ftp-server.- General Settings: Wählen Sie zwischen anonymem Zugriff oder lokalen Usern.
- Chroot: Aktivieren Sie “Chroot Users”, um zu verhindern, dass FTP-Nutzer den gesamten Server durchsuchen können.
- Firewall: Lassen Sie YaST den Service
ftpund 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 |