GNU/Linux >> LINUX-Kenntnisse >  >> Debian

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

Pure-FTPd ist ein kostenloser Open-Source-FTP-Server, der auf Sicherheit ausgelegt ist. In diesem Tutorial lernen wir, wie man einen FTP-Server auf Debian 10 mit Pure-FTPd einrichtet und wie man TLS-Verschlüsselung erzwingt.

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 Debian 10 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; generated)
   Active: active (running) since Wed 2021-06-16 13:15:52 UTC; 23s ago
     Docs: man:systemd-sysv-generator(8)
    Tasks: 1 (limit: 558)
   Memory: 972.0K
   CGroup: /system.slice/pure-ftpd.service
           └─9223 pure-ftpd (SERVER)

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 man mit

sehen kann
sudo ss -lnpt | grep pure-ftpd

Der andere Port ist der Datenport (TCP-Port 20), der verwendet wird, wenn ein Benutzer Dateien über FTP überträgt.

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 den Benutzern eine Warnmeldung 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 Debian 10-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 Debian 10-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 Debian 10-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.

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.

sudo su -

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

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

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.

Schritt 5:FTP-Ports in der Firewall öffnen

Wenn Sie die UFW-Firewall verwenden, führen Sie den folgenden Befehl aus, um die TCP-Ports 20 und 21 zu öffnen.

sudo ufw allow 20,21/tcp

Schritt 6:Mit FTP-Server verbinden

Wenn Sie Nautilus verwenden Dateimanager zum Herstellen einer Verbindung zum FTP-Server über einfachen Text ftp:// 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 vertraut standardmäßig keinem Zertifikat (selbstsigniert oder CA-signiert). 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

pure-ftpd muss neu geladen werden damit es das neue Zertifikat und den privaten Schlüssel abholt.


Debian
  1. So richten Sie eine Firewall mit UFW unter Debian 10 ein

  2. So installieren Sie den vsftpd-FTP-Server und sichern ihn mit TLS unter Debian 11

  3. So richten Sie einen SFTP-Server auf Debian 11 Server ein

  4. So richten Sie einen OpenVPN-Server unter Debian 10 ein

  5. Richten Sie einen Mailserver mit PostfixAdmin auf Debian 9 ein

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

So konfigurieren Sie LAMP mit Debian 11

So konfigurieren Sie Samba Server mit Debian 11

So installieren Sie den vsftpd-Server unter Debian 11

So installieren Sie den FTP-Server unter Debian 10

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