温馨提示×

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 与端口。

0