Linux vsftpd防火墙设置:保护服务器安全
FTP服务依赖控制连接(默认端口21,用于身份验证)和数据连接(动态端口,用于文件传输)。为确保vsftpd正常工作,需先开放这些基础端口:
sudo ufw allow 21/tcpsudo firewall-cmd --permanent --add-port=21/tcpsudo ufw allow 20/tcpsudo firewall-cmd --permanent --add-port=20/tcpsudo ufw allow 40000:50000/tcpsudo firewall-cmd --permanent --add-port=40000-50000/tcp修改防火墙规则后,需保存配置以确保重启后生效:
sudo ufw reload(无需额外保存,ufw会自动持久化规则)。sudo firewall-cmd --reload(重新加载规则,--permanent参数确保规则永久保存)。firewalld内置了FTP服务模块,可自动处理控制连接、数据连接及被动模式的端口范围,无需手动指定端口:
sudo firewall-cmd --permanent --add-service=ftpsudo firewall-cmd --reload
此方法会自动开放FTP所需端口,并支持动态端口调整,适合新手快速配置。若FTP服务器仅需内部网络或特定IP访问,可通过防火墙限制源IP地址:
sudo ufw allow from 192.168.1.0/24 to any port 21/tcp(仅允许192.168.1.0/24网段访问21端口)。sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="21" accept'。SELinux可为FTP服务提供额外的访问控制,需调整相关布尔值以允许vsftpd正常工作:
sudo setsebool -P ftp_home_dir 1(默认情况下,SELinux禁止FTP用户写入家目录)。sudo setsebool -P allow_ftpd_anon_write 1(默认值为0,禁止写入)。配置完成后,需通过以下方式验证防火墙是否允许FTP流量:
sudo ufw status(ufw)或sudo firewall-cmd --list-all(firewalld)确认规则已正确应用。