Ubuntu默认使用**UFW(Uncomplicated Firewall)**作为防火墙管理工具。若未安装,可通过以下命令安装并启用:
sudo apt update
sudo apt install ufw
sudo ufw enable # 启用防火墙(默认拒绝所有入站连接)
sudo apt install vsftpd
编辑配置文件/etc/vsftpd.conf(使用nano或vim):
sudo nano /etc/vsftpd.conf
根据需求调整以下关键参数(确保以下配置存在或取消注释):
listen=YES # 启用独立监听模式(IPv4)
listen_ipv6=NO # 禁用IPv6(若无需IPv6)
anonymous_enable=NO # 禁止匿名用户登录
local_enable=YES # 允许本地用户登录
write_enable=YES # 允许写操作(上传/删除文件)
chroot_local_user=YES # 将本地用户限制在其主目录(增强安全性)
allow_writeable_chroot=YES # 允许chroot目录可写(避免权限问题)
pasv_enable=YES # 启用被动模式(必需,否则无法通过防火墙传输数据)
pasv_min_port=50000 # 被动模式最小端口(自定义范围)
pasv_max_port=50100 # 被动模式最大端口(自定义范围,建议预留100+端口)
保存并退出编辑器(Ctrl+O→Enter→Ctrl+X)。
sudo systemctl restart vsftpd
sudo systemctl enable vsftpd # 设置开机自启
FTP的控制连接(用于发送命令)默认使用端口21,必须允许:
sudo ufw allow 21/tcp
FTP的数据连接分为两种模式,需根据实际情况配置:
sudo ufw allow 20/tcp
vsftpd.conf中的pasv_min_port/pasv_max_port一致),需允许该端口范围:sudo ufw allow 50000:50100/tcp # 替换为你的实际端口范围
若需更灵活地允许FTP状态跟踪(如已建立的连接),可添加以下规则:
sudo ufw allow proto tcp from any to any port 21/tcp
sudo ufw allow proto tcp from any to any port 20/tcp
sudo ufw allow proto tcp from any to any port 50000:50100/tcp
sudo ufw reload # 应用新规则
检查UFW状态,确认规则已生效:
sudo ufw status verbose
预期输出应包含以下内容(端口范围根据你的配置调整):
Status: active
To Action From
-- ------ ----
21/tcp ALLOW Anywhere
20/tcp ALLOW Anywhere
50000:50100/tcp ALLOW Anywhere
21/tcp (v6) ALLOW Anywhere (v6)
20/tcp (v6) ALLOW Anywhere (v6)
50000:50100/tcp (v6) ALLOW Anywhere (v6)
使用FTP客户端(如FileZilla)连接服务器:
若能正常登录并上传/下载文件,则说明防火墙规则配置成功。
vsftpd.conf中的pasv_min_port/pasv_max_port与UFW规则中的端口范围一致,否则会导致数据传输失败。sudo ufw allow 22/tcp)。vsftpd.conf中的ssl_enable=YES并配置证书),进一步提升FTP传输安全性。