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íč.