FTP-Server sichern

Ein FTP-Server (File Transfer Protocol) ist ein häufig genutzter Dienst, um Dateien in einem Netzwerk zu übertragen. Allerdings kann ein unsicherer FTP-Server anfällig für Angriffe sein, da das FTP-Protokoll standardmäßig keine Verschlüsselung verwendet. Um die Sicherheit Ihres FTP-Servers auf einem Linux-System zu gewährleisten, ist es unerlässlich, Best Practices zu befolgen und Sicherheitsmaßnahmen zu ergreifen. In diesem Blog-Beitrag zeigen wir Ihnen, wie Sie einen FTP-Server unter Linux sichern.

1. Warum ist die Sicherheit bei FTP wichtig?

FTP sendet alle Daten, einschließlich Benutzernamen und Passwörter, im Klartext. Dies macht den Server anfällig für Man-in-the-Middle-Angriffe und Schnüffelversuche (Sniffing). Daher müssen zusätzliche Schritte unternommen werden, um den Server zu schützen und Angriffe abzuwehren.

2. Installieren eines sicheren FTP-Servers

Zunächst benötigen Sie einen FTP-Server. vsftpd (Very Secure FTP Daemon) ist eine der am häufigsten verwendeten und sichersten FTP-Server-Optionen für Linux.

Um vsftpd zu installieren, verwenden Sie den folgenden Befehl auf Debian-basierten Systemen (wie Ubuntu):

sudo apt update
sudo apt install vsftpd

Auf Red Hat-basierten Systemen (wie CentOS oder Fedora):

sudo yum install vsftpd

3. Deaktivieren des anonymen Zugriffs

Der anonyme FTP-Zugriff ist eine häufige Schwachstelle, da er es jedem ermöglicht, sich mit dem Server zu verbinden, ohne ein Konto zu benötigen. Um dies zu verhindern, bearbeiten Sie die vsftpd-Konfigurationsdatei:

sudo nano /etc/vsftpd.conf

Suchen Sie die Zeile, die den anonymen Zugriff erlaubt, und deaktivieren Sie ihn, indem Sie den Wert auf NO setzen:

anonymous_enable=NO

Speichern Sie die Änderungen und starten Sie den FTP-Server neu:

sudo systemctl restart vsftpd

4. Nur lokale Benutzer zulassen

Um sicherzustellen, dass nur autorisierte lokale Benutzer Zugriff auf den FTP-Server haben, stellen Sie sicher, dass der folgende Parameter in der Konfigurationsdatei gesetzt ist:

local_enable=YES

Dies erlaubt lokalen Benutzern, sich mit ihren Benutzernamen und Passwörtern anzumelden.

5. Nur Schreibzugriff auf bestimmte Verzeichnisse erlauben

Es ist wichtig, den Zugriff auf das Dateisystem zu beschränken. Sie sollten den Schreibzugriff nur für bestimmte Verzeichnisse gewähren. Um zu verhindern, dass Benutzer Änderungen an wichtigen Verzeichnissen vornehmen, setzen Sie den Parameter write_enable:

write_enable=YES

Um sicherzustellen, dass Benutzer nur in ihrem Home-Verzeichnis arbeiten können, aktivieren Sie das Chroot-Jail. Dies begrenzt die Benutzer auf ihr Home-Verzeichnis:

chroot_local_user=YES

Um einen sicheren FTP-Server zu gewährleisten, müssen Sie außerdem sicherstellen, dass der Root-Benutzer gesperrt ist. Fügen Sie dies der vsftpd.chroot_list hinzu.

6. SSL/TLS für verschlüsselte Verbindungen aktivieren

Da FTP standardmäßig unverschlüsselte Verbindungen verwendet, sollten Sie FTPS (FTP Secure) einrichten, um eine verschlüsselte Verbindung zu gewährleisten. Dies schützt Benutzernamen, Passwörter und übertragene Daten.

Zuerst müssen Sie ein SSL-Zertifikat generieren (oder ein vorhandenes Zertifikat verwenden):

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.crt

Bearbeiten Sie dann die vsftpd-Konfigurationsdatei, um SSL/TLS zu aktivieren:

rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key
ssl_enable=YES

Weitere Optionen zur Konfiguration von TLS:

force_local_logins_ssl=YES
force_local_data_ssl=YES

Diese Einstellungen zwingen den Server, verschlüsselte Verbindungen für Anmeldungen und Datenübertragungen zu verwenden.

7. Firewall-Einstellungen anpassen

Die Sicherung eines FTP-Servers bedeutet auch, die Netzwerkverbindungen zu kontrollieren. Sie sollten sicherstellen, dass nur die erforderlichen Ports offen sind. FTP verwendet standardmäßig Port 21 für Befehle und einen dynamischen Portbereich für Datenübertragungen.

Um die Firewall auf Debian-basierten Systemen zu konfigurieren (mit ufw), verwenden Sie:

sudo ufw allow 21/tcp
sudo ufw allow 990/tcp # Für FTPS

Um den passiven FTP-Portbereich zu konfigurieren, fügen Sie dies der vsftpd-Konfiguration hinzu:

pasv_min_port=10000
pasv_max_port=10100

Öffnen Sie dann diesen Bereich in der Firewall:

sudo ufw allow 10000:10100/tcp

8. Brute-Force-Angriffe verhindern

Ein FTP-Server kann leicht Opfer von Brute-Force-Angriffen werden, bei denen Angreifer versuchen, Passwörter durch automatisierte Versuche zu erraten. Ein einfaches und effektives Mittel, dies zu verhindern, ist die Verwendung von Fail2ban.

Installieren Sie Fail2ban:

sudo apt install fail2ban

Erstellen Sie eine neue Konfigurationsdatei für vsftpd:

sudo nano /etc/fail2ban/jail.local

Fügen Sie die folgende Konfiguration hinzu:

[vsftpd]
enabled = true
port = ftp,ftp-data,ftps
logpath = /var/log/vsftpd.log
maxretry = 5

Dies sperrt IP-Adressen, die wiederholt falsche Anmeldeversuche unternehmen.

Starten Sie Fail2ban neu:

sudo systemctl restart fail2ban

9. Regelmäßige Sicherheitsüberprüfungen und Updates

Sicherheitslücken können durch veraltete Software entstehen. Stellen Sie sicher, dass Ihr System und Ihr FTP-Server regelmäßig aktualisiert werden:

sudo apt update && sudo apt upgrade

Prüfen Sie regelmäßig die vsftpd-Logs, um verdächtige Aktivitäten zu erkennen:

cat /var/log/vsftpd.log

10. Zusammenfassung

Das Sichern eines FTP-Servers unter Linux erfordert eine Kombination aus bewährten Sicherheitspraktiken und der richtigen Konfiguration. Von der Deaktivierung des anonymen Zugriffs über die Nutzung von Verschlüsselung bis hin zur Begrenzung des Zugriffs auf bestimmte Verzeichnisse bietet vsftpd viele Möglichkeiten, Ihren Server zu härten. Vergessen Sie nicht, Ihre Firewall richtig zu konfigurieren und Tools wie Fail2ban zu verwenden, um Brute-Force-Angriffe abzuwehren.

Wenn Sie diese Schritte befolgen, erhöhen Sie die Sicherheit Ihres FTP-Servers erheblich und schützen sensible Daten vor unerwünschten Zugriffen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert