在Debian 9上设置Pure-FTPd和TLS

・7 分钟阅读

Pure-FTPd是一个快速而轻量级的FTP服务器,内置安全性,在本教程中我将通过4个简单的步骤向你展示如何安装和使用Pure-FTPd,本指南说明如何在Debian 9.上安装Pure-FTPdd。

第一步-安装

Pure-FTPd是稳定的Debian存储库,所以,不需要向你的系统添加任何额外的存储库。

使用root权限运行以下命令:


apt install -y pure-ftpd-common pure-ftpd 

第二步-配置

你可以使用许多选项来更改应用程序的行为,这些选项可以在启动时应用到Pure-FTPd守护进程,也可以通过在conf目录中创建必要的文件使它们持久化。

我们要:

  • 创建虚拟用户,
  • 自动为用户创建主目录,
  • 限制(chroot )用户只能访问自己的主目录,

启用Pure-FTPd数据库,并禁用PAM和Unix身份验证以便启用虚拟用户:


ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure
echo no > /etc/pure-ftpd/conf/PAMAuthentication
echo no > /etc/pure-ftpd/conf/UnixAuthentication

设置Pure-FTPd以便在用户第一次登录时为用户创建主目录:


echo"yes" > /etc/pure-ftpd/conf/CreateHomeDir

Chroot任何用户。


echo"yes" > /etc/pure-ftpd/conf/ChrootEveryone

如果你有兴趣了解其他选项,请访问官方网站文档页面

第三步-创建用户

Pure-FTPd可以处理虚拟用户,这意味着它们保存在Pure-FTPd数据库中,并且与Linux系统用户不相关。

为了让Pure-FTPd管理虚拟用户的文件,我们需要创建一个Linux用户和组,所有虚拟用户都会关联,所有虚拟用户都可以使用相同的系统用户和组只要它们已进行了chroooted。

运行以下命令以创建系统用户和组:


groupadd ftpusr
useradd -g ftpusr -d /dev/null -s /etc ftpusr

注:我们不希望此用户拥有主目录或登录功能。

创建我们的FTP root目录:

 
mkdir/home/FTP

 

在Pure-FTPd中创建虚拟用户:


pure-pw useradd alex -u ftpusr -g ftpusr -d /home/FTP/alex 

我们添加了第一个虚拟用户(alex )并将它与系统用户/组(ftpusr )关联,你使用alex编写的所有文件都会由系统上的ftpusr拥有。

更新Pure-FTPd的数据库:

 
pure-pw mkdb

 

检查用户的信息:


pure-pw show alex

Login : alex
Password : <encrypted password>
UID : 1000 (ftpusr)
GID : 1000 (ftpusr)
Directory : /home/FTP/alex/./
Full name : 
Download bandwidth : 0 Kb (unlimited)
Upload bandwidth : 0 Kb (unlimited)
Max files : 0 (unlimited)
Max size : 0 Mb (unlimited)
Ratio : 0:0 (unlimited:unlimited)
Allowed local IPs : 
Denied local IPs : 
Allowed client IPs : 
Denied client IPs : 
Time restrictions : 0000-0000 (unlimited)
Max sim sessions : 0 (unlimited)

使用以下脚本添加FTP帐户,让我们以后更轻松一些:


echo -e '#!/bin/bashnread -p"Enter UserName:" usrnamenpure-pw useradd $usrname -u ftpusr -g ftpusr -d /home/FTP/$usrname && pure-pw mkdb' > /usr/sbin/ftp-createacc

chmod u+x /usr/sbin/ftp-createacc

现在,创建FTP帐户很简单:


ftp-createacc

Enter UserName: mike
Password: 
Enter it again:

步骤4-TLS支持

首先,我们需要安装OpenSSL 。


apt install -y openssl

强制Pure-FTPd使用TLS,或者我们可以使它成为可选的,这意味着不安全和TLS连接都被接受,


# force TLS
echo 2 > /etc/pure-ftpd/conf/TLS

# insecure + TLS
echo 1 > /etc/pure-ftpd/conf/TLS

创建存储密钥的目录。


mkdir -p /etc/ssl/pure-ftpd

生成分发包密钥(私钥和公钥)。


openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

重新启动pure-ftpd守护进程。


systemctl restart pure-ftpd

如果系统上安装了防火墙,或者服务器在NAT后,则必须在Pure-FTPd中定义被动端口,否则会收到错误:


Server sent passive reply with unroutable address. Passive mode failed.

Failed to retrieve directory listing.

500 I won't open a connection to 192.168.1.4 (only to 10.10.10.10).

在Pure-FTPd中设置被动端口:


echo"40110 42210" > /etc/pure-ftpd/conf/PassivePortRange

重新启动pure-ftpd以应用更改。


systemctl restart pure-ftpd

在防火墙中打开从40110到42210的传入端口范围,协议为TCP。

FTP本身上是不安全的,但是,它快速且易于安装,要获得更安全的解决方案,请改用SFTP 。

Hrh profile image