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

使用vsftpd服务传输文件(匿名用户认证、本地用户认证、虚拟用户认证)

423次阅读
没有评论

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

vsftpd 是一款运行在 Linux 操作系统上的 FTP 服务程序,不仅完全开源而且免费,此外,还具有很高的安全性、传输速度,以及支持虚拟用户验证等其他 FTP 服务程序不具备的特点。

vsftd 作为更加安全的文件传输的服务程序,允许用户以三种认证模式登录到 FTP 服务器上。

  • 匿名开放模式:是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到 FTP 服务器。
  • 本地用户模式
    是通过 Linux 系统的本地账户密码信息进行认证,相较于匿名开放模式更安全。但是如果被×××破解了账户的信息,就可以畅通无阻登录 FTP 服务器,从而完全控制整台服务器。
  • 虚拟用户模式
    是这三种模式中最安全的一种认证模式,它需要为 FTP 服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供 FTP 服务程序进行认证使用。

    实验环境

    FTP 服务器配置完 yum 仓库后,安装 vsftpd 服务程序 

匿名开放模式

vsftpd 服务程序默认开启了匿名开放模式,需要开启匿名用户的上传、下载权限,以及让匿名用户创建、删除、更名文件的权限。真实环境不建议这样配置。FTP 服务器匿名用户对应的系统用户是 ftp。

anonymous_enable=YES / / 允许匿名访问
anon_upload_enable=YES // 允许匿名用户上传文件
anon_mkdir_write_enable=YES // 允许匿名用户创建目录
anon_other_write_enable=YES// 允许匿名用户修改或删除目录
anon_umask=022 // 设置匿名用户上传数据的权限掩码


service iptables stop               
setenforce 

在客户端执行 ftp 命令连接到 ftp 服务器,默认访问 FTP 根目录 /var/ftp。基于安全性考虑,FTP 根目录的权限不允许匿名用户或其他用户有写入权限(否则访问时会报 500 错误)

/var/ftp 目录下默认创建了一个子文件夹 pub,可以在匿名访问时供上传文件使用,那就要确保匿名用户 ftp 对该目录拥有写入权限。


[root@RedHat6
drwxr-xr-x. 

客户端测试:


yum install ftp -y                           

Connected to ).
)
Name (
 Please specify the password.
Password:
 Login successful.
Remote system type  UNIX.
Using binary mode to transfer files.
ftp> ls                                                       
).
150 Here comes the directory listing.
-rw-r--r--    1 0        0               7 Mar 26 02:42 ftp.txt
drwxr-xr-x    2 14       0            4096 Feb 12  2013 pub
226 Directory send OK.
ftp> 
local: ftp.txt remote: ftp.txt
227 Entering Passive ).
150 Opening BINARY mode data connection ).
226 Transfer complete.
7 bytes received )
ftp> cd pub                                         
250 Directory successfully changed.
ftp> put 123.txt                                   
local: 123.txt remote: 123.txt
227 Entering Passive ).
150 Ok to send data.
226 Transfer complete.
7 bytes sent )
ftp> ls                                           
227 Entering Passive ).
150 Here comes the directory listing.
-rw-------    1 14       50              7 Mar 26 02:44 123.txt
226 Directory send OK.
ftp> mkdir data                                  
257 "/pub/data" created
ftp> quit                                   
221 Goodbye.

本地用户模式

之前用的是匿名开放模式,现在关了,然后开启本地用户模式。创建一个本地用户 zhangsan 进行测试。

anonymous_enable=NO // 禁止匿名访问
local_enable=YES // 允许本地用户模式
write_enable=YES // 设置可写权限
local_umask=022 // 设置本地用户模式创建文件的 umask 值

在客户端执行 ftp 命令连接到 ftp 服务器,默认访问的是该用户的家目录,而且该目录的默认所有者、所属组都是该用户自己。

客户端测试:

[root@RedHat6-1 ~]# ftp 192.168.10.50
Connected to 192.168.10.50 (192.168.10.50).
220 (vsFTPd 2.2.2)
Name (192.168.10.50:root): zhangsan                         //zhangsan 用户登入
331 Please specify the password.
Password:                                                                    // 输入用户的密码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

257 "/files" created

227 Entering Passive Mode (192,168,10,50,117,63).
150 Here comes the directory listing.
drwxr-xr-x    2 500      500          4096 Mar 26 03:03 files
226 Directory send OK.

350 Ready for RNTO.
250 Rename successful.

227 Entering Passive Mode (192,168,10,50,147,228).
150 Here comes the directory listing.
drwxr-xr-x    2 500      500          4096 Mar 26 03:03 database
226 Directory send OK.

250 Remove directory operation successful.

227 Entering Passive Mode (192,168,10,50,123,117).
150 Here comes the directory listing.
226 Directory send OK.

221 Goodbye.

需要注意的是 7 版本需要在配置文件添加“allow_writeable_chroot=YES”参数才允许本地用户登录。// 允许对禁锢的 FTP 根目录执行写入操作,而且不拒绝用户的登录请求

1. 禁锢宿主目录

若还希望将所有的宿主目录禁锢在其宿主目录中,可以添加 chroot_local_user 配置项,否则用户将能够任意切换到服务器的 /var/、/etc/、/boot/ 等宿主目录以外的文件夹,这样一来便存在安全隐患。

chroot_local_user=YES // 禁锢宿主目录

客户端测试:


550 Failed to change directory.

550 Failed to change directory.

221 Goodbye.
2. 黑白名单

然而当使用 root 管理员登录后,系统提示如下错误信息:


Connected to ).
)
Name (以 root 用户登录
 Permission denied.
Login failed.

这是因为 vsftpd 服务程序所在的目录中默认存放着一个名为“用户名单”的文件 user_list, 默认 userlist_deny=YES, 所以这个名单上出现的名字将不允许登陆到 ftp 服务器,也就是黑名单。

[root@RedHat6-2 ~]# cd /etc/vsftpd/
[root@RedHat6-2 vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[root@RedHat6-2 vsftpd]# vim user_list               // 查看 user_list 文件

#





root
bin
daemon
adm
lp
sync            // 这些用户默认不允许登录 ftp 服务器
shutdown
halt
mail
news
uucp
operator
games
nobody
虚拟用户模式
第 1 步:

创建用于进行 FTP 认证的用户数据库文件,其中奇数行为账户名,偶数行为密码。


[root@RedHat6

rose
abc123
jack
abc123

[root@RedHat6
vuser.db: Berkeley DB (Hash, version , native byte-order)
[root@RedHat6
[root@RedHat6
第 2 步:

创建 vsftpd 服务程序用于存储文件的根目录以及虚拟用户映射的系统本地用户。FTP 服务用语存储文件的根目录指的是,当虚拟用户登录后访问的默认位置。

第 3 步:

建立用于支持虚拟用户的 PAM 文件 vfstpd.vu, 其中“db=”参数是使用 db_load 命令生成的账户密码数据库文件的路径。



auth required pam_userdb.so db=/etc/vsftpd/vuser 
account required pam_userdb.so db=/etc/vsftpd/vuser 
第 4 步:

在 vsftpd 服务程序的主配置文件中通过 pam_service_name 参数将 pam 认证文件的名称修改为 vsftpd.vu, 再添加 guest_enable、guest_username 参数。

anonymous_enable=NO // 禁止匿名访问
guest_enable=YES // 开启虚拟用户模式
guest_username=virtual // 指定虚拟用户账户
pam_service_name=vsftpd.vu // 指定 PAM 文件

第 5 步:

为虚拟用户设置不同的权限。先创建虚拟用户不同权限的配置文件的存放路径,在这个路径下再分别创建 rose 和 jack 命名的文件。

第 6 步:

再次修改 vsftpd 主配置文件,通过添加 user_config_dir 参数定义这两个虚拟用户不同权限的配置文件所存放的路径,重启 vsftpd 服务。

user_config_dir=/etc/vsftpd/vu_dir // 单独用户配置文件

客户端测试:


Connected to ).
)
Name (
 Please specify the password.
Password:                      
 Login successful.
Remote system type  UNIX.
Using binary mode to transfer files.
ftp> put anaconda-ks.cfg                               
local: anaconda-ks.cfg remote: anaconda-ks.cfg
).
150 Ok to send data.
226 Transfer complete.
1498 bytes sent )
ftp> quit
221 Goodbye.

[root@RedHat6
总用量 
-rw-r--r--. 

如何在 Ubuntu 18.04 LTS 上安装带有 TLS 的 VsFTPD 服务器  https://www.linuxidc.com/Linux/2018-10/154930.htm

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

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7980004
文章搜索
热门文章
星哥带你玩飞牛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-提高用户访问的响应速度和成功率
随机文章
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

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

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

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

星哥带你玩飞牛 NAS-8:有了 NAS 你可以干什么?软件汇总篇 前言 哈喽各位玩友!我是是星哥,不少朋友私...

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

一言一句话
-「
手气不错
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
自己手撸一个AI智能体—跟创业大佬对话

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

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...