• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    ubuntu如何搭建vsftpd服务器

    发布者: 福建二哥 | 发布时间: 2025-8-15 21:44| 查看数: 21| 评论数: 0|帖子模式

    一、vsftpd是什么?

    vsftpd 是very secure FTP daemon的缩写,安全性是它的一个最大的特点。
    vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件。

    二、搭建过程


    1.查询vsftpd是否存在和安装成功

    命令如下:
    1. whereis vsftpd
    复制代码
    vsftpd服务未安装显示如下:


    2.安装vsftpd

    命令如下:
    1. sudo apt-get install vsftpd
    复制代码
    安装过程:

    再次查询vsftpd服务,如图所示:


    3.查询vsftpd版本号
    1. vsftpd -version
    复制代码
    版本号显示如下,说明安装成功。


    4.其他命令

    查询vsftpd状态
    1. service vsftpd status
    复制代码
    开启vsftpd
    1. sudo service vsftpd start
    复制代码
    重启vsftpd
    1. sudo service vsftpd restart
    复制代码
    关闭vsftpd
    1. sudo service vsftpd stop
    复制代码
    该处使用的url网络请求的数据。

    5.使用匿名用户登录

    1、修改vsftpd的配置文件
    1. sudo vi /etc/vsftpd.conf
    复制代码
    将配置文件中:anonymous_enable=YES

    2、使用ftp工具连接到自己的服务器,输入用户名anonymous,密码为空。
    登录成功后,应该看到下面的提示信息:

    3、ubuntu20.04匿名用户的目录是 /srv/ftp,不同版本的目录不一样。在该目录下,创建空文件welcome。
    1. sudo touch welcome
    复制代码
    现在可以使用FTP客户端看到这个文件了。


    三、用户设置


    1.匿名用户登录

    前面已经配置完成,不再赘述。

    2.本地用户登录

    2.1本地用户登录配置
    在一个网点内部,FTP更多的情况下被配置为向授权用户开放。为此,用户应该在服务器上拥有自己的账号。vsftpd把这样的用户成为本地用户。
    修改vsftpd的配置文件,重启FTP服务器。
    1. sudo vi /etc/vsftpd.conf
    复制代码
    1. # Uncomment this to allow local users to log in.
    2. local_enable=YES
    3. #
    4. # Uncomment this to enable any form of FTP write command.
    5. write_enable=YES
    复制代码
    出于安全性,有一些用户不允许通过FTP登录,vsftpd将这些用户整理在 /etc/ftpusers中。
    这是FTP黑名单,所有被列入其中的用户都不能通过FTP登录进来。

    2.2 限制用户在本地目录中
    vsftpd提供了chroot(change root)系统调用,使其它目录对使用者不可见,也不可访问。
    修改vsftpd的配置文件中以下配置。
    1. # You may restrict local users to their home directories.  See the FAQ for
    2. # the possible risks in this before using chroot_local_user or
    3. # chroot_list_enable below.
    4. chroot_local_user=YES
    复制代码
    类似的,也可以知道哪些用户受限,通过配置文件chroot_list_file。
    1. # You may specify an explicit list of local users to chroot() to their home
    2. # directory. If chroot_local_user is YES, then this list becomes a list of
    3. # users to NOT chroot().
    4. # (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
    5. # the user does not have write access to the top level directory within the
    6. # chroot)
    7. chroot_local_user=YES
    8. chroot_list_enable=YES
    9. # (default follows)
    10. chroot_list_file=/etc/vsftpd.chroot_list
    复制代码
    3.使用虚拟用户

    3.1 创建虚拟用户数据库文件
    安装创建数据库文件需要使用的db工具:
    1. sudo apt-get install db-util
    复制代码
    db工具通过读取一个特定格式的文本文件来创建数据库文件,这个文件为每个用户预留2行,第一行为用户名,第二行为密码。
    建立文件login_user,包含内容:
    1. fei
    2. 123456
    复制代码
    运行db_load 命令,通过~/login_user(由-f选项指定)创建数据库文件/etc/vsftpd_login.db。
    1. sudo db_load -T -t hash -f /home/xuzhanfei/login_user /etc/vsftpd_login.db
    复制代码

      1. -T
      复制代码
      :通过文本文件创建
      1. -t hash
      复制代码
      :通过哈希表的数据结构创建数据库
    最后,更改权限,使其只对root用户可见:
    1. sudo chmod 600 /etc/vsftpd_login.db
    复制代码
    3.2 配置PAM验证
    /etc/pam.d/vsftpd 是vsftpd 默认使用的PAM验证文件,在该文件中加入以下两行,其余内容屏蔽:
    1. auth required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd_login
    2. account required  /lib/x86_64-linux-gnu/security/pam_userdb.so  db=/etc/vsftpd_login
    复制代码
    同时,修改vsftpd的配置文件中以下配置。
    1. # This string is the name of the PAM service vsftpd will use.
    2. pam_service_name=vsftpd
    复制代码
    3.3 创建本地用户映射
    下面做一些配置,将登录进来的用户映射到一个指定的非特权用户,这里就使用ftp用户。
    修改vsftpd的配置文件中以下配置:
    1. # 激活访客身份
    2. guest_enable=YES
    3. # 映射用户
    4. guest_username=ftp
    复制代码
    3.4 设置用户目录和权限
    将 fei 用户目录设置为 /home/ftp/fei,赋予读写权限。
    首先,为用户创建主目录,虚拟用户登录后自动映射为本地ftp 用户,因此,把目录的属主设置为 ftp 用户:
    1. sudo mkdir /srv/ftp/fei
    2. sudo chown ftp /srv/ftp/fei/ ##设置目录的属主
    复制代码
    接下来,配置用户的目录和权限,先创建路径:
    1. sudo mkdir /etc/vsftpd_user_conf
    复制代码
    修改vsftpd的配置文件中以下配置:
    1. # 存放用户配置的目录
    2. user_config_dir=/etc/vsftpd_user_conf
    复制代码
    添加 fei 的文本文件,增加以下内容:
    1. # 打开vsftpd的全局写权限
    2. write_enable=YES
    3. # 打开文件上传权限
    4. anon_upload_enable=YES
    5. # 打开建立目录的权限
    6. anon_mkdir_write_enable=YES
    7. local_root=/srv/ftp/fei/
    复制代码
    重启 vsftpd 服务。
    注:未解决本地用户和虚拟用户登录冲突的问题

    四、公网vsftpd服务器配置


    1 服务器配置成被动模式


    PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXX端口,你过来连接我”。于是客户端向服务器的XXX端口发送连接请求,建立一条数据链路来传送数据。
    被动模式也会存在防火墙的问题,客户端与服务端传输数据时,在服务端也会有防火墙,但在服务端的防火墙有连接追踪的功能,解决了防火墙的问题。因此,一般使用被动模式比较多。
    修改vsftpd的配置文件中以下配置。
    1. pasv_enable=YES           (使能被动连接)
    2. pasv_min_port=9981         (被动连接服务器建立的端口XXX)
    3. pasv_max_port=9983
    4. pasv_address=192.194.203.142 (路由器静态IP地址)
    复制代码
    2 路由器端口映射

    (1)外网想要连接FTP服务器,需要知道数据传输的端口9981-9983。
    (2)数据端口是随机的,那么服务器该如何将这些随机数据端口映射到公网的路由器上呢???
    (3)我们需要把命令端口21和随机的数据端口映射到公网的端口(该端口需要开通权限),例如:学校开放公网端口为:9981-9983。


    3 Linux服务器开放上述用到的端口


    验证端口开放成功:


    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

    来源:互联网
    免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表