1. 安装vsftpd
首先更新系统软件包列表并安装vsftpd,确保使用最新版本以修复已知漏洞:
sudo apt update && sudo apt install vsftpd
2. 基础安全配置(/etc/vsftpd.conf)
编辑vsftpd主配置文件,启用关键安全选项:
anonymous_enable=NO
chroot将本地用户锁定在自己的家目录,防止越权访问系统文件。local_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES # 允许chroot目录可写(避免用户无法上传文件)
write_enable=YES
local_umask=022 # 设置默认文件权限为755(目录)/644(文件)
3. 强制SSL/TLS加密(数据传输安全)
FTP协议默认明文传输,易被窃听或篡改。通过SSL/TLS加密数据流,确保传输安全:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
vsftpd.conf中启用SSL并强制使用:ssl_enable=YES
force_local_data_ssl=YES # 强制数据传输加密
force_local_logins_ssl=YES # 强制登录过程加密
ssl_tlsv1=YES # 仅使用TLSv1及以上安全协议
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
4. 访问控制(用户与IP限制)
/etc/vsftpd.userlist文件指定允许登录的用户(userlist_enable=YES且userlist_deny=NO),或禁止特定用户(userlist_deny=YES)。/etc/hosts.allow和/etc/hosts.deny限制访问IP,例如禁止某IP段:echo "vsftpd: 192.168.1.100" | sudo tee -a /etc/hosts.deny
5. 防火墙配置(开放必要端口)
使用ufw(Uncomplicated Firewall)开放FTP服务端口及被动模式端口范围,确保客户端能正常连接:
sudo ufw allow 21/tcp # FTP控制端口(默认)
sudo ufw allow 1024:1048/tcp # 被动模式数据端口范围(根据实际情况调整)
sudo ufw enable # 启用防火墙
6. 日志与监控(安全审计)
启用详细日志记录,便于追踪异常活动和排查问题:
xferlog_enable=YES
xferlog_std_format=YES
log_ftp_protocol=YES # 记录FTP协议交互细节
日志文件默认位于/var/log/vsftpd.log,定期检查该文件以发现可疑行为(如大量失败登录尝试)。
7. 其他高级安全措施
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=NO
sudo apt update && sudo apt upgrade -y