凌峰创科服务平台

Linux服务器FTP配置如何操作?

在Linux服务器上配置FTP服务是常见的文件传输需求,本文将以vsftpd(Very Secure FTP Daemon)为例,详细讲解从安装配置到安全加固的完整流程,vsftpd是一个轻量级、高性能且安全的FTP服务器软件,适用于大多数Linux发行版。

安装vsftpd

首先需要根据服务器操作系统安装vsftpd包,以CentOS/RHEL和Ubuntu/Debian为例:

  • CentOS/RHEL系统
    sudo yum install vsftpd -y  # CentOS 7及以下
    sudo dnf install vsftpd -y # CentOS 8/RHEL 8+
  • Ubuntu/Debian系统
    sudo apt update
    sudo apt install vsftpd -y

    安装完成后,启动vsftpd服务并设置为开机自启:

    sudo systemctl start vsftpd
    sudo systemctl enable vsftpd

主配置文件解析

vsftpd的主配置文件位于/etc/vsftpd/vsftpd.conf,以下是关键参数说明及推荐配置:

参数 默认值 推荐值 说明
anonymous_enable YES NO 是否允许匿名用户访问
local_enable YES YES 是否允许本地用户登录
write_enable NO YES 是否允许文件写入
chroot_local_user NO YES 是否将用户限制在主目录
allow_writeable_chroot NO YES 是否允许chroot目录可写(需配合write_enable)
pasv_enable YES YES 是否启用被动模式
pasv_min_port 0 60000 被动模式最小端口
pasv_max_port 0 60100 被动模式最大端口
userlist_enable YES YES 启用用户列表控制
userlist_file /etc/vsftpd/user_list /etc/vsftpd/user_list 用户列表文件路径
tcp_wrappers YES YES 是否使用TCP Wrappers访问控制

建议备份原始配置文件后进行修改:

sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
sudo nano /etc/vsftpd/vsftpd.conf

创建FTP用户

  1. 创建系统用户(推荐使用非特权用户):

    sudo useradd -m -s /sbin/nologin ftpuser
    sudo passwd ftpuser
    • -m:自动创建用户主目录
    • -s /sbin/nologin:禁止SSH登录,仅允许FTP
  2. 设置用户主目录权限

    sudo chmod 755 /home/ftpuser
    sudo chown ftpuser:ftpuser /home/ftpuser
  3. 限制用户访问特定目录(可选): 若需将用户限制在指定目录(如/var/ftp/files),可创建用户时指定:

    sudo useradd -m -d /var/ftp/files -s /sbin/nologin ftpuser
    sudo mkdir -p /var/ftp/files
    sudo chown ftpuser:ftpuser /var/ftp/files

配置防火墙与SELinux

  1. 防火墙规则(以firewalld为例)

    sudo firewall-cmd --permanent --add-service=ftp
    sudo firewall-cmd --permanent --add-port=20/tcp
    sudo firewall-cmd --permanent --add-port=21/tcp
    sudo firewall-cmd --permanent --add-port=60000-60100/tcp
    sudo firewall-cmd --reload
  2. SELinux配置(CentOS/RHEL系统)

    sudo setsebool -P ftpd_full_access on
    sudo semanage port -a -t ftp_port_t -p tcp 60000-60100

安全加固措施

  1. 禁用匿名访问: 在vsftpd.conf中设置:

    anonymous_enable=NO
  2. 启用用户列表控制: 编辑/etc/vsftpd/user_list,添加允许登录的用户名(每行一个):

    echo "ftpuser" | sudo tee -a /etc/vsftpd/user_list
  3. 禁用ASCII模式上传

    ascii_upload_enable=NO
    ascii_download_enable=NO
  4. 配置日志记录

    xferlog_enable=YES
    xferlog_file=/var/log/xferlog
    dual_log_enable=YES
    vsftpd_log_file=/var/log/vsftpd.log
  5. 限制IP访问: 编辑/etc/hosts.deny/etc/hosts.allow

    # /etc/hosts.deny
    vsftpd: ALL
    # /etc/hosts.allow
    vsftpd: 192.168.1.0/24  # 仅允许内网IP访问

重启服务与测试

完成配置后重启vsftpd服务:

sudo systemctl restart vsftpd

使用FileZilla或命令行工具测试连接:

ftp 192.168.1.100

输入用户名和密码后,使用lsputget等命令验证功能。

常见问题排查

  1. 连接超时:检查防火墙和被动模式端口配置。
  2. 权限拒绝:确认用户目录权限(755)和文件所有权。
  3. SELinux报错:使用ausearch -m avc -ts recent查看日志并调整策略。

相关问答FAQs

Q1: 如何限制FTP用户只能上传文件而不能下载?
A1: 在vsftpd.conf中添加以下配置:

download_enable=NO

然后重启服务,这样所有用户均无法下载文件,若需针对特定用户限制,可使用user_config_dir参数创建用户配置文件,在文件中设置download_enable=NO

Q2: 配置完成后,客户端连接时提示“530 Login incorrect”怎么办?
A2: 可能原因及解决方案:

  1. 用户名或密码错误:确认用户是否在/etc/vsftpd/user_list中或/etc/passwd存在。
  2. PAM认证问题:检查/etc/pam.d/vsftpd配置,确保未禁用系统认证。
  3. SELinux拦截:执行ausearch -m avc -ts recent查看日志,若涉及SELinux,使用setsebool -P ftpd_full_access on调整。
  4. 主目录权限问题:确保用户主目录权限为755,所有者为该用户。
分享:
扫描分享到社交APP
上一篇
下一篇