在配置防火墙前,需先完成vsftpd的安装与基础配置,确保FTP服务正常运行。
使用apt包管理器安装vsftpd:
sudo apt update
sudo apt install vsftpd
编辑vsftpd主配置文件/etc/vsftpd.conf,调整以下关键参数(以安全性和常用功能为例):
sudo nano /etc/vsftpd.conf
listen=YES(避免通过xinetd管理,提升稳定性);listen_ipv6=NO(若无需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个端口,避免连接超时)。配置完成后,保存文件并重启vsftpd服务使更改生效:
sudo systemctl restart vsftpd
Ubuntu默认使用**UFW(Uncomplicated Firewall)**作为防火墙管理工具,以下是针对vsftpd的防火墙配置步骤:
若尚未启用UFW,执行以下命令:
sudo ufw enable
启用后,UFW会默认阻止所有入站连接,仅允许出站连接。
FTP控制连接用于客户端与服务器之间的命令交互(如登录、切换目录),默认使用21端口,需明确允许:
sudo ufw allow 21/tcp
FTP数据连接用于文件传输,分为主动模式和被动模式,需根据实际使用场景配置:
主动模式:服务器主动连接客户端的动态端口(范围1024-65535),需允许该端口范围:
sudo ufw allow 1024:65535/tcp
注:主动模式需客户端开放高端口,易受防火墙拦截,建议优先使用被动模式。
被动模式:客户端主动连接服务器的指定端口范围(需与vsftpd配置中的pasv_min_port/pasv_max_port一致),例如允许50000-50100端口:
sudo ufw allow 50000:50100/tcp
执行以下命令确认规则是否生效:
sudo ufw status
正常输出应包含以下内容(以被动模式为例):
21/tcp ALLOW Anywhere
50000:50100/tcp ALLOW Anywhere
若修改了UFW规则,需重新加载以应用更改:
sudo ufw reload
若客户端提示“无法建立数据连接”,需检查:
pasv_min_port/pasv_max_port是否与UFW开放的端口范围一致;若客户端提示“服务器拒绝连接”,需检查:
若需使用iptables配置,可参考以下命令(需提前安装iptables-persistent保存规则):
# 允许FTP控制连接
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
# 允许FTP数据连接(主动模式)
sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT
# 允许FTP数据连接(被动模式)
sudo iptables -A INPUT -p tcp --dport 50000:50100 -j ACCEPT
# 保存规则
sudo apt install iptables-persistent
sudo netfilter-persistent save
通过以上步骤,即可完成Ubuntu系统下vsftpd与防火墙的配置,确保FTP服务安全、稳定地运行。