GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So richten Sie einen sicheren FTP-Server mit Pure-FTPd unter Ubuntu ein

Pure-FTPd ist ein kostenloser Open-Source-FTP-Server, der auf Sicherheit ausgelegt ist. In diesem Tutorial sehen wir uns an, wie man einen sicheren FTP-Server auf einem Ubuntu-Server mit Pure-FTPd einrichtet und wie man TLS-Verschlüsselung erzwingt.

Hinweis :Dieses Tutorial funktioniert auf allen aktuellen Ubuntu-Versionen, einschließlich Ubuntu 20.04, 18.04 und 21.04.

Reine FTPd-Funktionen:

  • Es unterstützt SSL/TLS-Verschlüsselung und somit können Passwörter und Befehle geschützt werden.
  • Es kann auf den meisten Unix-ähnlichen Systemen ausgeführt werden:Linux, BSDs, Solaris, Darwin, HPUX, AIX und sogar iPhone.
  • Verfügbar in 21 Sprachen.
  • Ermöglicht es Ihnen, aktive Sitzungen zu überwachen.
  • Unterstützt ein virtuelles Quotensystem.
  • Und vieles mehr

Eine vollständige Liste der Funktionen finden Sie auf der offiziellen Pure-FTPd-Website.

Schritt 1:Pure-FTPd auf Ubuntu-Server installieren

Es befindet sich im Software-Repository, geben Sie also den folgenden Befehl ein, um den FTP-Server zu installieren.

sudo apt install pure-ftpd

Nach der Installation wird Pure-FTPd automatisch gestartet, wie mit diesem Befehl zu sehen ist:

systemctl status pure-ftpd

Ausgabe:

● pure-ftpd.service
   Loaded: loaded (/etc/init.d/pure-ftpd; bad; vendor preset: enabled)
   Active: active (running) since Mon 2016-12-12 21:51:46 EST; 23s ago
     Docs: man:systemd-sysv-generator(8)
   CGroup: /system.slice/pure-ftpd.service
           └─3435 pure-ftpd (SERVER)

preset: enabled zeigt an, dass es beim Systemstart automatisch gestartet wird. Wenn es nicht ausgeführt wird, starten Sie es mit:

sudo systemctl start pure-ftpd

Und es lauscht auf TCP-Port 21, dem Kontrollport, wie mit

zu sehen ist
sudo netstat -lnpt | grep pure-ftpd

Der anonyme Zugriff ist standardmäßig deaktiviert. Von nun an können Sie sich mit Ihrem Systemkonto anmelden, aber FTP im Klartext ist unsicher und es wird dringend davon abgeraten. Um einen sicheren FTP-Server zu haben, müssen wir die Kommunikation mit TLS verschlüsseln.

Schritt 2:TLS-Verschlüsselung erzwingen

Um sowohl die Klartext- als auch die TLS-Verschlüsselung zu aktivieren, führen Sie den folgenden Befehl aus, der /etc/pure-ftpd/conf/TLS erstellt Datei und fügen Sie die Nummer 1 in die Datei ein.

echo 1 | sudo tee /etc/pure-ftpd/conf/TLS

Es wird jedoch empfohlen, den Klartext zu deaktivieren und nur die TLS-Verschlüsselung zu verwenden, also fügen Sie stattdessen die Nummer 2 in die Datei ein.

echo 2 | sudo tee /etc/pure-ftpd/conf/TLS

Jetzt haben wir TLS erzwungen, wir müssen ein gültiges TLS-Zertifikat erhalten. Ein selbstsigniertes Zertifikat wird nicht empfohlen, da Benutzern eine Warnung wie im folgenden Screenshot angezeigt wird.

Schritt 3:Erhalten Sie ein vertrauenswürdiges TLS-Zertifikat von Let’s Encrypt

Führen Sie den folgenden Befehl aus, um den Let’s Encrypt-Client (certbot) aus dem standardmäßigen Ubuntu-Repository zu installieren.

sudo apt install certbot

Ich empfehle die Verwendung des standalone oder webroot Plugin, um ein TLS-Zertifikat für Pure-FTPd zu erhalten.

Eigenständiges Plugin

Wenn auf Ihrem Ubuntu-Server kein Webserver läuft, können Sie das eigenständige Plugin verwenden. Führen Sie den folgenden Befehl aus. Vergessen Sie nicht, einen DNS-A-Eintrag für Ihre Subdomain einzurichten.

sudo certbot certonly --standalone --preferred-challenges http --agree-tos --email [email protected] -d ftp.example.com

Wo:

  • certonly :Erhalten Sie ein Zertifikat, aber installieren Sie es nicht.
  • --standalone :Verwenden Sie das eigenständige Plugin, um ein Zertifikat zu erhalten
  • --preferred-challenges http :Führen Sie eine http-01-Abfrage durch, um unsere Domäne zu validieren, die Port 80 verwendet.
  • --agree-tos :Stimmen Sie den Nutzungsbedingungen von Let’s Encrypt zu.
  • --email :Die E-Mail-Adresse wird für die Kontoregistrierung und -wiederherstellung verwendet.
  • -d :Geben Sie Ihren Domänennamen an.

Wie Sie dem folgenden Screenshot entnehmen können, habe ich das Zertifikat erfolgreich erhalten.

Verwendung des Webroot-Plugins

Wenn Ihr Ubuntu-Server über einen Webserver verfügt, ist es eine gute Idee, das Webroot-Plugin zu verwenden, um ein Zertifikat zu erhalten, da das Webroot-Plugin mit so ziemlich jedem Webserver funktioniert und wir das Zertifikat nicht auf dem Webserver installieren müssen /P>

Zuerst müssen Sie einen virtuellen Host für ftp.example.com erstellen .

Apache

Wenn Sie Apache verwenden, dann

sudo nano /etc/apache2/sites-available/ftp.example.com.conf

Und fügen Sie die folgenden Zeilen in die Datei ein.

<VirtualHost *:80>        
        ServerName ftp.example.com

        DocumentRoot /var/www/Pure-FTPd
</VirtualHost>

Speichern und schließen Sie die Datei. Erstellen Sie dann das Web-Root-Verzeichnis.

sudo mkdir /var/www/Pure-FTPd

Legen Sie www-data (Apache-Benutzer) als Eigentümer des Webstammverzeichnisses fest.

sudo chown www-data:www-data /var/www/Pure-FTPd -R

Aktivieren Sie diesen virtuellen Host.

sudo a2ensite ftp.example.com

Laden Sie Apache neu, damit die Änderungen wirksam werden.

sudo systemctl reload apache2

Sobald der virtuelle Host erstellt und aktiviert ist, führen Sie den folgenden Befehl aus, um das Let’s Encrypt-Zertifikat mit dem Webroot-Plugin zu erhalten.

sudo certbot certonly --webroot --agree-tos --email [email protected] -d ftp.example.com -w /var/www/Pure-FTPd

Nginx

Wenn Sie Nginx verwenden, dann

sudo nano /etc/nginx/conf.d/ftp.example.com.conf

Fügen Sie die folgenden Zeilen in die Datei ein.

server {
      listen 80;
      listen [::]:80;
      server_name ftp.example.com;

      root /var/www/Pure-FTPd/;

      location ~ /.well-known/acme-challenge {
         allow all;
      }
}

Speichern und schließen Sie die Datei. Erstellen Sie dann das Web-Root-Verzeichnis.

sudo mkdir -p /var/www/Pure-FTPd

Legen Sie www-data (Nginx-Benutzer) als Eigentümer des Webstamms fest.

sudo chown www-data:www-data /var/www/Pure-FTPd -R

Laden Sie Nginx neu, damit die Änderungen wirksam werden.

sudo systemctl reload nginx

Sobald der virtuelle Host erstellt und aktiviert ist, führen Sie den folgenden Befehl aus, um das Let’s Encrypt-Zertifikat mit dem Webroot-Plugin zu erhalten.

sudo certbot certonly --webroot --agree-tos --email [email protected] -d ftp.example.com -w /var/www/Pure-FTPd

Schritt 4:Zertifikat installieren

Pure-FTPd erfordert, dass das Zertifikat und der private Schlüssel in einer Datei mit dem Namen pure-ftpd.pem kombiniert werden und gespeichert unter /etc/ssl/private/ Verzeichnis.

Wechseln Sie zu /etc/letsencrypt/live/ftp.example.com/ Verzeichnis.

cd /etc/letsencrypt/live/ftp.example.com/

Sie können cat verwenden Befehl, um zwei Dateien wie unten zu einer zu kombinieren.

sudo cat fullchain.pem privkey.pem | sudo tee /etc/ssl/private/pure-ftpd.pem

Stellen Sie sicher, dass nur der Root-Benutzer die Datei lesen kann.

sudo chmod 600 /etc/ssl/private/pure-ftpd.pem

Wir müssen den Diffie-Hellman-Parameter generieren mit:

sudo openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 4096

Wenn Ihr Server einen einzelnen CPU-Kern hat, wird dies lange dauern (ca. 10 Minuten).

Sobald dies erledigt ist, starten Sie Pure-FTPd neu.

sudo systemctl restart pure-ftpd

Überprüfen Sie den Status, um festzustellen, ob es ausgeführt wird.

systemctl status pure-ftpd

Jetzt können Sie sich über TLS mit Ihrem FTP-Server verbinden.

Wenn Sie den Nautilus-Dateimanager verwenden, um eine Verbindung zum FTP-Server über einfachen Text ftp:// herzustellen Protokoll

Die Verbindung wird abgelehnt.

Statt ftp:// , müssen Sie ftps:// verwenden .

Standardmäßig werden FTP-Benutzer zu / geleitet Stammverzeichnis auf dem Server.

Bitte beachten Sie, dass Filezilla standardmäßig keinem Zertifikat (selbstsigniert oder CA-signiert) vertraut. Benutzer müssen sich entscheiden, dem Zertifikat selbst zu vertrauen.

Warnung vor unbekanntem FileZilla-Zertifikat

Und Sie müssen das explizite FTP-TLS-Protokoll verwenden (ftpes://ftp.example.com ) in Filezilla.

Automatische Verlängerung des TLS-Zertifikats

Sie können einen Cron-Job erstellen, um das TLS-Zertifikat automatisch zu erneuern. Öffnen Sie einfach die Crontab-Datei des Root-Benutzers.

sudo crontab -e

Fügen Sie am Ende der Datei die folgende Zeile hinzu.

@daily certbot renew --quiet && cd /etc/letsencrypt/live/ftp.example.com/ && cat fullchain.pem privkey.pem | tee /etc/ssl/private/pure-ftpd.pem && systemctl reload pure-ftpd

Es ist notwendig, pure-ftpd neu zu laden, damit es das neue Zertifikat und den privaten Schlüssel abholt.


Ubuntu
  1. So richten Sie einen FTP-Server auf Ihrem Raspberry Pi ein

  2. So installieren Sie einen FTP-Server unter Ubuntu mit vsftpd

  3. So richten Sie einen FTP-Server mit VSFTPD unter Ubuntu 20.04 ein

  4. So sichern Sie Nginx mit Letsencrypt unter Ubuntu 20.04

  5. So installieren Sie den FTP-Server unter Ubuntu 20.04

So richten Sie schnell einen Mailserver unter Ubuntu 20.04 mit Modoboa ein

So richten Sie die Zeitsynchronisierung mit NTP unter Ubuntu 18.04 ein

So richten Sie einen Seafile-Server mit Nginx unter Ubuntu 18.04 ein

So richten Sie einen FTP-Server mit ProFTPD in Ubuntu 18.04 ein

So richten Sie einen Mailserver mit Modoboa unter Ubuntu 20.04 ein

So sichern Sie Nginx mit Let’s Encrypt unter Ubuntu 20.04