0%

Centos7配置ftp服务

CentOS7环境下搭建vsftpd服务器


背景信息

FTP(File Transfer Protocol)是一种文件传输协议,基于客户端/服务器架构,支持以下两种工作模式:

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

大多数FTP客户端都在局域网中,没有独立的公网IP地址,且有防火墙阻拦,主动模式下FTP服务器成功连接到客户端比较困难。因此,如无特殊需求,建议将FTP服务器配置为被动模式。

FTP支持以下三种认证模式:

  • 匿名用户模式:任何人无需密码验证就可以直接登录到FTP服务器。这种模式最不安全,一般只用来保存不重要的公开文件,不推荐在生产环境中使用。
  • 本地用户模式:通过Linux系统本地账号进行验证的模式,相较于匿名用户模式更安全。
  • 虚拟用户模式:FTP服务器的专有用户。虚拟用户只能访问Linux系统为其提供的FTP服务,而不能访问Linux系统的其他资源,进一步增强了FTP服务器的安全性。

本文使用本地用户模式进行配置。

操作步骤

安装vsftpd

  1. 安装vsftpd

    1
    yum install -y vsftpd

    如下图所示,出现此界面表示安装成功

  2. 配置FTP服务开机自启

    1
    systemctl enable vsftpd.service
  3. 启动FTP服务

    1
    systemctl start vsftpd.service
  4. 查看服务状态

  5. 如果有防火墙,开放ftp服务

    1
    2
    #防火墙开放21端口
    firewall-cmd --zone=public --add-port=21/tcp --permanent

    或者开放ftp服务

    1
    firewall-cmd --add-service=ftp --permanent

    这两个随便执行哪个都可以

    1
    2
    #刷新防火墙配置
    firewail-cmd --reload

配置vsftpd

为保证数据安全,本文主要介绍被动模式下,使用本地用户访问FTP服务器的配置方法。

  1. 创建一个Linux用户

    1
    useradd -s /sbin/nologin ftpuser1
  2. 设置改用户的密码

    1
    passwd ftpuser1
  3. 创建FTP服务使用的目录

    1
    mkdir /var/ftp/work
  4. 创建测试文件

    1
    touch /var/ftp/work/testfile.txt
  5. 修改目录权限

    1
    chown -R ftpuser1:ftpuser1 /var/ftp/work
  6. 修改vsftpd.conf配置文件

    1
    vim /etc/vsftpd/vsftpd.conf
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    #禁止匿名登录FTP服务器。
    anonymous_enable=NO
    #允许本地用户登录FTP服务器。
    local_enable=YES
    #监听IPv4 sockets。
    listen=YES

    #关闭监听IPv6 sockets。
    #listen_ipv6=YES


    #在配置文件的末尾添加下列参数:
    #设置本地用户登录后所在目录。
    local_root=/var/ftp/work
    #全部用户被限制在主目录。
    chroot_local_user=YES
    #启用例外用户名单。
    chroot_list_enable=YES
    #指定例外用户列表文件,列表中用户不被锁定在主目录。
    chroot_list_file=/etc/vsftpd/chroot_list
    #开启被动模式。
    pasv_enable=YES
    allow_writeable_chroot=YES
    #设置FTP服务的IP。
    pasv_address=<FTP服务器公网IP地址>
    #设置被动模式下,建立数据传输可使用的端口范围的最小值。
    #建议您把端口范围设置在一段比较高的范围内,例如50000~50010,有助于提高访问FTP服务器的安全性。
    pasv_min_port=<port number>
    #设置被动模式下,建立数据传输可使用的端口范围的最大值。
    pasv_max_port=<port number>
  7. 创建chroot_list文件,在文件中可以指定例外的用户,这里我设置为空

    1
    touch /etc/vsftpd/chroot_list
  8. 安装ftp客户端,本地进行测试

    1
    yum install -y ftp

  9. 本地连接ftp服务进行测试

    1
    ftp <你自己服务器的IP>

常见问题

530问题

如果出现530错误提示,需要修改/etc/pam.d/vsftpd,注释这一行

1
#auth       required    pam_shells.so

然后重启ftp服务

1
systemctl restart vsftpd

500 OOPS问题

手动创建chroot_list文件

1
touch /etc/vsftpd/chroot_list

然后再重新连接就可以了。