pure-ftpd是一个快速而轻量级的FTP服务器,它内置了安全性。在本教程中,我将向您展示如何在4个简单的步骤中安装和使用纯FTP。本指南解释了如何在Debian 9上安装纯FTPd。
第一步,安装
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在第一次登录时为用户创建home目录:
echo "yes" > /etc/pure-ftpd/conf/CreateHomeDir
Chroot每个人。
echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone
如果您有兴趣了解其他选项,请访问官方文档页面。
步骤三——创建用户
pure-ftpd可以处理虚拟用户,这意味着它们被保存在pure-ftpd的数据库中,与Linux系统用户无关。
为了使pure - ftpd能够管理与虚拟用户的文件,我们需要创建一个Linux用户和组,其中所有的虚拟用户都将被关联。所有虚拟用户都可以使用相同的系统用户和组,只要它们已经被根。
运行以下命令创建系统用户和组:
groupadd ftpusr useradd -g ftpusr -d /dev/null -s /etc ftpusr
注意:我们不希望这个用户拥有一个主目录或登录功能。
创建我们的FTP根目录:
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/bash\nread -p "Enter UserName: " usrname\npure-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:
步骤四- 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
生成一个bundle key(私钥和公钥)。
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代替。