阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

vsftpd简介及搭建配置

482次阅读
没有评论

共计 7907 个字符,预计需要花费 20 分钟才能阅读完成。

一、简介

FTP(文件传输协议)全称是:Very Secure FTP Server。Vsftpd 是 linux 类操作系统上运行的 ftp 服务器软件。

vsftp 提供三种登陆方式:1. 匿名登录  2. 本地用户登录  3. 虚拟用户登录

vsftpd 的特点:1. 较高的安全性需求    2. 带宽的限制    3. 创建支持虚拟用户    4. 支持 IPV6    5. 中等偏上的性能    6. 可分配虚拟 IP    7. 高速

Ftp 会话时采用了两种通道:

控制通道:与 Ftp 服务器进行沟通的通道,链接 Ftp 发送 ftp 指令都是通过控制通道来完成的。

数据通道:数据通道和 Ftp 服务器进行文件传输或则列表的通道

二、工作原理

Ftp 协议中控制连接均是由客户端发起,而数据连接有两种工作方式:Port 和 Pasv 方式

Port 模式(主动模式)–> 默认

Ftp 客户端首先和 Ftp server 的 tcp 21 端口建立连接,通过这个通道发送命令,客户端要接受数据的时候在这个通道上发送 Port 命令,Port 命令包含了客户端用什么端口(一个大于 1024 的端口)接受数据,在传送数据的时候,服务器端通过自己的 TCP 20 端口发送数据。这个时候数据连接由 server 向 client 建立一个连接。

Port 交互流程:

client 端:client 链接 server 的 21 端口,并发送用户名密码和一个随机在 1024 上的端口及 port 命令给 server,表明采用主动模式,并开放那个随机的端口。

server 端:server 收到 client 发来的 Port 主动模式命令与端口后,会通过自己的 20 端口与 client 那个随机的端口连接后,进行数据传输。

Pasv 模式(被动方式)

建立控制通道和 Port 模式类似,当客户端通过这个通道发送 Pasv 命令的时候,Ftp server 打开了一个位于 1024 和 5000 之间的随机端口并且通知客户端在这个端口上进行传输数据请求,然后 Ftp server 将通过这个端口进行数据传输。这个时候数据连接由 client 向 server 建立连接。

Pasv 交互流程

Clietn:client 连接 server 的 21 号端口,发送用户名密码及 pasv 命令给 server,表明采用被动模式。

server:server 收到 client 发来的 pasv 被动模式命令之后,把随机开放在 1024 上的端口告诉 client,client 再用自己的 20 端口与 server 的那个随机端口进行连接后进行数据传输。

如果从 C / S 模型这个角度来说,PORT 对于服务器来说是 OUTBOUND,而 PASV 模式对于服务器是 INBOUND,这一点请特别注意,尤其是在使用防火墙的企业里,这一点非常关键,如果设置错了,那么客户将无法连接。

三、安装 vsftpd 及相关软件

yum -y install vsftpd*  pam*  db4*

vsftpd:ftp 软件      pam:认证模块      DB4:支持文件数据库

四、vsftpd 的用户管理:

  FTP 服务器对用户的管理,在默认的情况下是根据“/etc/passwd 系统用户配置文件”及“/etc/group 系统用户组配置文件”来进行配置。

  在 FTP 服务器中,匿名用户的用户名和密码都是 ftp;这个用户可以在您的操作系统中的 /etc/passwd 中能找得到;如:

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

在 ftp 用户这行中,我们看到七个字段,每个字段写字段之间用: 号分割;

1.ftp 是用户名

2.x 是密码字段,隐藏的

3.14 是用户的 UID 字段,可以自己来设定,不要和其它用户的 UID 相同,否则会造成系统安全问题;

4.50 用用户组的 GID,可以自己设定,不要和其它用户组共用 FTP 的 GID,否则会造成系统全全问题;

5.FTP User 是用户说明字段

6./var/ftp 是 ftp 用户的家目录,可以自己来定义

7./sbin/nologin 这是用户登录 SHELL,这个也是可以定义的,/sbin/nologin 表示不能登录系统;系统虚拟帐号(也被称为伪用户)一般都是这么设置。比如我们把 ftp 用户的 /sbin/nologin 改为 /bin/bash,这样 ftp 用户通过本地或者远程工具 ssh 或 telnet 以真实用户身份登录到系统。这样做对系统来说是不安全的;如果您认为一个用户没有太大的必要登录到系统,就可以只给他 FTP 帐号的权限,也就是说只给他 FTP 的权限,而不要把他的 SHELL 设置成 /bin/bash 等

匿名用户的属组:/etc/group

ftp:x:50:

第一个字段为:ftp: 用户组、第二个字段为:x: 密码段、第三个字段为:50:GID

可以根据对比用户配置文件以及用户组配置文件中的 UID 得知 是否为隶属关系。

五、vsftpd 的配置

)因为 vsftpd 默认的宿主用户是 root,不符合安全性要求,所以将新建立的 vsftpd 服务的宿主用户的 shell 改为“/sbin/nologin 意思是禁止登录系统”:useradd vsftpd -s /sbin/nologin

2.)建立 vsftpd 虚拟宿主用户:useradd virtusers  -s /sbin/nologin

此次主要介绍虚拟用户,顾名思义虚拟用户在系统中是不纯在的,它们集体寄托于方才创建的“virtusers”用户,那么这个用户就相当于一个虚拟用户组了,因为这个用户的权限将影响到后续讲到的虚拟用户。

3.)调整 vsftpd 的配置文件(编辑所有的配置文件前最好养成备份的习惯)

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.backup.conf

vim /etc/vsftpd/vsftpd.conf

# 设置为 NO 代表不允许匿名
anonymous_enable=YES
 
# 设定本地用户可以访问,主要是虚拟宿主用户,如果设为 NO 那么所欲虚拟用户将无法访问。
local_enable=YES
 
# 可以进行写的操作
write_enable=YES
 
# 设定上传文件的权限掩码
local_umask=022
 
# 禁止匿名用户上传
anon_upload_enable=NO
 
# 禁止匿名用户建立目录
anon_mkdir_write_enable=NO
 
# 设定开启目录标语功能
dirmessage_enable=YES
 
# 设定开启日志记录功能
xferlog_enable=YES
 
# 设定端口 20 进行数据连接
connect_from_port_20=YES
 
# 设定禁止上传文件更改宿主
chown_uploads=NO
 
# 设定 vsftpd 服务日志保存路劲。注意:改文件默认不纯在,需手动 touch,且由于这里更改了 vsftpd 服务的宿主用户为手动建立的 vsftpd,则必
须注意给予该用户对日志的读取权限否则服务启动失败。
xferlog_file=/var/log/vsftpd.log
 
# 设定日志使用标准的记录格式
xferlog_std_format=YES
 
# 设定空闲链接超时时间,这里使用默认 / 秒。
#idle_session_timeout=600
 
# 设定最大连接传输时间,这里使用默认,将具体数值留给每个用户具体制定,默认 120/ 秒
data_connection_timeout=3600
 
# 设定支撑 vsftpd 服务的宿主用户为手动建立的 vsftpd 用户。注意:一旦更改宿主用户,需一起与该服务相关的读写文件的读写赋权问题.
nopriv_user=vsftpd
 
# 设定支持异步传输的功能
#async_abor_enable=YES
 
# 设置 vsftpd 的登陆标语
ftpd_banner=hello 欢迎登陆
 
# 禁止用户登出自己的 ftp 主目录
chroot_list_enable=NO
 
# 禁止用户登陆 ftp 后使用 ls -R 命令。该命令会对服务器性能造成巨大开销,如果该项运行当多个用户使用该命令会对服务器造成威胁。
ls_recurse_enable=NO
 
# 设定 vsftpd 服务工作在 standalone 模式下。所谓 standalone 模式就是该服务拥有自己的守护进程,在 ps - A 可以看出 vsftpd 的守护进程名。如果
不想工作在 standalone 模式下,可以选择 SuperDaemon 模式,注释掉即可,在该模式下 vsftpd 将没有自己的守护进程,而是由超级守护进程 Xinetd 全权代理,> 与此同时,vsftpd 服务的许多功能,将得不到实现。
listen=YES
 
# 设定 userlist_file 中的用户将不能使用 ftp
userlist_enable=YES
 
 
# 设定 pam 服务下的 vsftpd 验证配置文件名。因此,PAM 验证将参考 /etc/pam.d/ 下的 vsftpd 文件配置。
pam_service_name=vsftpd
 
# 设定支持 TCPwrappers
tcp_wrappers=YES
 
################################################# 以下是关于虚拟用户支持的重要配置项目,默认.conf 配置文件中是不包含这些项目的,需手动添加。
# 启用虚拟用户功能
guest_enable=YES
 
# 指定虚拟的宿主用户
guest_username=virtusers
 
# 设定虚拟用户的权限符合他们的宿主用户
virtual_use_local_privs=YES
 
# 设定虚拟用户个人 vsftp 的配置文件存放路劲。这个被指定的目录里,将被存放每个虚拟用户个性的配置文件,注意的地方是:配置文件名必须
和虚拟用户名相同。
user_config_dir=/etc/vsftpd/vconf
 
# 禁止反向域名解析,若是没有添加这个参数可能会出现用户登陆较慢,或则客户链接不上 ftp 的现象
reverse_lookup_enable=NO

4.)建立 vsftpd 的日志文件,并更改属主为 vsftpd 的服务宿主用户

touch /var/log/vsftpd.log

chown vsftpd.vsftpd /var/log/vsftpd.log

六、配置虚拟用户

1.)建立虚拟用户配置文件的存放路径

mkdir /etc/vsftpd/vconf/

2.)建立一个虚拟用户名单文件,用来记录虚拟用户的账号和密码, 格式为:一行用户名,一行密码。

vim /opt/vsftp/passwd

test
123456
test1
654321

3.)生成虚拟用户数据文件

db_load -T -t hash -f  /opt/vsftp/passwd  /opt/vsftp/passwd.db

需要注意的是,以后对虚拟用户的增删操作完之后需要再次执行上述命令,使其生成新的数据文件。

七、设置 PAM 验证文件,并制定虚拟用户数据库文件进行读取

对原验证文件备份后进行更改:cp /etc/pam.d/vsftpd  /etc/pam.d/vsftpd.backup

cat /etc/pam.d/vsftpd

#%PAM-1.0
#####32 位系统配置
#auth    sufficient      /lib/security/pam_userdb.so    db=/etc/vsftpd/xnpasswd
#account sufficient      /lib/security/pam_userdb.so    db=/etc/vsftpd/xnpasswd
#####64 位系统配置
auth    sufficient      /lib64/security/pam_userdb.so    db=/opt/vsftp/passwd
account sufficient      /lib64/security/pam_userdb.so    db=/opt/vsftp/passwd

# 以上两条是手动添加的,内容是对虚拟用户的安全和帐户权限进行验证。
# 这里的 auth 是指对用户的用户名口令进行验证。
# 这里的 accout 是指对用户的帐户有哪些权限哪些限制进行验证。
auth      required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth      required    pam_shells.so
auth      include      system-auth
account    include      system-auth
session    include      system-auth
session    required    pam_loginuid.so

八、虚拟用户的配置

1.)定制虚拟用户模板配置文件(虚拟用户的配置文件名需要和虚拟用户一致,因为在登录 ftp 时输入相应的用户名之后会根据名称去加载相应的配置文件)

vim /etc/vsftpd/vconf/test

local_root=/opt/vsftp/file
# 指定虚拟用户仓库的具路径
anonymous_enable=NO
# 设定不允许匿名访问
write_enable=YES
# 允许写的操作
local_umask=022
# 上传文件的权限掩码
anon_upload_enable=NO
# 不允许匿名上传
anon_mkdir_write_enable=NO
# 不允许匿名用户建立目录
idle_session_timeout=300
# 设定空闲链接超时时间
data_connection_timeout=1000
# 设定单次传输最大时间
max_clients=0
# 设定并发客户端的访问数量
max_per_ip=0
# 设定客户端的最大线程数
local_max_rate=0
# 设定用户的最大传输速率,单位 b /s

2.)建立虚拟用户的仓库目录并更改相应属主 / 组且赋予相应权限

mkdir -p /opt/vsftpd/file

chown virtusers:virtusers /opt/vsftpd/file

chmod 755 /opt/vsftpd/file

3.)随便建立个文件方便后续检测是否安装成功:touch  /opt/vsftpd/file/abc

九、启动方式

ftp 守护进程的启动方式有两种,standalone 和(xinetd/inetd)

1.)xinetd 模式:大多数较新的系统采用的是 xinetd 超级服务守护进程,它是 inetd(因特网守护进程)的替代品。在 linux 中一些不主要的服务,并没有作为单独的守护进程在开机时启动,而是将他们的监听端口交给一个独立的进程 xinetd 集中监听,当收到客户端的请求之后,xinted 进程就临时启动相应服务器并把端口移交给相应的服务,客户端断开之后,相应的服务进程结束,xinetd 继续监听。

有的系统可能会需要安装 xinetd:yum install xinetd

若是在 /etc/xinetd.d/ 中没有 vsftpd 则需要新建,并添加如下内容:

service ftp 
 
{

socket_type = stream
 
wait = no
 
user = root
 
server = /usr/sbin/vsftpd 
 
 
nice = 10
 
disable = no

}

释掉”/etc/vsftpd.conf“中的 listen=YES 之后重启,以 xinetd 启动  /etc/rc.d/init.d/xinetd restart

2.)standalone 模式:运行期间一直驻留在内存中,对接入信号反应较快但是占用了些系统资源,因此常常用于需求较高的服务。

standalone 模式运行 ftp:

此模式便于实现 PAM 验证功能,进入这种模式首先关闭 xinetd 下的 vsftpd,设置”disable=yes“,或则注释掉 /etc/initd.conf 中的相应的行,然后取消 /etc/vsftpd/vsftpd.conf 中 listen=YES 的注释。

启动:service vsftpd restart

十、从其他机器登陆 ftp 进行测试

建议关闭 iptables 与 selinux 进行测试。

# 需要先下载客户端 yum -y install ftp

Name (192.168.1.67:root):test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,1,67,23,40).
150 Here comes the directory listing.
-rwxr-xr-x 2 500 500 4096 May 05 03:53 abc
226 Directory send OK.

可能会出现的错误:

1.)500 OOPS: 错误

有可能是你的 vsftpd.con 配置文件中有不能被实别的命令,还有一种可能是命令的 YES 或 NO 后面有空格

2.)若是提示权限问题,检测配置文件无误后执行:setsebool -P ftp_home_dir=1

vsftpd 对于权限的要求并不严格,对于指定 ftp 的宿主用户 vsftpd 也只是需要有日志文件的权限,其他地方默认即可,而虚拟用户的宿主则需要有相关的虚拟用户仓库路径的权限,且新版本下针对仓库的上级目录貌似不能是 777 权限可以是 755。

更多 Vsftpd 相关教程见以下内容

Linux CentOS 6.5 下搭建 vsftpd ftp 服务器  https://www.linuxidc.com/Linux/2016-07/133319.htm
CentOS 安装 vsftpd-3.0.2 及安全配置  https://www.linuxidc.com/Linux/2016-12/138040.htm
openSUSE 13.2/13.1 下安装配置 FTP 服务器 vsftpd  https://www.linuxidc.com/Linux/2014-12/110070.htm
CentOS7 基于虚拟用户的 vsftpd  https://www.linuxidc.com/Linux/2016-11/137150.htm
Ubuntu 14.04 配置 vsftpd 实现 FTP 服务器 – 通过 FTP 连接 AWS  https://www.linuxidc.com/Linux/2016-08/133933.htm
FTP 协议详解与 vsftpd 在 Linux 上的安装配置 https://www.linuxidc.com/Linux/2016-09/134831.htm
CentOS 6.7 安装 vsftpd 服务器  https://www.linuxidc.com/Linux/2017-04/142612.htm
CentOS 7.3 安装配置 Vsftpd 文件服务器  https://www.linuxidc.com/Linux/2017-06/144886.htm
Vsftpd3.0–FTP 服务器搭建之本地用户篇  https://www.linuxidc.com/Linux/2017-04/142699.htm
CentOS7 基于虚拟用户的 vsftpd  https://www.linuxidc.com/Linux/2016-11/137150.htm
Ubuntu 16.04 下 vsftpd 安装配置实例  https://www.linuxidc.com/Linux/2017-06/144807.htm
CentOS7 搭建 vsftpd 详细教程  https://www.linuxidc.com/Linux/2017-12/149909.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计7907字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7992188
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装 2026 年最强个人助理 ClawdBot、完整安装教程 一、前言 学不完,根本学不完!近期,一款名...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛 NAS-8:有了 NAS 你可以干什么?软件汇总篇 前言 哈喽各位玩友!我是是星哥,不少朋友私...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...