前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用vsftpd服务传输文件(匿名用户认证、本地用户认证、虚拟用户认证)

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

作者头像
星哥玩云
发布2022-07-25 11:09:18
1.9K0
发布2022-07-25 11:09:18
举报
文章被收录于专栏:开源部署

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 //设置匿名用户上传数据的权限掩码

代码语言:javascript
复制
service iptables stop               
setenforce 

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

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

代码语言:javascript
复制
[root@RedHat6
drwxr-xr-x. 

客户端测试:

代码语言:javascript
复制
yum install ftp -y                           
代码语言:javascript
复制
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服务器,默认访问的是该用户的家目录,而且该目录的默认所有者、所属组都是该用户自己。

客户端测试:

代码语言:javascript
复制
[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 //禁锢宿主目录

客户端测试:

代码语言:javascript
复制
550 Failed to change directory.

550 Failed to change directory.

221 Goodbye.
2.黑白名单

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

代码语言:javascript
复制
Connected to ).
)
Name (以root用户登录
 Permission denied.
Login failed.

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

代码语言:javascript
复制
[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认证的用户数据库文件,其中奇数行为账户名,偶数行为密码。

代码语言:javascript
复制
[root@RedHat6

rose
abc123
jack
abc123
代码语言:javascript
复制
[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命令生成的账户密码数据库文件的路径。

代码语言:javascript
复制
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 //单独用户配置文件

客户端测试:

代码语言:javascript
复制
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.
代码语言:javascript
复制
[root@RedHat6
总用量 
-rw-r--r--. 

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 匿名开放模式
  • 本地用户模式
    • 1.禁锢宿主目录
      • 2.黑白名单
        • 虚拟用户模式
          • 第1步:
            • 第2步:
              • 第3步:
                • 第4步:
                  • 第5步:
                    • 第6步:
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档