How To: FTP-Server auf einer Ubuntu Amazon EC2 Instanz einrichten

Melden

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

  1. Eine laufende Amazon EC2 Instanz mit Ubuntu.
  2. Zugriff auf die Instanz über SSH.
  3. 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.

  1. Logge dich in die AWS Management Console ein.
  2. Gehe zu EC2 Instances und wähle deine Instanz aus.
  3. Klicke auf den Reiter Security.
  4. Klicke auf die verknüpfte Security Group.
  5. 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:

  1. Schreibzugriff erlauben: Suche #write_enable=YES und entferne die Raute #.

    write_enable=YES
  2. Benutzer im Home-Verzeichnis einsperren (Chroot): Suche #chroot_local_user=YES und aktiviere es.

    chroot_local_user=YES
  3. Passive Mode für AWS EC2 konfigurieren (Wichtig!): Füge diese Zeilen am Ende der Datei hinzu. Ersetze DEINE_OEFFENTLICHE_IP durch 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.

  1. Benutzer anlegen:

    sudo adduser ftpuser

    (Vergib ein sicheres Passwort und bestätige die Abfragen).

  2. 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.conf konfigurieren 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=YES in der Konfiguration steht oder das Root-Verzeichnis des FTP-Users keine Schreibrechte hat (wie in Schritt 4 gezeigt).
0