凌峰创科服务平台

Ubuntu 12.04 FTP服务器如何配置?

Ubuntu 12.04 已经非常古老,早已停止官方支持(End of Life),这意味着它没有安全更新,存在严重的安全风险, 强烈建议您升级到更新的 LTS 版本(如 20.04 或 22.04),如果必须在旧环境中进行操作,请务必确保该服务器处于隔离的网络环境中,并且不暴露在公网上。

Ubuntu 12.04 FTP服务器如何配置?-图1
(图片来源网络,侵删)

本教程将使用 vsftpd (Very Secure FTP Daemon),这是 Ubuntu/Debian 系统上最常用、最安全的 FTP 服务器软件。


第一步:安装 vsftpd

登录到您的 Ubuntu 12.04 服务器,然后打开终端,执行以下命令来安装 vsftpd

sudo apt-get update
sudo apt-get install vsftpd

安装完成后,vsftpd 服务会自动启动,我们可以使用以下命令检查其状态:

sudo service vsftpd status

第二步:配置 vsftpd

vsftpd 的主配置文件位于 /etc/vsftpd.conf,我们需要编辑这个文件来满足我们的需求。

Ubuntu 12.04 FTP服务器如何配置?-图2
(图片来源网络,侵删)
  1. 备份原始配置文件(这是一个好习惯):

    sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
  2. 编辑配置文件

    sudo nano /etc/vsftpd.conf

    打开文件后,我们需要修改或取消注释(去掉行首的 )以下关键选项:

    # 允许匿名用户登录(默认是NO,建议保持NO)
    anonymous_enable=NO
    # 允许本地用户登录(YES)
    local_enable=YES
    # 允许本地用户执行写操作(如上传、创建目录、删除文件)
    write_enable=YES
    # 设置本地用户的上传目录的掩码(建议保持默认)
    # local_umask=022
    # 启用 chroot 功能,将用户限制在其主目录下,防止他们访问系统其他文件
    # 这是非常重要的安全设置!
    chroot_local_user=YES
    # 当 chroot 启用时,如果用户的主目录没有写入权限,可能会报错。
    # 下面这行可以解决这个问题,允许 chroot 后的用户写入。
    allow_writeable_chroot=YES
    # 启用用户列表功能
    userlist_enable=YES
    # 指定用户列表文件,只有在这个文件中的用户才能登录
    userlist_file=/etc/vsftpd.userlist
    # 设置用户列表模式:YES 表示仅允许列表中的用户登录,NO 表示禁止列表中的用户登录
    # 我们这里设置为 YES,实现白名单机制
    userlist_file=/etc/vsftpd.userlist
    userlist_deny=NO
    # 日志记录
    xferlog_enable=YES
    xferlog_std_format=YES
    vsftpd_log_file=/var/log/vsftpd.log

    其他常用选项解释:

    Ubuntu 12.04 FTP服务器如何配置?-图3
    (图片来源网络,侵删)
    • listen=YES: 让 vsftpd 以独立模式运行,监听在 IPv4 的 21 端口。
    • listen_ipv6=NO: 如果您不使用 IPv6,可以禁用它。
    • pasv_min_port=40000pasv_max_port=50000: 如果您的客户端使用被动模式(推荐),这设置了被动模式使用的端口范围,您需要在防火墙中开放这个端口范围。
  3. 保存并退出: 在 nano 编辑器中,按 Ctrl + X,然后按 Y,最后按 Enter


第三步:创建 FTP 用户

为了安全起见,我们不应该使用系统用户(如 root)来登录 FTP,我们需要为 FTP 创建一个专用的用户。

  1. 创建新用户: 假设我们要创建一个名为 ftpuser 的用户。

    sudo adduser ftpuser

    系统会提示您设置该用户的密码和用户信息,请设置一个强密码。

  2. (可选)设置用户主目录: 默认情况下,ftpuser 的主目录是 /home/ftpuser,如果您想指定其他目录,/var/www/ftp,可以这样做:

    # 创建目标目录
    sudo mkdir -p /var/www/ftp
    sudo chown -R ftpuser:ftpuser /var/www/ftp
  3. 将用户添加到 vsftpd 用户列表: 我们之前在配置文件中设置了 userlist_deny=NO,这意味着只有 /etc/vsftpd.userlist 文件中列出的用户才能登录,我们需要将 ftpuser 添加到这个列表中。

    • 创建/编辑用户列表文件
      sudo nano /etc/vsftpd.userlist
    • 在文件中添加您的用户名,每行一个用户
      ftpuser
    • 保存并退出 (Ctrl + X, Y, Enter)。

第四步:配置防火墙

Ubuntu 12.04 默认使用 ufw (Uncomplicated Firewall) 作为防火墙前端,我们需要开放 FTP 服务所需的端口。

FTP 协议比较特殊,它使用两个端口:

  • 命令端口: 21 (主动和被动模式都使用)
  • 数据端口: 范围不定(被动模式)
  1. 开放命令端口 21

    sudo ufw allow 21/tcp
  2. 开放被动模式数据端口范围: 我们在配置文件中设置了 40000-50000,所以开放这个范围。

    sudo ufw allow 40000:50000/tcp
  3. 启用防火墙: 如果防火墙尚未启用,请启用它。

    sudo ufw enable

    系统会提示您确认,输入 y 即可。


第五步:重启 vsftpd 服务并测试

  1. 重启 vsftpd 服务,使所有新配置生效:

    sudo service vsftpd restart
  2. 测试连接: 您可以使用任何 FTP 客户端软件(如 FileZilla, WinSCP 等)进行测试。

    • 主机: 您服务器的 IP 地址
    • 端口: 21
    • 用户名: ftpuser
    • 密码: 您为 ftpuser 设置的密码

    使用命令行测试

    ftp <您的服务器IP地址>

    然后输入用户名和密码。

    如果连接成功,并且您被限制在 /home/ftpuser 目录下,那么恭喜您,配置成功了!


常见问题与解决方案

问题1:500 OOPS: cannot change directory:/home/ftpuser

  • 原因: 这是最常见的问题,当 chroot_local_user=YES 时,vsftpd 默认不允许用户在其主目录中进行写入操作,如果主目录的权限是 755 (drwxr-xr-x),它会报错。
  • 解决方案:
    1. 推荐方法: 在 vsftpd.conf 中添加 allow_writeable_chroot=YES,我们已经在上面的配置中包含了这一行。
    2. 备选方法: 修改用户主目录的权限,使其对用户可写。
      sudo chmod 755 /home/ftpuser
      # 或者更宽松的权限(不推荐,但有作用)
      sudo chmod 775 /home/ftpuser

问题2:连接被拒绝或超时,特别是在被动模式下

  • 原因: 防火墙或路由器没有开放被动模式所需的端口范围。
  • 解决方案:
    1. 确认防火墙(ufw 或云服务商的安全组)开放了 40000-50000 这个端口范围。
    2. 如果您在客户端(如 FileZilla)设置了被动模式,请确保服务器端的配置 pasv_min_portpasv_max_port 与客户端的设置匹配。

问题3:用户无法登录,但用户名和密码正确

  • 原因: 用户不在 /etc/vsftpd.userlist 文件中。
  • 解决方案:
    1. 检查 /etc/vsftpd.userlist 文件,确保用户名在其中,并且没有拼写错误。
    2. 检查 /etc/vsftpd.conf 中的 userlist_deny=NO 设置,确保是“白名单”模式。

安全性再次强调

  • 使用 SFTP (SSH File Transfer Protocol):FTP 协议在传输数据时是明文的,包括用户
分享:
扫描分享到社交APP
上一篇
下一篇