凌峰创科服务平台

Ubuntu如何搭建FTP服务器?

在Ubuntu系统中搭建FTP服务器是许多企业和个人用户常用的文件共享方案,它支持跨平台传输、权限管理等功能,适用于文件备份、网站资源上传等场景,以下将详细介绍在Ubuntu上配置FTP服务器的完整流程,包括安装、配置、安全设置及故障排查等内容。

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

安装FTP服务器软件

Ubuntu系统常用的FTP服务器软件有vsftpd(Very Secure FTP Daemon)、proftpd等,其中vsftpd以轻量、安全著称,是默认推荐的选择,安装步骤如下:

  1. 更新系统软件包列表
    在终端中执行以下命令,确保系统软件包为最新版本:

    sudo apt update
    sudo apt upgrade -y
  2. 安装vsftpd
    使用apt命令安装vsftpd:

    sudo apt install vsftpd -y

    安装完成后,vsftpd服务会自动启动,可通过以下命令检查状态:

    Ubuntu如何搭建FTP服务器?-图2
    (图片来源网络,侵删)
    sudo systemctl status vsftpd

配置vsftpd

vsftpd的主配置文件位于/etc/vsftpd.conf,通过修改该文件可自定义FTP服务器的行为,建议先备份原配置文件:

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

以下是关键配置项及说明(可通过sudo nano /etc/vsftpd.conf编辑文件):

配置项 说明 推荐值
listen=YES 是否以独立模式运行(监听IPv4) YES
anonymous_enable=NO 是否允许匿名用户登录 NO(安全考虑)
local_enable=YES 是否允许本地系统用户登录 YES
write_enable=YES 是否允许用户上传、修改文件 YES
local_umask=022 本地用户上传文件的默认权限掩码(如022表示644权限) 022
chroot_local_user=YES 是否将用户限制在其主目录内(防止越权访问) YES
allow_writeable_chroot=YES 允许被chroot的用户拥有写权限(需配合chroot_local_user YES
pasv_enable=YES 是否启用被动模式(适用于客户端 behind 防火墙的情况) YES
pasv_min_port=10000 被动模式使用的最小端口 10000-10100
pasv_max_port=10100 被动模式使用的最大端口 10100
user_sub_token=$USER 动态生成用户主目录路径的变量 $USER
local_root=/home/$USER/ftp 设置用户登录后的根目录(需提前创建目录) /home/$USER/ftp

配置示例

# 禁用匿名登录
anonymous_enable=NO
# 允许本地用户登录
local_enable=YES
# 允许写操作
write_enable=YES
# 限制用户主目录
chroot_local_user=YES
allow_writeable_chroot=YES
# 被动模式配置
pasv_enable=YES
pasv_min_port=10000
pasv_max_port=10100
# 用户目录映射
local_root=/home/$USER/ftp

保存配置后,重启vsftpd服务使配置生效:

Ubuntu如何搭建FTP服务器?-图3
(图片来源网络,侵删)
sudo systemctl restart vsftpd

创建FTP用户及目录

默认情况下,本地系统用户可直接登录FTP服务器,但为了安全和管理便利,建议为FTP服务创建专用用户。

  1. 创建新用户
    例如创建一个名为ftpuser的用户:

    sudo adduser ftpuser

    根据提示设置密码及用户信息(可留空直接回车)。

  2. 创建用户专属FTP目录
    根据配置文件中的local_root设置,为用户创建FTP目录并设置权限:

    sudo mkdir -p /home/ftpuser/ftp
    sudo chown -R ftpuser:ftpuser /home/ftpuser/ftp
    sudo chmod -R 755 /home/ftpuser/ftp
  3. 限制用户SSH登录(可选)
    如果仅需用户通过FTP访问,可禁用其SSH登录权限:编辑/etc/passwd文件,将用户登录shell改为/usr/sbin/nologin

    sudo usermod -s /usr/sbin/nologin ftpuser

防火墙与端口配置

FTP服务默认使用21端口(命令端口)和被动模式数据端口(如10000-10100),需确保防火墙允许这些端口的流量。

  1. UFW防火墙配置
    如果使用UFW(Ubuntu默认防火墙),执行以下命令开放端口:

    sudo ufw allow 21/tcp      # FTP命令端口
    sudo ufw allow 10000:10100/tcp  # 被动模式数据端口
    sudo ufw reload
  2. 云服务器安全组配置
    若使用阿里云、AWS等云服务器,需在安全组规则中添加入方向规则,开放21端口和10000-10100端口。

安全加固措施

  1. 禁用匿名用户
    确保配置文件中anonymous_enable=NO,防止匿名访问导致的安全风险。

  2. 启用SSL/TLS加密
    为FTP数据传输添加加密,可使用vsftpd的SSL功能:

    • 安装SSL证书(可使用自签名证书或免费Let's Encrypt证书),将证书文件存放至/etc/ssl/certs//etc/ssl/private/
    • 修改配置文件,添加以下内容:
      ssl_enable=YES
      rsa_cert_file=/etc/ssl/certs/vsftpd.pem
      rsa_private_key_file=/etc/ssl/private/vsftpd.key
      force_local_data_ssl=YES
      force_local_log_ssl=YES
    • 重启vsftpd服务。
  3. 限制用户访问IP
    在配置文件中添加tcp_wrappers=YES,并通过/etc/hosts.allow/etc/hosts.deny限制允许访问的IP:

    # /etc/hosts.allow
    vsftpd: 192.168.1.0/24, 10.0.0.1  # 允许的IP段或单个IP
    # /etc/hosts.deny
    vsftpd: ALL

常见问题排查

  1. 用户无法登录

    • 检查用户密码是否正确:sudo passwd ftpuser
    • 检查vsftpd服务状态:sudo systemctl status vsftpd
    • 查看日志文件:/var/log/vsftpd.log,定位错误信息(如权限不足、目录不存在等)。
  2. 被动模式连接失败

    • 检查防火墙是否开放被动端口(10000-10100)。
    • 确保客户端被动模式设置开启(如FileZilla中勾选“被动模式”)。
    • 验证配置文件中pasv_min_portpasv_max_port是否正确。

相关问答FAQs

Q1: 如何在Ubuntu中卸载vsftpd并清除配置文件?
A1: 卸载vsftpd可通过以下命令完成:

sudo apt purge vssftpd -y  # 卸载并删除配置文件
sudo apt autoremove -y     # 清理残留依赖

若需手动删除残留配置,可执行sudo rm -rf /etc/vsftpd.confsudo rm -rf /var/log/vsftpd.log

Q2: 如何限制FTP用户只能访问指定目录,而不能切换到其他目录?
A2: 除了配置chroot_local_user=YES外,还需确保用户主目录的权限设置正确,将用户FTP目录的权限设置为755,且目录所有者为用户本身:

sudo chown -R ftpuser:ftpuser /home/ftpuser/ftp
sudo chmod -R 755 /home/ftpuser/ftp

检查/etc/vsftpd.confallow_writeable_chroot=YES是否启用,避免因权限问题导致chroot失败。

分享:
扫描分享到社交APP
上一篇
下一篇