在 Ubuntu 上搭建 FTP 服务器(常见为 vsftpd 或 ProFTPD),防入侵的核心思路是:最小权限、加密传输、严格访问控制、日志监控、系统级防护。下面以最常用的 vsftpd 为例说明。
sudo apt install vsftpd
sudo nano /etc/vsftpd.conf
关键配置:
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
chroot可防止用户访问系统其他目录
避免直接使用系统账号登录 FTP。
示例:
pam + 虚拟用户vsftpd + db_load 用户库虚拟用户只能访问指定目录,入侵影响可控。
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
force_local_logins_ssl=YES
force_local_data_ssl=YES
客户端必须使用 FTPS,明文密码不会被抓包。
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
只在列表中用户可登录。
sudo ufw allow from 192.168.1.0/24 to any port 21
sudo ufw enable
或只允许公司/固定 IP。
listen_port=2121
sudo apt install fail2ban
sudo nano /etc/fail2ban/jail.local
[vsftpd]
enabled = true
port = 21
maxretry = 3
bantime = 3600
sudo apt update && sudo apt upgrade
xferlog_enable=YES
log_ftp_protocol=YES
检查:
sudo tail -f /var/log/vsftpd.log
如果不是必须用 FTP:
如果你愿意,我可以: