ubuntu如何搭建vsftpd服务器


Posted in Servers onDecember 24, 2022

一、vsftpd是什么?

vsftpd 是very secure FTP daemon的缩写,安全性是它的一个最大的特点。

vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件。

二、搭建过程

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

命令如下:

whereis vsftpd

vsftpd服务未安装显示如下:

ubuntu如何搭建vsftpd服务器

2.安装vsftpd

命令如下:

sudo apt-get install vsftpd

安装过程:

ubuntu如何搭建vsftpd服务器

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

ubuntu如何搭建vsftpd服务器

3.查询vsftpd版本号

vsftpd -version

版本号显示如下,说明安装成功。

ubuntu如何搭建vsftpd服务器

4.其他命令

查询vsftpd状态

service vsftpd status

开启vsftpd

sudo service vsftpd start

重启vsftpd

sudo service vsftpd restart

关闭vsftpd

sudo service vsftpd stop

该处使用的url网络请求的数据。

5.使用匿名用户登录

1、修改vsftpd的配置文件

sudo vi /etc/vsftpd.conf

将配置文件中:anonymous_enable=YES

ubuntu如何搭建vsftpd服务器

2、使用ftp工具连接到自己的服务器,输入用户名anonymous,密码为空。

登录成功后,应该看到下面的提示信息:

ubuntu如何搭建vsftpd服务器

3、ubuntu20.04匿名用户的目录是 /srv/ftp,不同版本的目录不一样。在该目录下,创建空文件welcome。

sudo touch welcome

现在可以使用FTP客户端看到这个文件了。

ubuntu如何搭建vsftpd服务器

三、用户设置

1.匿名用户登录

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

2.本地用户登录

2.1本地用户登录配置

在一个网点内部,FTP更多的情况下被配置为向授权用户开放。为此,用户应该在服务器上拥有自己的账号。vsftpd把这样的用户成为本地用户。

修改vsftpd的配置文件,重启FTP服务器。

sudo vi /etc/vsftpd.conf
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES

出于安全性,有一些用户不允许通过FTP登录,vsftpd将这些用户整理在 /etc/ftpusers中。

这是FTP黑名单,所有被列入其中的用户都不能通过FTP登录进来。

ubuntu如何搭建vsftpd服务器

2.2 限制用户在本地目录中

vsftpd提供了chroot(change root)系统调用,使其它目录对使用者不可见,也不可访问。

修改vsftpd的配置文件中以下配置。

# You may restrict local users to their home directories.  See the FAQ for
# the possible risks in this before using chroot_local_user or
# chroot_list_enable below.
chroot_local_user=YES

类似的,也可以知道哪些用户受限,通过配置文件chroot_list_file。

# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
# the user does not have write access to the top level directory within the
# chroot)
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list

3.使用虚拟用户

3.1 创建虚拟用户数据库文件

安装创建数据库文件需要使用的db工具:

sudo apt-get install db-util

db工具通过读取一个特定格式的文本文件来创建数据库文件,这个文件为每个用户预留2行,第一行为用户名,第二行为密码。

建立文件login_user,包含内容:

fei
123456

运行db_load 命令,通过~/login_user(由-f选项指定)创建数据库文件/etc/vsftpd_login.db。

sudo db_load -T -t hash -f /home/xuzhanfei/login_user /etc/vsftpd_login.db
  • -T:通过文本文件创建
  • -t hash:通过哈希表的数据结构创建数据库

最后,更改权限,使其只对root用户可见:

sudo chmod 600 /etc/vsftpd_login.db

3.2 配置PAM验证

/etc/pam.d/vsftpd 是vsftpd 默认使用的PAM验证文件,在该文件中加入以下两行,其余内容屏蔽:

auth required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd_login
account required  /lib/x86_64-linux-gnu/security/pam_userdb.so  db=/etc/vsftpd_login

同时,修改vsftpd的配置文件中以下配置。

# This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd

3.3 创建本地用户映射

下面做一些配置,将登录进来的用户映射到一个指定的非特权用户,这里就使用ftp用户。

修改vsftpd的配置文件中以下配置:

# 激活访客身份
guest_enable=YES
# 映射用户
guest_username=ftp

3.4 设置用户目录和权限

将 fei 用户目录设置为 /home/ftp/fei,赋予读写权限。

首先,为用户创建主目录,虚拟用户登录后自动映射为本地ftp 用户,因此,把目录的属主设置为 ftp 用户:

sudo mkdir /srv/ftp/fei
sudo chown ftp /srv/ftp/fei/ ##设置目录的属主

接下来,配置用户的目录和权限,先创建路径:

sudo mkdir /etc/vsftpd_user_conf

修改vsftpd的配置文件中以下配置:

# 存放用户配置的目录
user_config_dir=/etc/vsftpd_user_conf

添加 fei 的文本文件,增加以下内容:

# 打开vsftpd的全局写权限
write_enable=YES
# 打开文件上传权限
anon_upload_enable=YES
# 打开建立目录的权限
anon_mkdir_write_enable=YES
local_root=/srv/ftp/fei/

重启 vsftpd 服务。

注:未解决本地用户和虚拟用户登录冲突的问题

四、公网vsftpd服务器配置

1 服务器配置成被动模式

ubuntu如何搭建vsftpd服务器

PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXX端口,你过来连接我”。于是客户端向服务器的XXX端口发送连接请求,建立一条数据链路来传送数据。

被动模式也会存在防火墙的问题,客户端与服务端传输数据时,在服务端也会有防火墙,但在服务端的防火墙有连接追踪的功能,解决了防火墙的问题。因此,一般使用被动模式比较多。

修改vsftpd的配置文件中以下配置。

pasv_enable=YES           (使能被动连接)
pasv_min_port=9981         (被动连接服务器建立的端口XXX)
pasv_max_port=9983
pasv_address=192.194.203.142 (路由器静态IP地址)

2 路由器端口映射

(1)外网想要连接FTP服务器,需要知道数据传输的端口9981-9983。

(2)数据端口是随机的,那么服务器该如何将这些随机数据端口映射到公网的路由器上呢???

(3)我们需要把命令端口21和随机的数据端口映射到公网的端口(该端口需要开通权限),例如:学校开放公网端口为:9981-9983。

ubuntu如何搭建vsftpd服务器

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

ubuntu如何搭建vsftpd服务器

验证端口开放成功:

ubuntu如何搭建vsftpd服务器

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Servers 相关文章推荐
nginx基于域名,端口,不同IP的虚拟主机设置的实现
Mar 31 Servers
nginx 防盗链防爬虫配置详解
Mar 31 Servers
详解nginx location指令
Jan 18 Servers
Nginx的gzip相关介绍
May 11 Servers
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
May 11 Servers
shell进度条追踪指令执行时间的场景分析
Jun 16 Servers
Windows10安装Apache2.4的方法步骤
Jun 25 Servers
Win2008系统搭建DHCP服务器
Jun 25 Servers
Windows server 2003卸载和安装IIS的图文教程
Jul 15 Servers
CentOS7设置ssh服务以及端口修改方式
Dec 24 Servers
ubuntu开机后ROS程序自启动问题
Dec 24 Servers
CentOS7设置ssh服务以及端口修改方式
Dec 24 #Servers
CentOS7 minimal 最小化安装网络设置过程
Dec 24 #Servers
Elasticsearch6.2服务器升配后的bug(避坑指南)
Sep 23 #Servers
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
Sep 23 #Servers
源码安装apache脚本部署过程详解
Sep 23 #Servers
教你使用Ubuntu搭建DNS服务器
Sep 23 #Servers
windows server2012 R2下安装PaddleOCR服务的的详细步骤
You might like
php minixml详解
2008/07/19 PHP
PHP连接SQLServer2005 的问题解决方法
2010/07/19 PHP
服务器web工具 php环境下
2010/12/29 PHP
easyui的tabs update正确用法分享
2014/03/21 PHP
php生成4位数字验证码的实现代码
2015/11/23 PHP
详谈PHP面向对象中常用的关键字和魔术方法
2017/02/04 PHP
PHP5.6新增加的可变函数参数用法分析
2017/08/25 PHP
获取鼠标在div中的相对位置的实现代码
2013/12/30 Javascript
jQuery查看选中对象HTML代码的方法
2016/06/17 Javascript
JS遍历对象属性的方法示例
2017/01/10 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(上)
2017/04/21 Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
2020/07/18 Javascript
vue中渲染对象中属性时显示未定义的解决
2020/07/31 Javascript
如何检测JavaScript中的死循环示例详解
2020/08/30 Javascript
vue+echarts实现动态折线图的方法与注意
2020/09/01 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
2020/09/21 Javascript
详解vue3.0 的 Composition API 的一种使用方法
2020/10/26 Javascript
Vue.js桌面端自定义滚动条组件之美化滚动条VScroll
2020/12/01 Vue.js
JavaScript事件概念详解(区分静态注册和动态注册)
2021/02/05 Javascript
Python多层嵌套list的递归处理方法(推荐)
2016/06/08 Python
python 实现方阵的对角线遍历示例
2019/11/29 Python
关于Django Models CharField 参数说明
2020/03/31 Python
idea2020手动安装python插件的实现方法
2020/07/17 Python
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
2017/01/12 HTML / CSS
CSS3实现红包抖动效果
2020/12/23 HTML / CSS
质检部部长职责
2013/12/16 职场文书
采购部主管岗位职责
2014/01/01 职场文书
青年文明号事迹材料
2014/01/18 职场文书
毕业生就业协议书
2014/04/11 职场文书
2014年党支部承诺书
2014/05/30 职场文书
民事授权委托书范文
2014/08/02 职场文书
教师见习报告范文
2014/11/03 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
初中团委工作总结
2015/08/13 职场文书
六五普法学习心得体会
2016/01/21 职场文书
用Python创建简易网站图文教程
2021/06/11 Python