Vsftpd虚拟用户模式配置

本文涉及的产品
运维安全中心(堡垒机),免费版 6个月
运维安全中心(堡垒机),企业双擎版|50资产|一周时长
简介:

       原理讲解,vsftpd网上教程一大堆,但很多同学一说虚拟用户还是有点不解,这里我来抛砖引玉和大家分享,VSFTPD利用了PAM登陆认证模块,但是确没有直接使用系统的用户,而是用自己的用户数据库,但由于vsftpd必须要存取操作系统上的文件,所以又离不开系统那个用户,那么就来个映射,不用系统直接登陆,只需要用自己的用户登陆之后在和系统用户做个映射,这样,就能安全很多了。

       应用场景:1,网站虚拟主机配合磁盘配额可以用来管理不同的用户;2,企业用户提供文件共享;3,运维中的原创备份FTP服务器端。

      下面是配置详细过程:

一,安装

  1. yum -y install  vsftpd db4-utils

复制代码


二,配置

  1. cd /etc/vsftpd/

  2. vi ftpuser.txt

复制代码


输入FTP用户名和密码

  1. ftpuser1

  2. 123456

  3. ftpuser2

  4. 654321

复制代码

注意:奇数行为用户名,偶数行为密码

生成FTP账户的数据库文件

  1. db_load -T -t hash -f ./ftpuser.txt ./ftplogin.db

  2. chmod 600 ./ftplogin.db

复制代码


生成和虚拟用户数据库相关联的PAM文件,因为FTP目录的权限需要根据系统用户来设定

cd /etc/pam.d/

vi vsftpd.pam

  1. auth required /lib/security/pam_userdb.so db=/etc/vsftpd/ftplogin

  2. account required /lib/security/pam_userdb.so db=/etc/vsftpd/ftplogin


复制代码

注意:是ftplogin而不是ftplogin.db

建立虚拟用户,设置该用户所要访问的目录,并设置虚拟用户访问的权限:

  1. useradd -d /data/ftpdata virtual_user

  2. chmod 700 /data/ftpdata

复制代码

经过该步骤的设置,/data/ftpdata就是virtual_user用户的主目录,该用户也是ftpdata目录的拥有者。除root用户之外,只有该用户具有对该目录的读、写和执行的权限。 

配置vsftpd,使之启用虚拟用户
vi /etc/vsftpd/vsftpd.conf

输入:

  1. anonymous_enable=NO

  2. local_enable=YES

  3. write_enable=YES

  4. local_umask=022

  5. #anon_upload_enable=NO

  6. #anon_mkdir_write_enable=NO

  7. dirmessage_enable=NO

  8. xferlog_enable=YES

  9. connect_from_port_20=YES

  10. #chown_uploads=YES

  11. #chown_username=root

  12. #xferlog_file=/var/log/xferlog

  13. xferlog_std_format=YES

  14. idle_session_timeout=600

  15. data_connection_timeout=36000

  16. #nopriv_user=ftpsecure

  17. #async_abor_enable=YES

  18. #ascii_upload_enable=YES

  19. #ascii_download_enable=YES

  20. #ftpd_banner=Welcome to blah FTP service.

  21. #deny_email_enable=YES

  22. #banned_email_file=/etc/vsftpd/banned_emails

  23. #chroot_list_enable=YES

  24. #chroot_list_file=/etc/vsftpd/chroot_list

  25. #ls_recurse_enable=YES

  26. listen=YES

  27. #listen_ipv6=YES


  28. guest_enable=YES

  29. guest_username=virtual_user

  30. pam_service_name=vsftpd.pam


  31. pam_service_name=vsftpd

  32. userlist_enable=YES

  33. tcp_wrappers=YES


复制代码


其中:

  1. guest_enable=YES

  2. guest_username=virtual_user

  3. pam_service_name=vsftpd.pam


复制代码

guest_enable=YES:表示启用虚拟用户
guest_username=virtual_user:本地用户,就是虚拟用户要映射的本地用户,这个主要是用来设置本地文件系统的权限的
pam_service_name=vsftpd.pam:虚拟用户的认证用户

注意,默认pam_service_name=vsftpd,要改过来,否则报“530 Login incorrect.” 这样的错误的哦

整个过程是:用户输入虚拟用户账户(ftpuser.txt这里设置的)------登陆服务器利用PAM模块认证------映射为本地用户virtual_user----以virtual_user用户的身份去存取virtual_user的根目录下的文件

登陆实验:

  1. ftp 127.0.0.1

  2. Connected to 127.0.0.1 (127.0.0.1).

  3. 220 (vsFTPd 2.0.5)

  4. Name (127.0.0.1:root): ftpuser1

  5. 331 Please specify the password.

  6. Password:

  7. 230 Login successful.

  8. Remote system type is UNIX.

  9. Using binary mode to transfer files.

  10. ftp> dir

  11. 227 Entering Passive Mode (127,0,0,1,150,205)

  12. 150 Here comes the directory listing.

  13. 226 Transfer done (but failed to open directory).

  14. ftp> pwd

  15. 257 "/"

  16. ftp>

复制代码

OK,没有问题了,我用的账户其实在服务器里是不存在的,就算这个用户密码泄露,别人也无法直接登陆我的linux主机

三,权限配置

我们还可以对每个用户设置权限

vi /etc/vsftpd/vsftpd.conf

添加用户配置目录:

  1. user_config_dir=/etc/vsftpd/vsftpd_user_conf


复制代码

mkdir -p /etc/vsftpd/vsftpd_user_conf
cd /etc/vsftpd/vsftpd_user_conf

配置每个用户的控制信息

vi /etc/vsftpd/vsftpd_user_conf/ftpuser1

输入:

  1. write_enable=NO

  2. anono_upload_enable=NO

复制代码

注意/etc/vsftpd/vsftpd_user_conf/ftpuser1这里的文件名和用户名必须相同哦

四,用户隔离

但是这里有个问题,当我有多个用户的时候ftpuser1 ftpuser2,那么这两个用户默认都在同一个目录,就是/data/ftpdata那我很多情况需要把用户隔离开来,例如我一台主机上有很多不同用户的网站,他们需要单独管理,企业用户也需要保护自己的隐私,原创备份服务器也有多中数据需要备份到不同的目录,所以,实现主目录隔离的虚拟用户才是终解决方案。下面就来看看如何解决这个问题了

接着上面,我们以ftpuser1为例

vi /etc/vsftpd/vsftpd_user_conf/ftpuser1
添加:
local_root=/data/ftpdata/ftpuser1

mkdir -p /data/ftpdata/ftpuser1
chown -R virtual_user:virtual_user /data/ftpdata/ftpuser1

其他用户同理

五,后期维护

这个算是建立好了,那以后还需要添加用户怎么办呢,步骤如下:

1.在ftpuser.txt中添加用户名和密码

2.运行如下命令,将用户名和密码添加到数据库中

  1. db_load -T -t hash -f ./ftpuser.txt ./ftplogin.db

复制代码

3.在vsftpd_user_conf文件夹下新建和用户名相同文件,并在其中加入

  1. vi /etc/vsftpd/vsftpd_user_conf/username

  2. 输入:

  3. local_root=/data/ftpdata/username

复制代码

4.在/data/ftpdata中新建一个文件夹,与用户名相同

  1. mkdir -p /data/ftpdata/username

  2. chown -R virtual_user:virtual_user /data/ftpdata/username

复制代码


如何改用户名:

只需要修改下ftpuser.txt里面的密码行,然后执行

  1. db_load -T -t hash -f ./ftpuser.txt ./ftplogin.db

复制代码

即可,连重启都不需要,所以这里注意ftpuser.txt这个文件保护好,为了以后维护方面还是不要删除了吧


原创作品,转载务必保留出处:http://bbs.ywlm.net/thread-580-1-1.html

相关文章
|
7月前
|
Linux 网络安全 数据安全/隐私保护
Linux vsFTPd服务详解——文件加密传输配置
Linux vsFTPd服务详解——文件加密传输配置
247 2
|
安全 Linux 应用服务中间件
[笔记]CentOS7 vsftpd安装及配置使用
[笔记]CentOS7 vsftpd安装及配置使用
631 0
|
4月前
|
存储 安全 Linux
如何在 CentOS VPS 上配置 vsftpd 使用 SSL/TLS
如何在 CentOS VPS 上配置 vsftpd 使用 SSL/TLS
101 0
|
7月前
|
Web App开发 安全 Unix
Linux 配置FTP服务器 + vsftpd服务安装配置 (Good篇)
Linux 配置FTP服务器 + vsftpd服务安装配置 (Good篇)
212 1
|
7月前
|
网络协议 安全 Linux
配置vsftpd服务
FTP是TCP/IP协议族中的应用层协议,用于可靠地传输文件,基于C/S架构,使用20(数据)和21(命令)端口。有两种传输模式:主动模式,客户端告知服务器数据端口,服务器发起连接;被动模式,服务器响应客户端的PASV命令,客户端建立数据连接。安装Linux的vsftpd服务涉及`yum install vsftpd`,创建用户,重启服务并设置开机启动。配置文件`vsftpd.conf`可调整访问权限和行为。通过FTP命令如`help`,`get`,`put`进行文件操作。匿名用户模式可允许无密码访问,需修改配置文件开启。
197 0
|
Linux 数据安全/隐私保护
linux中配置vsftpd
linux中配置vsftpd
118 0
|
Linux
【Linux】【CentOS】【FTP】FTP服务器安装与配置1(vsftpd、lftp)
【Linux】【CentOS】【FTP】FTP服务器安装与配置(vsftpd、lftp)
302 1
【Linux】【CentOS】【FTP】FTP服务器安装与配置1(vsftpd、lftp)
|
Linux 网络安全 开发工具
【Linux】【CentOS】【FTP】FTP服务器安装与配置2(vsftpd、lftp)
【Linux】【CentOS】【FTP】FTP服务器安装与配置(vsftpd、lftp)
405 1
【Linux】【CentOS】【FTP】FTP服务器安装与配置2(vsftpd、lftp)
|
安全 Linux 数据安全/隐私保护
谁再说不会搭建vsftpd,就把这个脚本给他扔过去!——CentOS7下一键脚本搭建虚拟用户模式的vsftpd服务器
谁再说不会搭建vsftpd,就把这个脚本给他扔过去!——CentOS7下一键脚本搭建虚拟用户模式的vsftpd服务器
436 0
谁再说不会搭建vsftpd,就把这个脚本给他扔过去!——CentOS7下一键脚本搭建虚拟用户模式的vsftpd服务器
|
安全 Linux 网络安全
CentOS7下vsftpd over SSL/TLS加密传输配置实践
CentOS7下vsftpd over SSL/TLS加密传输配置实践
524 0
CentOS7下vsftpd over SSL/TLS加密传输配置实践