How To: FTP-Server auf einer Ubuntu Amazon EC2 Instanz einrichten
Hier ist ein ausführliches Tutorial, wie du einen FTP-Server (mit vsftpd) auf einer Amazon EC2-Instanz mit Ubuntu Linux einrichtest.
Dieses Tutorial führt dich durch die Installation und Konfiguration eines sicheren FTP-Servers. Wir verwenden vsftpd (Very Secure FTP Daemon), da er leichtgewichtig und sicher ist.
Voraussetzungen
- Eine laufende Amazon EC2 Instanz mit Ubuntu.
- Zugriff auf die Instanz über SSH.
- Die öffentliche IP-Adresse deiner Instanz.
Schritt 1: Sicherheitsgruppe in AWS anpassen
Bevor du auf dem Server arbeitest, musst du die Firewall von AWS (Security Groups) öffnen, damit FTP-Verkehr durchgelassen wird.
- Logge dich in die AWS Management Console ein.
- Gehe zu EC2 Instances und wähle deine Instanz aus.
- Klicke auf den Reiter Security.
- Klicke auf die verknüpfte Security Group.
- Bearbeite die Inbound Rules (Eingehende Regeln) und füge folgende hinzu:
| Protokoll | Port-Bereich | Quelle | Beschreibung |
|---|---|---|---|
| TCP | 21 | 0.0.0.0/0 | FTP Port |
| TCP | 40000 - 50000 | 0.0.0.0/0 | FTP Passive Ports |
Schritt 2: vsftpd installieren
Verbinde dich per SSH mit deiner Instanz und aktualisiere die Paketlisten:
sudo apt update
sudo apt install vsftpd
Prüfe nach der Installation, ob der Dienst läuft:
sudo systemctl status vsftpd
Schritt 3: vsftpd konfigurieren
Die Hauptkonfigurationsdatei liegt unter /etc/vsftpd.conf. Wir erstellen zuerst ein Backup der Originaldatei:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
sudo nano /etc/vsftpd.conf
Ändere oder ergänze folgende Zeilen in der Datei:
-
Schreibzugriff erlauben: Suche
#write_enable=YESund entferne die Raute#.write_enable=YES -
Benutzer im Home-Verzeichnis einsperren (Chroot): Suche
#chroot_local_user=YESund aktiviere es.chroot_local_user=YES -
Passive Mode für AWS EC2 konfigurieren (Wichtig!): Füge diese Zeilen am Ende der Datei hinzu. Ersetze
DEINE_OEFFENTLICHE_IPdurch die IP deiner EC2 Instanz.pasv_min_port=40000 pasv_max_port=50000 pasv_address=DEINE_OEFFENTLICHE_IP allow_writeable_chroot=YES
Speichere mit Strg + O, Enter und schließe mit Strg + X.
Schritt 4: Einen FTP-Benutzer erstellen
Wir erstellen einen eigenen Benutzer für den FTP-Zugriff, damit wir nicht den Standard-User (ubuntu) nutzen müssen.
-
Benutzer anlegen:
sudo adduser ftpuser(Vergib ein sicheres Passwort und bestätige die Abfragen).
-
Verzeichnisstruktur anpassen: Wir erstellen einen Ordner für Uploads:
sudo mkdir -p /home/ftpuser/ftp/upload sudo chown nobody:nogroup /home/ftpuser/ftp sudo chmod a-w /home/ftpuser/ftp sudo chown ftpuser:ftpuser /home/ftpuser/ftp/upload
Schritt 5: FTP-Dienst neu starten
Damit die Änderungen wirksam werden, starte den Dienst neu:
sudo systemctl restart vsftpd
Schritt 6: Verbindung testen
Du kannst nun einen FTP-Client wie FileZilla oder WinSCP verwenden.
- Server/Host: Deine öffentliche EC2 IP-Adresse.
- Benutzername:
ftpuser - Passwort: Das Passwort, das du in Schritt 4 vergeben hast.
- Port: 21
Hinweis zur Sicherheit: Standard-FTP überträgt Passwörter im Klartext. Für den produktiven Einsatz solltest du zusätzlich TLS/SSL in der
vsftpd.confkonfigurieren oder stattdessen SFTP (SSH File Transfer Protocol) nutzen, das standardmäßig über Port 22 auf jeder EC2-Instanz funktioniert.
Fehlerbehebung (Troubleshooting)
- Keine Verbindung möglich? Prüfe, ob die AWS Security Group die Ports 21 und 40000-50000 wirklich freigegeben hat.
- Fehler "500 OOPS: vsftpd: refusing to run with writable root inside chroot()"? Stelle sicher, dass
allow_writeable_chroot=YESin der Konfiguration steht oder das Root-Verzeichnis des FTP-Users keine Schreibrechte hat (wie in Schritt 4 gezeigt).