温馨提示×

centos vsftp如何防火墙设置

小樊
48
2025-11-11 20:29:03
栏目: 智能运维

CentOS系统vsftpd防火墙配置指南

一、基础防火墙规则配置(控制端口+数据端口)

vsftpd作为FTP服务器,需开放控制端口(21/tcp,用于命令传输)数据端口(20/tcp,用于主动模式数据传输),确保客户端能建立连接并传输数据。

  • CentOS 7及以上版本(使用firewalld)
    执行以下命令永久添加21/tcp端口,并重载防火墙使配置生效:
    sudo firewall-cmd --permanent --add-port=21/tcp
    sudo firewall-cmd --reload
    
  • CentOS 6及以下版本(使用iptables)
    编辑/etc/sysconfig/iptables文件,在-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT行前添加规则,保存后重启iptables:
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
    service iptables restart
    

二、被动模式(PASV)端口范围配置

vsftpd的被动模式(PASV)用于解决客户端位于防火墙后的连接问题,需开放一个动态端口范围(如10000-10010、60000-65535等,根据实际情况调整)。

  • CentOS 7及以上版本
    执行以下命令永久添加被动模式端口范围,并重载防火墙:
    sudo firewall-cmd --permanent --add-port=10000-10010/tcp  # 替换为你的实际端口范围
    sudo firewall-cmd --reload
    
  • CentOS 6及以下版本
    编辑/etc/sysconfig/iptables文件,添加以下规则(替换为你的实际端口范围):
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 10000:10010 -j ACCEPT
    service iptables restart
    

    注:vsftpd配置文件(/etc/vsftpd/vsftpd.conf)中需开启被动模式并指定端口范围,例如:

    pasv_enable=YES
    pasv_min_port=10000
    pasv_max_port=10010
    

三、SELinux策略配置(若启用)

若系统SELinux处于enforcing模式,需调整策略以允许vsftpd访问用户目录及执行被动模式:

  • 允许FTP访问用户家目录:
    sudo setsebool -P ftp_home_dir on
    
  • 允许vsftpd完全访问(如上传、下载文件):
    sudo setsebool -P allow_ftpd_full_access on
    
  • 若使用被动模式,需设置FTP目录的SELinux上下文(假设用户目录为/home/ftpuser):
    sudo chcon -Rv --type=public_content_t /home/ftpuser
    

四、验证防火墙配置

  • 查看firewalld当前开放的FTP相关端口(CentOS 7及以上):
    sudo firewall-cmd --list-all | grep ftp
    
    输出应包含ftp服务及自定义的被动模式端口范围。
  • 测试FTP连接:使用FTP客户端(如FileZilla)连接服务器IP,输入用户名和密码,验证是否能正常登录及传输文件(上传/下载)。

0