如何在Ubuntu上使用Pure-FTPd设置安全FTP服务器

Pure-FTPd是一个免费的开源FTP服务器,其设计考虑到安全性。 在本教程中,我们将研究如何在具有Pure-FTPd的Ubuntu服务器上设置安全的FTP服务器以及如何实施TLS加密。

注意:本教程适用于所有当前的Ubuntu版本,包括Ubuntu 20.04、19.10、18.04和16.04。

纯FTPd功能:

  • 它支持SSL / TLS加密,因此可以保护密码和命令。
  • 它可以在大多数类似Unix的系统上运行:Linux,BSD,Solaris,Darwin,HPUX,AIX甚至iPhone。
  • 提供21种语言的版本。
  • 允许您监视活动的会话。
  • 支持虚拟配额系统。
  • 以及更多

有关功能的完整列表,请访问Pure-FTPd官方网站。

步骤1:在Ubuntu Server上安装Pure-FTPd

它在软件存储库中,因此发出以下命令来安装FTP服务器。

sudo apt install pure-ftpd

一旦安装,Pure-FTPd将自动启动,如以下命令所示:

systemctl status pure-ftpd

输出:

● 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 表示它将在系统启动时自动启动。 如果它没有运行,请给它加注星标:

sudo systemctl start pure-ftpd

而且它正在侦听TCP端口21,这是控制端口,可以看到

sudo netstat -lnpt | grep pure-ftpd

默认情况下,匿名访问是禁用的。 从现在开始,您可以使用系统帐户登录,但是纯文本FTP是不安全的,因此不建议使用。 为了拥有安全的FTP服务器,我们需要使用TLS加密通信。

步骤2:强制执行TLS加密

要同时启用纯文本加密和TLS加密,请运行以下命令,以创建 /etc/pure-ftpd/conf/TLS 文件,然后将数字1放入文件中。

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

但是建议禁用纯文本并仅使用TLS加密,因此将数字2替换为文件。

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

现在我们实施了TLS,我们需要获取有效的TLS证书。 不建议使用自签名证书,因为用户将看到以下屏幕截图所示的警告。

鹦鹉螺ftps

步骤3:从“让我们加密”获取受信任的TLS证书

运行以下命令从默认的Ubuntu存储库安装Let’s Encrypt客户端(certbot)。

sudo apt install certbot

我建议使用 standalone 要么 webroot 插件以获取Pure-FTPd的TLS证书。

独立插件

如果您的Ubuntu服务器上没有运行Web服务器,则可以使用独立插件。 运行以下命令。 不要忘记为您的子域设置DNS A记录。

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

哪里:

  • certonly:获取证书但不安装。
  • --standalone:使用独立插件获取证书
  • --preferred-challenges http:执行http-01挑战以验证我们的域,该域将使用端口80。
  • --agree-tos:同意“让我们加密服务条款”。
  • --email:电子邮件地址用于帐户注册和恢复。
  • -d:指定您的域名。

从以下屏幕截图中可以看到,我已成功获得证书。

pure-ftpd ubuntu服务器强制执行TLS加密

使用webroot插件

如果您的Ubuntu服务器具有Web服务器,则最好使用webroot插件来获取证书,因为webroot插件几乎可以与每个Web服务器一起使用,并且我们不需要在Web服务器中安装证书。

首先,您需要创建一个虚拟主机 ftp.example.com

阿帕奇

如果您使用的是Apache,则

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

并将以下行粘贴到文件中。

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

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

保存并关闭文件。 然后创建Web根目录。

sudo mkdir /var/www/Pure-FTPd

将www-data(Apache用户)设置为Web根目录的所有者。

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

启用此虚拟主机。

sudo a2ensite ftp.example.com

重新加载Apache以使更改生效。

sudo systemctl reload apache2

创建并启用虚拟主机后,运行以下命令以使用webroot插件获取Let’s Encrypt证书。

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

Nginx的

如果您使用的是Nginx,则

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

将以下行粘贴到文件中。

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

      root /var/www/Pure-FTPd/;

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

保存并关闭文件。 然后创建Web根目录。

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

将www-data(Nginx用户)设置为Web根目录的所有者。

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

重新加载Nginx以使更改生效。

sudo systemctl reload nginx

创建并启用虚拟主机后,运行以下命令以使用webroot插件获取Let’s Encrypt证书。

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

步骤4:安装证书

Pure-FTPd要求将证书和私钥合并到一个名为 pure-ftpd.pem 并存储在 /etc/ssl/private/ 目录。

更改为 /etc/letsencrypt/live/ftp.example.com/ 目录。

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

您可以使用 cat 命令将两个文件合并为一个,如下所示。

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

确保只有root用户才能读取该文件。

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

我们需要使用以下命令生成Diffie-Hellman参数:

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

如果您的邮件服务器具有单个CPU内核,那么这将花费很长时间(大约10分钟)。

重新启动Pure-FTPd。

sudo systemctl restart pure-ftpd

检查状态以查看其是否正在运行。

systemctl status pure-ftpd

现在,您可以通过TLS连接到FTP服务器。

如果您使用Nautilus文件管理器通过纯文本连接到FTP服务器 ftp:// 协议

nautilus连接到ftp服务器

连接将被拒绝。

此服务器不接受明文会话

代替 ftp://,您必须使用 ftps://

请注意,默认情况下,Filezilla不信任任何证书(自签名或CA签名)。 用户必须选择自己信任证书。

filezilla未知证书

FileZilla未知证书警告

包起来

我希望本教程可以帮助您在Ubuntu上使用Pure-FTPd设置安全的FTP服务器。 与往常一样,如果您发现此帖子有用,请订阅我们的免费新闻通讯。 您也可以在Twitter或关注我们的Facebook页面上关注我们。

Sidebar