FTP —— vsftpd

在 CentOS 上搭建一个安全可用的 FTP 服务器,最常用和推荐的工具是 ​vsftpd(Very Secure FTP Daemon)。

📦 安装 vsftpd

  1. ​安装软件​

    • sudo yum update -y
      sudo yum install vsftpd -y

       

  2. 核心配置:编辑/etc/vsftpd.conf
    • # 禁用匿名登录(重要安全设置)
      anonymous_enable=NO
      # 允许本地系统用户登录
      local_enable=YES
      # 允许用户上传/删除文件等写操作
      write_enable=YES
      # 将用户限制在其家目录中,防止其访问系统其他目录
      chroot_local_user=YES
      # 允许在"chroot"禁锢的目录中进行写操作
      allow_writeable_chroot=YES
      
      # 启用被动模式(PASV),对于通过防火墙或NAT连接非常重要)
      pasv_enable=YES
      # 设置被动模式使用的端口范围(方便防火墙配置)
      pasv_min_port=30000
      pasv_max_port=31000
      # 如果服务器有公网IP,或在NAT后,可在此指定服务器的公网IP地址
      # pasv_address=你的公网IP

      修改配置文件后,​必须重启 vsftpd 服务以使更改生效 

      systemctl restart vsftpd
  3. 创建FTP用户
    • useradd -m ftpuser
      passwd ftpuser
      chmod 750 /home/ftpuser

       

  4. 配置防火墙
    • # 放行FTP服务(控制端口21)
      sudo firewall-cmd --permanent --add-service=ftp
      # 放行为被动模式指定的端口范围
      sudo firewall-cmd --permanent --add-port=30000-31000/tcp
      # 重新加载防火墙规则
      sudo firewall-cmd --reload

       

  5. 启动服务
    • sudo systemctl start vsftpd
      sudo systemctl enable vsftpd

       

  6. 连接测试
    • ​使用 FTP 客户端软件​(如 ​FileZilla, WinSCP):这是最常用的方式。

      • ​主机​:填写你的 CentOS 服务器的 IP 地址。

      • ​协议​:选择 FTPFTP - 文件传输协议

      • ​加密​:选择“不使用加密”或“普通FTP”(我们稍后会配置加密)。

      • ​用户/密码​:填写刚才创建的 ftpuser及其密码。

      • ​端口​:默认为 21

    • 使用命令行测试​(在服务器本机或另一台 Linux 机器上):
      • ftp 你的服务器IP
        # 然后输入用户名和密码

         

🛡️ 安全加固(强烈推荐)

基础功能可用后,强烈建议进行以下安全加固:

  1. ​启用 TLS/SSL 加密(FTPS)​​:让数据传输变得加密,避免密码和文件内容明文传输

    • 生成 SSL 证书:

      • sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/vsftpd.key -out /etc/pki/tls/certs/vsftpd.crt

         

    • /etc/vsftpd.conf中添加:
      • ssl_enable=YES
        rsa_cert_file=/etc/pki/tls/certs/vsftpd.crt
        rsa_private_key_file=/etc/pki/tls/private/vsftpd.key
        allow_anon_ssl=NO
        force_local_data_ssl=YES
        force_local_logins_ssl=YES

         

    • 重启服务:sudo systemctl restart vsftpd。之后在客户端(如 FileZilla)连接时,需要选择“显式 FTP over TLS”加密方式
  2. 处理 SELinux​:如果您的系统启用了 SELinux(默认通常开启),可能需要调整策略以确保文件上传等功能正常

    • 允许 FTP 访问家目录:
    • sudo setsebool -P ftp_home_dir 1

       

 

posted on 2025-10-21 17:17  Karlkiller  阅读(3)  评论(0)    收藏  举报

导航