1. 选择安全FTP软件并保持更新
优先使用vsftpd(Very Secure FTP Daemon)作为FTP服务器软件,其以安全特性著称。定期通过sudo apt update && sudo apt upgrade更新系统和vsftpd至最新版本,及时修补已知漏洞。
2. 严格配置vsftpd核心参数
编辑/etc/vsftpd.conf文件,启用以下关键安全设置:
anonymous_enable=NO,防止未授权用户上传/下载文件;chroot_local_user=YES(将用户限制在自己的家目录)、allow_writeable_chroot=YES(允许家目录可写,避免权限冲突);write_enable=YES(允许本地用户写入),但可通过chmod限制特定目录的写入权限;anon_upload_enable=NO)、匿名创建目录(anon_mkdir_write_enable=NO)等功能。3. 强制使用TLS/SSL加密传输
FTP协议默认明文传输数据,易被窃听。通过以下步骤启用加密:
sudo apt install openssl;sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem /etc/vsftpd.conf,添加加密配置:ssl_enable=YES force_local_data_ssl=YES # 强制数据传输加密 force_local_logins_ssl=YES # 强制登录过程加密 ssl_tlsv1=YES # 仅使用TLSv1及以上安全协议 ssl_sslv2=NO # 禁用SSLv2(不安全) ssl_sslv3=NO # 禁用SSLv3(不安全) rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem sudo systemctl restart vsftpd。4. 配置防火墙限制访问
使用ufw(Uncomplicated Firewall)配置规则,仅允许可信IP访问FTP端口:
sudo ufw allow 21/tcp;sudo ufw allow 30000:31000/tcp;sudo ufw enable;sudo ufw allow from <trusted_ip> to any port 21。5. 限制用户访问权限
sudo adduser ftpuser sudo usermod -d /home/ftpuser -s /sbin/nologin ftpuser # 禁止shell登录 sudo chown -R ftpuser:ftpuser /home/ftpuser # 设置目录所有权 /etc/vsftpd.chroot_list文件,列出允许访问FTP的用户,然后在/etc/vsftpd.conf中启用:chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list /etc/ssh/sshd_config禁用root远程登录(若使用SFTP):PasswordAuthentication no PubkeyAuthentication yes PermitRootLogin no 重启SSH服务:sudo systemctl restart ssh。6. 使用SFTP替代传统FTP(可选但推荐)
SFTP(SSH File Transfer Protocol)通过SSH加密通道传输数据,无需额外配置FTP服务,安全性更高:
sudo apt install openssh-server;/etc/ssh/sshd_config,启用SFTP子系统:Subsystem sftp /usr/lib/openssh/sftp-server sudo systemctl restart ssh。7. 强化密码与认证策略
/etc/pam.d/common-password强化密码复杂度:password requisite pam_pwquality.so retry=3 minlen=8 difok=3 ~/.ssh/authorized_keys文件,禁用密码认证。8. 监控与日志审计
/etc/vsftpd.conf中添加:xferlog_enable=YES xferlog_std_format=YES log_ftp_protocol=YES # 记录详细协议信息 tail -f /var/log/vsftpd.log实时查看登录和传输记录,或通过grep筛选异常行为(如多次失败登录)。9. 定期进行安全审计
lynis)检查系统漏洞:sudo lynis audit system;rsync或tar定期备份FTP目录至安全位置。