Linux vsftp防火墙设置:如何确保安全
小樊
41
2025-12-06 05:38:30
Linux vsftpd 防火墙设置与安全加固
一、基础防火墙放行
- 使用 firewalld(CentOS/RHEL、Fedora)
- 放行控制连接与数据端口,并指定被动模式端口范围(示例为30000–31000):
- 命令: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
- 说明:FTP 控制通道使用21/tcp,主动模式数据通道使用20/tcp,被动模式数据通道使用配置的范围端口。以上端口需与 vsftpd 的被动端口设置保持一致。
- 使用 UFW(Ubuntu/Debian)
- 放行控制与被动端口范围:
- 命令:sudo ufw allow 21/tcp
- 命令:sudo ufw allow 20/tcp
- 命令:sudo ufw allow 30000:31000/tcp
- 说明:UFW 规则简洁,适合快速启用与限制访问。
二、vsftpd 关键配置与防火墙联动
- 基本安全基线(/etc/vsftpd.conf)
- 禁用匿名:anonymous_enable=NO
- 启用本地用户:local_enable=YES
- 启用写入:write_enable=YES
- 限制用户在主目录:chroot_local_user=YES
- 日志:xferlog_enable=YES,xferlog_std_format=YES
- 被动模式端口范围(与防火墙一致)
- pasv_min_port=30000
- pasv_max_port=31000
- SELinux 与访问控制
- 启用 SELinux 布尔值以允许 FTP 访问用户家目录:setsebool -P ftp_home_dir 1
- 如需更宽松策略(仅在明确需要时):setsebool -P ftpd_full_access 1
- 说明:SELinux 可能限制 FTP 访问与目录写入,需按策略放行。
三、启用加密传输
- 生成自签名证书(示例)
- 命令:sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.crt
- vsftpd 启用 TLS/SSL(/etc/vsftpd.conf)
- ssl_enable=YES
- rsa_cert_file=/etc/ssl/certs/vsftpd.crt
- rsa_private_key_file=/etc/ssl/private/vsftpd.key
- 建议:force_local_data_ssl=YES,force_anon_data_ssl=YES,ssl_tlsv1_2=YES,并禁用不安全协议(ssl_sslv2/ssl_sslv3=NO)
- 客户端连接
- 使用支持 FTPS(FTP over SSL/TLS) 的客户端(如 FileZilla),端口为21,数据通道使用前述被动端口范围。
四、端口与访问控制优化
- 限制来源 IP(示例)
- firewalld:sudo firewall-cmd --permanent --add-rich-rule=‘rule family=“ipv4” source address=“203.0.113.10/32” port port=“21” protocol=“tcp” accept’
- UFW:sudo ufw allow from 203.0.113.10 to any port 21
- 修改默认端口(可选)
- 在 vsftpd.conf 中设置:listen_port=2121
- 同时更新防火墙放行新端口,并重启 vsftpd 服务
- 说明:更改端口并不能提升本质安全,但可降低自动化扫描命中率。
五、验证与运维
- 连通性与被动端口验证
- 使用 FileZilla/命令行客户端测试登录、上传与下载
- 服务器端查看端口监听:ss -lntp | grep vsftpd
- 抓包验证数据通道:sudo tcpdump -ni any -s0 -w ftp.pcap ‘tcp port 21 or (tcp portrange 30000-31000)’,随后用 Wireshark 分析
- 日志与审计
- 检查传输日志:tail -f /var/log/vsftpd.log 或 /var/log/xferlog
- 定期审计登录与传输行为,结合系统日志进行安全监测
- 安全提示
- 若无需明文 FTP,优先使用 SFTP(基于 SSH) 或 FTPS;在云环境建议结合安全组仅放通必要来源 IP 与端口。