Vsftpd服务器企业实战(三)

Vsftpd系统用户配置

Vsftpd匿名用户设置完毕,匿名用户,任何人都可以查看FTP服务器端的文件、目录,甚至可以修改、删除,此方案如适合存放私密文件在FTP服务器端,如何保证文件或者目录专属拥有者呢,Vsftpd系统用户可以实现该需求。

实现Vsftpd系统用户方式验证,只需在Linux系统中创建多个用户即可,创建用户使用useradd,同时给用户设置密码,即可通过用户和密码登录FTP,进行文件上传、下载、删除等操作。Vsftpd系统用户实现方法步骤如下:

  1. Linux系统中创建系统用户jfedu1、jfedu2,分别设置密码为123456:
useradd jfedu1

useradd jfedu2

echo 123456|passwd –stdin jfedu1

echo 123456|passwd –stdin jfedu2

  1. 修改vsftpd.conf配置文件代码如下:
anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=NO

listen_ipv6=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

  1. 通过Windows资源客户端验证,使用jfedu1、jfedu2用户登录FTP服务器,即可上传文件、删除文件、下载文件,jfedu1、jfedu2系统用户上传文件的家目录在/home/jfedu1、/home/jfedu2下,如图8-7(a)、8-7(b)所示:

图8-7(a) jfedu1用户登录FTP服务器

图8-7(b) jfedu1登录FTP服务器上传文件

Vsftpd虚拟用户配置

如果基于Vsftpd系统用户访问FTP服务器,系统用户越多越不利于管理,而且不利于系统安全管理,鉴于此,为了能更加的安全使用VSFTPD,需使用Vsftpd虚拟用户方式。

Vsftpd虚拟用户原理:虚拟用户就是没有实际的真实系统用户,而是通过映射到其中一个真实用户以及设置相应的权限来实现访问验证,虚拟用户不能登录Linux系统,从而让系统更加的安全可靠。

Vsftpd虚拟用户企业案例配置步骤如下:

  1. 安装Vsftpd虚拟用户需用到的软件及认证模块:
yum install pam* libdb-utils libdb* –skip-broken -y
  1. 创建虚拟用户临时文件/etc/vsftpd/ftpusers.txt,新建虚拟用户和密码,其中jfedu001、jfedu002为虚拟用户名,123456为密码,如果有多个用户,依次格式填写即可:
jfedu001

123456

jfedu002

123456

  1. 生成Vsftpd虚拟用户数据库认证文件,设置权限700:
db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db

chmod 700 /etc/vsftpd/vsftpd_login.db

  1. 配置PAM认证文件,/etc/pam.d/vsftpd行首加入如下两行:
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login

account required pam_userdb.so db=/etc/vsftpd/vsftpd_login

  1. 所有Vsftpd虚拟用户需要映射到一个系统用户,该系统用户不需要密码,也不需要登录,主要用于虚拟用户映射使用,创建命令如下:
useradd -s /sbin/nologin ftpuser
  1. 完整vsftpd.conf配置文件代码如下:
#global config Vsftpd 2017

anonymous_enable=YES

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=NO

listen_ipv6=YES

userlist_enable=YES

tcp_wrappers=YES

#config virtual user FTP

pam_service_name=vsftpd

guest_enable=YES

guest_username=ftpuser

user_config_dir=/etc/vsftpd/vsftpd_user_conf

virtual_use_local_privs=YES

如上Vsftpd虚拟用户配置文件参数详解:

#config virtual user FTP

pam_service_name=vsftpd 虚拟用户启用pam认证;

guest_enable=YES                            启用虚拟用户;

guest_username=ftpuser                        映射虚拟用户至系统用户ftpuser;

user_config_dir=/etc/vsftpd/vsftpd_user_conf     设置虚拟用户配置文件所在的目录;

virtual_use_local_privs=YES                    虚拟用户使用与本地用户相同的权限。

  1. 至此,所有虚拟用户共同基于/home/ftpuser主目录实现文件上传与下载,可以在/etc/vsftpd/vsftpd_user_conf目录创建虚拟用户各自的配置文件,创建虚拟用户配置文件主目录:
mkdir -p /etc/vsftpd/vsftpd_user_conf/
  1. 如下分别为虚拟用户jfedu001、jfedu002用户创建配置文件:

vim /etc/vsftpd/vsftpd_user_conf/jfedu001,同时创建私有的虚拟目录,代码如下:

local_root=/home/ftpuser/jfedu001

write_enable=YES

anon_world_readable_only=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

vim /etc/vsftpd/vsftpd_user_conf/jfedu002,同时创建私有的虚拟目录,代码如下:

local_root=/home/ftpuser/jfedu002

write_enable=YES

anon_world_readable_only=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

虚拟用户配置文件内容详解:

local_root=/home/ftpuser/jfedu002        jfedu002虚拟用户配置文件路径;

write_enable=YES                        允许登陆用户有写权限;

anon_world_readable_only=YES            允许匿名用户下载,然后读取文件;

anon_upload_enable=YES                允许匿名用户上传文件权限,只有在write_enable=YES时该参数才生效;

anon_mkdir_write_enable=YES         允许匿名用户创建目录,只有在write_enable=YES时该参数才生效;

anon_other_write_enable=YES     允许匿名用户其他权限,例如删除、重命名等。

  1. 创建虚拟用户各自虚拟目录:
mkdir -p /home/ftpuser/{jfedu001,jfedu002} ;chown -R ftpuser:ftpuser /home/ftpuser

重启Vsftpd服务,通过Windows客户端资源管理器登录Vsftpd服务端,测试结果如图8-8(a)、8-8(b)所示:

图8-8(a) jfedu001虚拟用户登录FTP服务器

图8-8(b) jfedu001虚拟用户上传下载文件