GNU/Linux >> Znalost Linux >  >> Debian

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

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

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 Debian 10

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; 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)

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 s

sudo ss -lnpt | grep pure-ftpd

Druhý port je datový port (TCP port 20), který bude použit, když uživatel přenáší soubory přes FTP.

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í varovná zpráva, jako je snímek 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ě Debian 10.

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 Debian 10 neběží žá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 Debian 10 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ář.

sudo su -

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.

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.

Krok 5:Otevřete porty FTP v bráně firewall

Pokud používáte firewall UFW, pak spusťte následující příkaz k otevření TCP portů 20 a 21.

sudo ufw allow 20,21/tcp

Krok 6:Připojte se k serveru FTP

Pokud používáte Nautilus správce souborů pro připojení k FTP serveru pomocí 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.

Vezměte prosím na vědomí, ž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 pure-ftpd aby si vyzvedl nový certifikát a soukromý klíč.


Debian
  1. Jak nainstalovat vsftpd FTP server a zabezpečit jej pomocí TLS na Debian 11

  2. Jak nastavit SFTP server na Debian 11 Server

  3. Jak nastavit server OpenVPN na Debianu 10

  1. Jak nastavit firewall s UFW na Debianu 10

  2. Jak nastavit firewall s UFW na Debianu 9

  3. Nastavte poštovní server pomocí PostfixAdmin na Debianu 9

  1. Jak nastavit FTP server s VSFTPD na Debianu 9

  2. Jak nastavit server OpenVPN na Debianu 9

  3. Jak nastavit Minecraft Server na Debianu 10