如何在Linux上搭建高效且安全的FTP服务器:使用vsftpd?

32阅读
0评论
0点赞

本文介绍了如何在Linux操作系统上安装和配置vsftpd以搭建FTP服务器的过程。首先介绍了FTP的工作模式和认证模式,然后详细说明了安装vsftpd、设置FTP服务自启动和启动服务的方法。接着分别讲解了本地用户模式和匿名访问模式下的配置步骤,并提供了测试FTP服务器连接的方法。

vsftpd (Very Secure FTP Daemon) 是一款适用于Linux操作系统的高效、安全且易于配置的FTP服务器软件。本文将指导您完成在Linux服务器上安装、配置vsftpd的过程,并测试FTP服务器的连接。

前提条件

背景信息

FTP工作模式

FTP(File Transfer Protocol)基于客户端/服务器架构,支持两种主要的工作模式:

  • 主动模式(PORT): 客户端向FTP服务器发送端口信息,由服务器主动连接该端口。
  • 被动模式(PASV): FTP服务器开启并发送端口信息给客户端,由客户端连接该端口,服务器被动接受连接。

FTP认证模式

FTP支持三种认证模式:

  • 匿名用户模式: 无需密码验证即可登录FTP服务器。这种模式不安全,仅用于传输非敏感文件。
  • 本地用户模式: 通过Linux系统本地用户验证登录权限,比匿名用户模式更安全。
  • 虚拟用户模式: 通过虚拟用户验证登录权限,虚拟用户只能访问为其提供的FTP服务,不能访问Linux系统的其他资源。这是最安全的模式,适用于对数据安全性要求较高的场景。

本文将重点介绍匿名用户模式和本地用户模式的配置。

步骤一:准备工作

  1. 安装FTP客户端工具FileZilla:
  2. 设置Linux服务器的用户密码:

步骤二:安装与配置vsftpd

  1. 远程连接Linux服务器:

  2. 检查vsftpd是否已安装:

    vsftpd -v

    如果输出版本信息,表明已安装。

    
    [admin@iZ2579sxicu**** ~]$ vsftpd -v
    
    vsftpd: version 3.0.2
    
  3. 安装vsftpd:

    sudo yum install -y vsftpd

    轻量-安装ftp

  4. 设置FTP服务开机自启动:

    sudo systemctl enable vsftpd.service
  5. 启动FTP服务:

    sudo systemctl start vsftpd.service

    若启动失败,请检查是否有进程占用了21端口。

  6. 查看FTP服务端口:

    sudo netstat -antup | grep ftp

    轻量-FTP状态

步骤三:设置FTP服务器的访问模式

本地用户模式(推荐)

  1. 创建FTP服务的Linux用户:
    sudo adduser ftptest
  2. 修改用户密码:
    sudo passwd ftptest
  3. 创建FTP服务使用的文件目录:
    sudo mkdir /var/ftp/test
  4. 更改目录所有权:
    sudo chown -R ftptest:ftptest /var/ftp/test
  5. 修改vsftpd.conf配置文件:
    • 编辑配置文件:
      sudo vim /etc/vsftpd/vsftpd.conf
    • 配置参数:
      anonymous_enable=NO
      local_enable=YES
      listen=YES
      local_root=/var/ftp/test
      chroot_local_user=YES
      chroot_list_enable=YES
      chroot_list_file=/etc/vsftpd/chroot_list
      pasv_enable=YES
      allow_writeable_chroot=YES
      pasv_address=<服务器公网IP>
      pasv_min_port=50000
      pasv_max_port=50010
  6. 创建chroot_list文件 写入例外用户名单:
    sudo vim /etc/vsftpd/chroot_list
  7. 关闭防火墙:
    sudo systemctl stop firewalld
  8. 重启FTP服务: 修改配置文件:

    sudo vi /etc/ssh/sshd_config

    PasswordAuthentication的值改为`yes asdas

    重启

    sudo systemctl restart vsftpd.service

匿名访问模式

  1. 修改vsftpd.conf配置文件:
    sudo vim /etc/vsftpd/vsftpd.conf
  2. 配置参数:
    anonymous_enable=YES
    anon_upload_enable=YES
    listen=YES
    listen_ipv6=NO
    pasv_enable=YES
    pasv_min_port=50000
    pasv_max_port=50010
    pasv_address=<服务器公网IP>

    anonymous_enableanon_upload_enable改成YES

  3. 更改/var/ftp/pub目录的权限:

    /var/ftp/pub为FTP服务默认的文件目录

    sudo chmod o+w /var/ftp/pub/
  4. 重启FTP服务:
    sudo systemctl restart vsftpd.service

步骤四:配置Linux服务器的防火墙

  • 在Linux服务器的防火墙中放行FTP端口。具体操作请参见添加防火墙规则
  • 被动模式需开放21端口,以及配置文件/etc/vsftpd/vsftpd.conf中参数pasv_min_portpasv_max_port之间的所有端口。

步骤五:通过FTP客户端测试连接FTP服务器

  1. 打开FileZilla客户端:
    • 选择文件 > 站点管理器
    • 单击新站点(N)
    • 输入新站点的名称,并完成站点配置。 filezilla
    • 单击连接

vsftp配置文件及参数说明

  • /etc/vsftpd/vsftpd.conf: 核心配置文件。
  • /etc/vsftpd/ftpusers: 黑名单文件,禁止文件中的用户访问FTP服务器。
  • /etc/vsftpd/user_list: 白名单文件,允许文件中的用户访问FTP服务器。

参数说明

用户登录控制参数

  • anonymous_enable=YES: 接受匿名用户。
  • local_enable=YES: 接受本地用户。

用户权限控制参数

  • write_enable=YES: 允许上传文件。
  • local_umask=022: 本地用户上传文件的权限。
  • anon_upload_enable=YES: 允许匿名用户上传文件。
  • chroot_local_user=YES: 将本地用户限制在其主目录内。
  • chroot_list_enable=YES: 启用例外用户名单。
  • chroot_list_file=/etc/vsftpd/chroot_list: 例外用户列表文件。
评论(0)
暂无评论,期待您的发言...
发表评论