Ubuntu FTP Server 防火墙配置
一 前置准备与模式选择
- 安装并启用 FTP 服务(以 vsftpd 为例):sudo apt update && sudo apt install vsftpd && sudo systemctl enable --now vsftpd。
- 选择传输模式:
- 主动模式:服务器从 20/tcp 主动连接客户端数据端口,通常只需放行服务器的 20/tcp 与 21/tcp。
- 被动模式(PASV):客户端连接服务器随机高位端口,需在服务器与防火墙同时开放一段端口范围(如 30000–31000/tcp),并在 vsftpd 中配置 pasv_min_port/pasv_max_port。
- 建议:公网或 NAT 环境下优先使用被动模式,便于穿越防火墙与云安全组。
二 使用 UFW 放行 FTP
- 启用 UFW:sudo ufw enable;查看状态:sudo ufw status。
- 放行控制与数据端口:
- 主动模式:sudo ufw allow 21/tcp;sudo ufw allow 20/tcp。
- 被动模式:在 vsftpd 配置端口范围后(如 30000–31000/tcp),执行:sudo ufw allow 30000:31000/tcp。
- 重载服务:sudo systemctl restart vsftpd;用 FileZilla 等客户端测试上传/下载。
三 使用 iptables 放行 FTP
- 主动模式常用规则:
- 入站:sudo iptables -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
- 入站:sudo iptables -A INPUT -p tcp --dport 20 -m state --state NEW,ESTABLISHED -j ACCEPT
- 出站:sudo iptables -A OUTPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
- 出站:sudo iptables -A OUTPUT -p tcp --sport 20 -m state --state ESTABLISHED -j ACCEPT
- 被动模式:在 vsftpd 配置端口范围(如 30000–31000/tcp)后,放行该范围:
- 入站:sudo iptables -A INPUT -p tcp --dport 30000:31000 -m state --state NEW,ESTABLISHED -j ACCEPT
- 持久化(Debian/Ubuntu):sudo apt-get install iptables-persistent;sudo netfilter-persistent save。
四 使用 firewalld 放行 FTP(如已安装 firewalld)
- 启动与开机自启:sudo systemctl start firewalld && sudo systemctl enable firewalld。
- 放行规则:
- 直接放行服务与端口:sudo firewall-cmd --permanent --add-service=ftp;sudo firewall-cmd --permanent --add-port=21/tcp;sudo firewall-cmd --permanent --add-port=20/tcp。
- 被动模式端口范围(示例):sudo firewall-cmd --permanent --add-port=30000-31000/tcp。
- 重载:sudo firewall-cmd --reload;查看:sudo firewall-cmd --list-all。
五 vsftpd 与防火墙联动及安全建议
- vsftpd 关键配置(/etc/vsftpd.conf):
- 启用被动模式与端口范围:pasv_enable=YES;pasv_min_port=30000;pasv_max_port=31000。
- 本地用户与写入:local_enable=YES;write_enable=YES;chroot_local_user=YES;allow_writeable_chroot=YES。
- 加密传输(推荐):ssl_enable=YES;rsa_cert_file=/etc/ssl/private/vsftpd.crt;rsa_private_key_file=/etc/ssl/private/vsftpd.key。
- 云环境:除系统防火墙外,还需在云厂商安全组放行 21/tcp 与被动端口范围(如 30000–31000/tcp)。
- 安全建议:优先采用 SFTP/FTPS;避免使用过大的被动端口范围;限制可登录用户与目录;定期更新与审计日志。