如何在 Debian 11 上安装 vsftpd FTP 服务器并使用 TLS 保护它
本教程适用于这些操作系统版本
- Debian 11(Bullseye)
- Debian 6(Squeeze)
在此页
- 先决条件
- 1。安装 Vsftpd
- 2。创建 FTP 用户并配置 FTP 登录
- 3。创建FTP用户目录
- 4。配置 Vsftpd
- 5。在防火墙中允许 vsftpd 并访问 vsftpd 服务器
- 6。使用 SSL/TLS 保护 Vsftpd
- 7.通过 SSL/TLS 访问 FTP
- 结论
文件传输协议或 FTP 是一个非常古老且最著名的网络协议之一。如今与 SFTP 或 SCP 相比,它并不安全,但仍然是许多用户在服务器和客户端之间传输文件的首选。 FTP 被认为是不安全的,因为它在没有任何类型的加密的情况下传输数据和用户凭据。
现在我们有大量可用的开源 FTP 服务器,例如 FTPD、VSFTPD、PROFTPD 和 pureftpd。其中,VSFTPD 是一种非常安全、快速且使用最广泛的协议,用于在两个系统之间传输文件。
VSFTPD 也被称为“非常安全的文件传输协议守护进程”,支持 SSL , IPv6, 显式和隐式 FTPS。
在本指南中,我们将向您展示如何在 Debian 11 上安装 vsftpd FTP 服务器。
先决条件
运行 Debian 11 的服务器。
具有 sudo 权限的非根用户。
1.安装Vsftpd
在开始安装之前,通过在终端中执行以下命令来更新您的 Debian 11 服务器:
sudo apt update -y
sudo apt upgrade -y
Debian 有一个非常大的存储库,官方存储库中提供了 vsftpd 包,因此您可以通过运行以下命令轻松安装 vsftpd:
sudo apt install vsftpd -y
安装包后,启动Vsftpd服务,检查服务状态,启动时启用服务。
sudo systemctl start vsftpd
sudo systemctl status vsftpd
systemctl enable vsftpd.service
2、创建FTP用户并配置FTP登录
现在,为 FTP 创建一个新的用户帐户,稍后我们将使用该用户登录 FTP 服务器。
sudo adduser sohan
在vsftpd.userlist 文件中添加的用户具有访问FTP 服务器的权限。
接下来,我们需要在vsftpd 用户列表中添加sohan 用户。打开文件并通过执行以下命令添加用户:
echo "sohan" | sudo tee -a /etc/vsftpd.userlist
3.创建FTP用户目录
接下来,我们需要为我们的 FTP 用户创建一个 FTP 目录,并使用以下命令设置所有权:
sudo mkdir -p /home/sohan/ftp_directory
sudo chown nobody:nogroup /home/sohan/ftp_directory
sudo chmod a-w /home/sohan/ftp_directory
现在,创建一个可以上传文件的目录,并通过执行命令将所有权授予 sohan 用户:
sudo mkdir -p /home/sohan/ftp_directory/ftp_data
sudo chown sohan:sohan /home/sohan/ftp_directory/ftp_data
cd /home/sohan/ftp_directory/
chmod -R 777 ftp_data

4.配置Vsftpd
接下来,您需要更改一些默认参数以设置 FTP 服务器。
首先,创建原始 vsftpd 配置文件的备份副本。
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
在 FTP 服务器中,匿名用户默认被授予访问权限。为了使 FTP 服务器更安全,我们将禁用匿名用户登录,只授予特定用户访问权限。
接下来,打开 vsftpd.conf 文件并进行如下更改:
vim /etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES
我们需要在配置中进行一些其他更改,首先打开 vsftpd.conf
sudo vim /etc/vsftpd.conf
接下来,确保 vsftpd.conf 应包含以下行:
listen=NO
listen_ipv6=YES
anonymous_enable=NO
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
user_sub_token=$USER
local_root=/home/$USER/ftp_directory
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
保存并关闭文件。您可以根据需要更改上述配置。
现在重启vsftpd服务并通过执行以下命令检查服务状态:
sudo systemctl restart vsftpd
接下来,通过在终端中执行以下命令确保vsftpd服务处于运行状态:
sudo systemctl status vsftpd
5.在防火墙中允许vsftpd并访问vsftpd服务器
接下来,如果您使用的是防火墙,则通过运行以下命令允许端口 21 和端口 22:
sudo ufw allow 21/tcp
sudo ufw allow 22/tcp
然后重新加载防火墙以应用更改:
sudo ufw reload
接下来,打开任何 FTP 客户端(如 FileZilla)并输入您的服务器详细信息,如协议、主机、用户:


然后,它将显示如下详细信息,单击“确定”。

此时,您已连接到 FTP 服务器,您可以上传和下载文件/文件夹。

6. 使用 SSL/TLS 保护 Vsftpd
假设您想通过 FTP 传输加密数据,为此您需要创建 SSL 证书并需要启用 SSL/TLS 连接。
您可以使用以下命令使用 OpenSSL 创建证书:
sudo mkdir /etc/cert
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/cert/vsftpd.pem -out /etc/cert/vsftpd.pem
现在,您需要编辑 vsftpd.conf 文件并进行一些更改:
sudo vim /etc/vsftpd.conf
最后添加以下几行:
rsa_cert_file=/etc/cert/vsftpd.pem
rsa_private_key_file=/etc/cert/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
保存并退出文件,然后使用以下命令重新启动 Vsftpd:
sudo systemctl restart vsftpd
7. 通过 SSL/TLS 访问 FTP

接下来,输入您的密码:



结论
在上面的指南中,我们在 Debian 11 上安装了 VSFTPD 服务器。我们还学习了如何使用 SSL 证书通过非加密和加密连接进行连接。