在开始安装vsftpd前,建议先更新系统软件包列表,确保后续安装的软件版本为最新:
sudo apt update && sudo apt upgrade -y
使用Debian官方软件源安装vsftpd(默认仓库已包含该软件):
sudo apt install vsftpd -y
vsftpd的主配置文件位于/etc/vsftpd.conf,需通过文本编辑器(如nano)修改配置:
sudo nano /etc/vsftpd.conf
基础安全设置:
anonymous_enable=NO:禁止匿名用户登录(提升安全性,避免未授权访问)。local_enable=YES:允许本地系统用户登录FTP服务器。write_enable=YES:允许本地用户上传文件(若需上传功能,必须开启)。chroot_local_user=YES:将本地用户限制在其主目录(如/home/ftpuser),防止访问系统其他目录。allow_writeable_chroot=YES:允许chroot目录可写(若chroot_local_user=YES且用户目录需上传文件,必须开启,否则会导致权限错误)。被动模式设置(可选,推荐):
pasv_enable=YES:启用被动模式(解决FTP在防火墙/NAT环境下的连接问题)。pasv_min_port=1024:被动模式最小端口(可根据需求调整,如10000)。pasv_max_port=1048:被动模式最大端口(需与pasv_min_port保持合理范围,避免占用过多端口)。日志设置(可选,推荐):
xferlog_enable=YES:启用传输日志(记录用户上传/下载行为,便于审计)。xferlog_std_format=YES:使用标准传输日志格式(兼容大多数日志分析工具)。修改完成后,按Ctrl+O保存文件,按Ctrl+X退出编辑器。
为FTP服务创建专用用户(避免使用root账户),并设置其家目录权限:
创建用户:
sudo useradd -m ftpuser -d /home/ftpuser
-m:自动创建用户家目录(/home/ftpuser)。-d /home/ftpuser:指定用户家目录路径。设置用户密码:
sudo passwd ftpuser
按提示输入并确认密码(密码需具备一定复杂度,避免被猜测)。
设置目录权限:
sudo chown ftpuser:ftpuser /home/ftpuser
sudo chmod 755 /home/ftpuser
chown:将家目录所有者设为ftpuser(确保用户对其家目录有完全控制权)。chmod 755:设置目录权限(所有者可读/写/执行,其他用户可读/执行)。若系统启用了ufw防火墙,需允许FTP流量通过(包括控制连接、数据连接及被动模式端口):
允许FTP控制连接(端口21):
sudo ufw allow 21/tcp
允许FTP数据连接(端口20,若使用主动模式):
sudo ufw allow 20/tcp
允许被动模式端口范围(示例为1024-1048):
sudo ufw allow 1024:1048/tcp
启用防火墙:
sudo ufw enable
重新加载防火墙规则:
sudo ufw reload
配置完成后,启动vsftpd服务并设置为开机自启:
启动服务:
sudo systemctl start vsftpd
设置开机自启:
sudo systemctl enable vsftpd
检查服务状态:
sudo systemctl status vsftpd
若显示active (running),则表示服务已成功启动。
使用FTP客户端(如FileZilla、WinSCP或命令行工具ftp)测试连接:
打开FTP客户端,输入以下信息:
192.168.1.100)。ftpuser(步骤四创建的用户)。21(默认FTP端口)。连接测试:
/home/ftpuser目录(因配置了chroot_local_user=YES)。test.txt),验证write_enable=YES是否生效。为避免FTP传输数据(如用户名、密码、文件内容)被窃取,建议启用SSL/TLS加密:
生成SSL证书与私钥:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
-days 365:证书有效期(365天,可根据需求调整)。-newkey rsa:2048:生成2048位的RSA密钥。-keyout/-out:指定证书与私钥的保存路径(同一文件,因自签名证书无需分开)。修改vsftpd配置(启用SSL):
编辑/etc/vsftpd.conf,添加以下配置:
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
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
重启vsftpd服务:
sudo systemctl restart vsftpd
客户端配置: 在FTP客户端中,选择“SSL/TLS”连接模式(如FileZilla的“FTP over TLS”),即可实现加密传输。
write_enable=YES是否开启,以及家目录权限是否正确(chmod 755)。anonymous_enable=NO),并启用SSL/TLS加密(避免数据泄露)。