GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nastavit zabezpečený FTP server s Pure-FTPd na Ubuntu

Pure-FTPd je bezplatný open-source FTP server navržený s ohledem na bezpečnost. V tomto tutoriálu se podíváme na to, jak nastavit bezpečný FTP server na serveru Ubuntu s Pure-FTPd a jak vynutit šifrování TLS.

Poznámka :Tento tutoriál funguje na všech aktuálních vydáních Ubuntu, včetně Ubuntu 20.04, 18.04 a 21.04.

Funkce čistého FTPd:

  • Podporuje šifrování SSL/TLS, a proto lze chránit hesla a příkazy.
  • Může běžet na většině systémů podobných Unixu:Linux, BSD, Solaris, Darwin, HPUX, AIX a dokonce i iPhone.
  • K dispozici ve 21 jazycích.
  • Umožňuje vám sledovat aktivní relace.
  • Podporuje systém virtuálních kvót.
  • A mnohem více

Úplný seznam funkcí naleznete na oficiálních stránkách Pure-FTPd.

Krok 1:Nainstalujte Pure-FTPd na server Ubuntu

Je v úložišti softwaru, takže pro instalaci serveru FTP zadejte následující příkaz.

sudo apt install pure-ftpd

Po instalaci se Pure-FTPd automaticky spustí, jak je vidět pomocí tohoto příkazu:

systemctl status pure-ftpd

Výstup:

● 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 označuje, že se automaticky spustí při spouštění systému. Pokud neběží, označte hvězdičkou:

sudo systemctl start pure-ftpd

A naslouchá na portu TCP 21, což je řídicí port, jak je vidět na

sudo netstat -lnpt | grep pure-ftpd

Anonymní přístup je ve výchozím nastavení zakázán. Od této chvíle můžete k přihlášení používat svůj systémový účet, ale FTP s prostým textem není bezpečné a důrazně se nedoporučuje. Abychom měli zabezpečený FTP server, potřebujeme šifrovat komunikaci pomocí TLS.

Krok 2:Vynucení šifrování TLS

Chcete-li povolit šifrování prostého textu i TLS, spusťte následující příkaz, který vytvoří /etc/pure-ftpd/conf/TLS soubor a do souboru vložte číslo 1.

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

Doporučuje se však zakázat prostý text a používat pouze šifrování TLS, takže místo toho do souboru vložte číslo 2.

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

Nyní jsme vynutili TLS, potřebujeme získat platný certifikát TLS. Certifikát s vlastním podpisem se nedoporučuje, protože uživatelům se zobrazí varování jako na snímku obrazovky níže.

Krok 3:Získejte důvěryhodný certifikát TLS od společnosti Let’s Encrypt

Spuštěním následujícího příkazu nainstalujte klienta Let’s Encrypt (certbot) z výchozího úložiště Ubuntu.

sudo apt install certbot

Doporučuji používat standalone nebo webroot plugin pro získání certifikátu TLS pro Pure-FTPd.

Samostatný plugin

Pokud na vašem serveru Ubuntu není spuštěn žádný webový server, můžete použít samostatný plugin. Spusťte následující příkaz. Nezapomeňte pro svou subdoménu nastavit záznam DNS A.

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

Kde:

  • certonly :Získejte certifikát, ale neinstalujte jej.
  • --standalone :K získání certifikátu použijte samostatný plugin
  • --preferred-challenges http :Proveďte výzvu http-01 k ověření naší domény, která bude používat port 80.
  • --agree-tos :Souhlasíte s podmínkami služby Let’s Encrypt.
  • --email :E-mailová adresa se používá pro registraci a obnovení účtu.
  • -d :Zadejte název své domény.

Jak můžete vidět na následujícím snímku obrazovky, úspěšně jsem získal certifikát.

Použití pluginu webroot

Pokud má váš server Ubuntu webový server, pak je dobré použít k získání certifikátu zásuvný modul webroot, protože zásuvný modul webroot funguje téměř s každým webovým serverem a nemusíme certifikát instalovat na webový server.

Nejprve musíte vytvořit virtuálního hostitele pro ftp.example.com .

Apache

Pokud používáte Apache, pak

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

A vložte do souboru následující řádky.

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

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

Uložte a zavřete soubor. Poté vytvořte kořenový webový adresář.

sudo mkdir /var/www/Pure-FTPd

Nastavte www-data (uživatel Apache) jako vlastníka webového kořenového adresáře.

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

Povolit tohoto virtuálního hostitele.

sudo a2ensite ftp.example.com

Znovu načtěte Apache, aby se změny projevily.

sudo systemctl reload apache2

Jakmile je virtuální hostitel vytvořen a povolen, spusťte následující příkaz a získejte certifikát Let’s Encrypt pomocí pluginu webroot.

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

Nginx

Pokud používáte Nginx, pak

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

Vložte následující řádky do souboru.

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

      root /var/www/Pure-FTPd/;

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

Uložte a zavřete soubor. Poté vytvořte kořenový webový adresář.

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

Nastavte www-data (uživatel Nginx) jako vlastníka webového kořenového adresáře.

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

Znovu načtěte Nginx, aby se změny projevily.

sudo systemctl reload nginx

Jakmile je virtuální hostitel vytvořen a povolen, spusťte následující příkaz a získejte certifikát Let’s Encrypt pomocí pluginu webroot.

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

Krok 4:Instalace certifikátu

Pure-FTPd vyžaduje, aby certifikát a soukromý klíč byly sloučeny do jednoho souboru s názvem pure-ftpd.pem a uloženy pod /etc/ssl/private/ adresář.

Změňte na /etc/letsencrypt/live/ftp.example.com/ adresář.

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

Můžete použít cat příkaz ke spojení dvou souborů do jednoho, jak je uvedeno níže.

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

Ujistěte se, že soubor může číst pouze uživatel root.

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

potřebujeme vygenerovat parametr Diffie-Hellman pomocí:

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

Pokud má váš server jedno jádro CPU, bude to trvat dlouho (asi 10 minut).

Jakmile to uděláte, restartujte Pure-FTPd.

sudo systemctl restart pure-ftpd

Zkontrolujte stav, zda běží.

systemctl status pure-ftpd

Nyní se můžete připojit k vašemu FTP serveru přes TLS.

Pokud používáte správce souborů Nautilus pro připojení k serveru FTP prostřednictvím prostého textu ftp:// protokol

Připojení bude odmítnuto.

Místo ftp:// , musíte použít ftps:// .

Ve výchozím nastavení budou uživatelé FTP přesměrováni na / kořenový adresář na serveru.

Upozorňujeme, že Filezilla ve výchozím nastavení nedůvěřuje žádnému certifikátu (s vlastním podpisem nebo podepsaným CA). Uživatelé se musí sami rozhodnout, že budou certifikátu důvěřovat.

Upozornění na neznámý certifikát FileZilla

A musíte použít protokol FTP explicitní TLS (ftpes://ftp.example.com ) ve Filezille.

Automaticky obnovit certifikát TLS

Chcete-li automaticky obnovit certifikát TLS, můžete vytvořit úlohu Cron. Jednoduše otevřete soubor crontab uživatele root.

sudo crontab -e

Přidejte následující řádek na konec souboru.

@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

Je nutné znovu načíst čistý ftpd, aby vyzvedl nový certifikát a soukromý klíč.


Ubuntu
  1. Jak nastavit FTP server na vašem Raspberry Pi

  2. Jak zabezpečit Nginx pomocí Letsencrypt na Ubuntu 20.04

  3. Jak nainstalovat FTP server na Ubuntu 20.04

  1. Jak nainstalovat FTP server na Ubuntu s vsftpd

  2. Jak nastavit FTP server s VSFTPD na Ubuntu 20.04

  3. Jak nastavit FTP server s VSFTPD na Ubuntu 18.04

  1. Jak nastavit server OpenVPN na Ubuntu 18.04

  2. Jak nastavit bránu firewall s UFW na Ubuntu 20.04

  3. Jak nastavit bloky serveru Nginx na Ubuntu 20.04