本章向读者介绍企业vsftpd服务器实战、匿名用户访问、系统用户配置及虚拟用户实战等。
1vsftpd服务器企业实战
文件传输合同(FileTransferProtocol,FTP),基于该合同FTP顾客端与服务端可以实现共享文件、上传文件、下载文件。FTP基于TCP合同生成一个虚拟的联接,主要用于控制FTP联接信息,同时再生成一个单独的TCP联接用于FTP数据传输。用户可以通过顾客端向FTP服务器端上传、下载、删除文件,FTP服务器端可以同时提供给多人共享使用。
FTP服务是Client/Server(简称C/S)模式,基于FTP合同实现FTP文件对外共享及传输的软件称之为FTP服务器源端,顾客端程序基于FTP合同,则称之为FTP顾客端,FTP顾客端可以向FTP服务器上传、下载文件。
1.1FTP传输模式
FTP基于C/S模式,FTP顾客端与服务器端有两种传输模式,分别是FTP主动模式、FTP被动模式,主被动模式均是以FTP服务器端为参照。主被动模式如图(a)、(b)所示,主被动模式详尽区别如下:
在企业实际环境中,假如FTP顾客端与FTP服务端均开放防火墙,FTP需以主动模式工作,这样只须要在FTP服务器端防火墙规则中,开放20、21端口即可。关于防火墙配置前面章节会讲解。
图1-1(a)FTP主动模式
图1-1(b)FTP被动模式
1.2vsftpd服务器安装配置
vsftpd服务器端安装有两种方式,一是基于YUM形式安装,而是基于源码编译安装linux论坛,最终实现疗效完全一致,本文采用yum安装vsftpd,步骤如下:
1.2.1yum安装vsftpd
#yuminstallvsftpd*-y
图1-2yum安装vsftpd
1.2.2复查vsftpd安装后的配置文件路径
#rpm-qlvsftpd|more
图1-3检测vsftpd安装后的配置文件路径
1.2.3启动vsftpd服务
#systemctlrestartvsftpd.service
图1-4启动vsftpd服务
1.2.4查看进程是否启动
#ps-ef|grepvsftpd
图1-5查看vsftp进程
1.2.5vsftpd.conf默认配置文件解读
anonymous_enable=YES 开启匿名用户访问;
local_enable=YES 启用本地系统用户访问;
write_enable=YES 本地系统用户写入权限;
local_umask=022 本地用户创建文件及目录默认权限掩码;
dirmessage_enable=YES 打印目录显示信息,通常用于用户第一次访问目录时,信息提示;
xferlog_enable=YES 启用上传/下载日志记录;
connect_from_port_20=YES FTP使用20端口进行数据传输;
xferlog_std_format=YES 日志文件将根据xferlog的标准格式写入;
listen=NO vsftpd不以独立的服务启动,通过xinetd服务管理,建议改成YES;
listen_ipv6=YES 启用IPV6监听;
pam_service_name=vsftpd 登录FTP服务器,依据/etc/pam.d/vsftpd中内容进行认证;
userlist_enable=YES vsftpd.user_list和ftpusers配置文件里用户禁止访问FTP;
tcp_wrappers=YES 设置vsftpd与tcp wrapper结合进行主机的访问控制,vsftpd服务器检查/etc/hosts.allow 和/etc/hosts.deny中的设置,来决定请求连接的主机,是否允许访问该FTP服务器。
1.2.6通过Windows顾客端资源管理器访问Vsftp服务器端
ftp://192.168.1.181
图1-6匿名用户访问FTP默认目录
1.2.7FTP设置为被动模式使用端口方式
FTP主被动模式,默认为主动模式,设置为被动模式使用端口方式如下:
pasv_enable=YES
pasv_min_port=60000
pasv_max_port=60100
1.3vsftpd服务器简介
目前主流的FTP服务器软件包括:vsftpd、ProFTPD、PureFTPd、Wuftpd、Server-UFTP、FileZillaServer等软件,其中Unix/Linux使用较为广泛的FTP服务器软件为vsftpd。
十分安全的FTP服务进程(VerySecureFTPdaemon,vsftpd),vsftpd在Unix/Linux发行版中最主流的FTP服务器程序,优点精巧轻柔,安全易用、稳定高效、满足企业跨部门、多用户的使用(1000用户)等。
vsftpd基于GPL开源合同发布,在中小企业中得到广泛的应用,vsftpd可以快速上手,基于vsftpd虚拟用户方法,访问验证愈发安全。vsftpd还可以基于MYSQL数据库做安全验证,多重安全防护。
1.4FTP顾客端简介
windows和Linux系统默认都自带有ftp命令程序,可以联接到FTP服务器进行交互式的上传,下载通讯。除此以外,还有大量的图形化FTP顾客端工具。
windows中常用FTP顾客端软件包括CuteFTP、FlashFXP、LeapFTP、Filezilla等。
1.5vsftpd匿名用户配置
vsftpd默认以匿名用户访问,匿名用户默认访问的FTP服务器路径为:/var/ftp/pub,匿名用户只有查看权限,难以创建、删除、修改。如需关掉FTP匿名用户访问,需更改配置文件/etc/vsftpd/vsftpd.conf,将anonymous_enable=YES更改为anonymous_enable=NO,重启vsftpd服务即可。
1、设置容许匿名用户才能上传、下载、删除文件
假如容许匿名用户才能上传、下载、删除文件,需在/etc/vsftpd/vsftpd.conf配置文件中加入如下:
anon_upload_enable=YES 允许匿名用户上传文件;
anon_mkdir_write_enable=YES 允许匿名用户创建目录;
匿名用户完整vsftpd.conf配置文件如下:
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
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
2、修改目录权限
因为默认vsftpd匿名用户有两种:anonymous、ftp,所以匿名用户假如须要上传文件、删除及更改等权限,须要ftp用户对/var/ftp/pub目录有写入权限,使用如下chown和chmod任意一种即可,设置命令如下:
方式一:
#chown-Rftp/var/ftp/pub
方式二:
#chmodo+w/var/ftp/pub
图1-6(a)修改/var/ftp/pub目录属主
图1-6(b)修改/var/ftp/pub目录写入权限
如上vsftpd.conf配置文件配置完毕linux下安装ftp客户端,同时权限设置完
4、重启vsftpd服务
#systemctlrestartvsftpd.service
5、通过Windows顾客端访问,才能上传文件、删除文件、创建目录等操作,如图1-7所示:
图1-7匿名用户访问上传文件
1.6vsftpd系统用户配置
vsftpd匿名用户设置完毕,匿名用户,任何人都可以查看FTP服务器的文件、目录,甚至可以更改、删除,此方案不适宜储存私密文件在FTP服务器,怎么保证文件或则目录专属拥有者呢,vsftpd系统用户可以实现该需求。
实现vsftpd系统用户方法验证,只需在Linux系统中创建多个用户即可,创建用户使用useradd,同时给用户设置密码,即可通过用户和密码登陆FTP,进行文件上传、下载、删除等操作。vsftpd系统用户实现方式步骤如下:
1、Linux系统中创建系统用户superman1、superman2,分别设置密码为123456:
#useraddsuperman1
#useraddsuperman2
#echo123456|passwd--stdinsuperman1
#echo123456|passwd--stdinsuperman2
图1-8创建用户并设置密码
2、修改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
3、重启vsftpd服务
#systemctlrestartvsftpd.service
4、通过Windows资源顾客端验证,使用superman1、superman2用户登入FTP服务器,即可上传文件、删除文件、下载文件linux下安装ftp客户端,superman1、superman2系统用户上传文件的家目录在/home/superman1、/home/superman2下,如图1-9(a)、1-9(b)所示:
图1-9(a)superman1用户登入FTP服务器
图1-9(b)superman1登陆FTP服务器上传文件
1.7vsftpd虚拟用户配置
注意:当容许虚拟用户登入时,就不能实现实体用户登入!!三者不共存!
假如基于vsftpd系统用户访问FTP服务器,系统用户越多越不利于管理,并且不利于系统安全管理,鉴于此,为了能愈发的安全使用vsftpd,需使用vsftpd虚拟用户方法。
vsftpd虚拟用户原理:虚拟用户就是没有实际的真实系统用户,而是通过映射到其中一个真实用户以及设置相应的权限来实现访问验证,虚拟用户不能登入Linux系统,因而让系统愈发的安全可靠。
vsftpd虚拟用户企业案例配置步骤如下:
1、安装vsftpd虚拟用户需用到的软件及认证模块;
#yuminstallpam*libdb-utilslibdb*--skip-broken-y
图1-10安装vsftpd虚拟用户需用到的软件及认证模块
2、创建虚拟用户临时文件/etc/vsftpd/ftpusers.txt,新建虚拟用户和密码linux基础教程,其中superman001、superman002为虚拟用户名,123456为密码,倘若有多个用户,依次格式填写即可;
#echo”superman001123456superman002123456″>/etc/vsftpd/ftpusers.txt
图1-11创建虚拟用户临时文件
3、生成vsftpd虚拟用户数据库认证文件,设置权限700;
#db_load-T-thash-f/etc/vsftpd/ftpusers.txt/etc/vsftpd/vsftpd_login.db
#chmod700/etc/vsftpd/vsftpd_login.db
图1-12生成vsftpd虚拟用户数据库认证文件
4、配置PAM认证文件,/etc/pam.d/vsftpd文件配置成如下两行;
#echo”auth required pam_userdb.so db=/etc/vsftpd/vsftpd_loginaccount required pam_userdb.so db=/etc/vsftpd/vsftpd_login”> /etc/pam.d/vsftpd
图1-13配置PAM认证文件
5、所有vsftpd虚拟用户须要映射到一个系统用户,该系统用户不须要密码,也不须要登陆,主要用于虚拟用户映射使用,创建命令如下;
#useradd-s/sbin/nologinftpuser
图1-14创建虚拟用户须要映射到的一个系统用户

6、完整vsftpd.conf配置文件如下;
#global config Vsftpd
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
chroot_local_user=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
allow_writeable_chroot=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 虚拟用户使用与本地用户相同的权限;
allow_writeable_chroot=YES 所有的用户都将拥有chroot权限。
7、至此,所有虚拟用户共同基于/home/ftpuser主目录实现文件上传与下载,可以在/etc/vsftpd/vsftpd_user_conf目录创建虚拟用户各自的配置文件,创建虚拟用户配置文件主目录;
#mkdir-p/etc/vsftpd/vsftpd_user_conf
图1-15创建虚拟用户配置文件主目录
8、如下分别为虚拟用户superman001、superman002用户创建配置文件;
为superman001用户创建配置文件,同时创建私有的虚拟目录,配置如下:
#echo”local_root=/home/ftpuser/superman001write_enable=YESanon_world_readable_only=YESanon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YES”>/etc/vsftpd/vsftpd_user_conf/superman001
图1-16为superman001用户创建配置文件,同时创建私有的虚拟目录
为superman002用户创建配置文件,同时创建私有的虚拟目录,配置如下:
#echo”local_root=/home/ftpuser/superman002write_enable=YESanon_world_readable_only=YESanon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YES”>/etc/vsftpd/vsftpd_user_conf/superman002
图1-17为superman002用户创建配置文件,同时创建私有的虚拟目录
虚拟用户配置文件内容解读:
local_root=/home/ftpuser/superman002 superman002虚拟用户配置文件路径;
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 允许匿名用户其他权限,例如删除、重命名等。
9、创建虚拟用户各自虚拟目录;
#mkdir-p/home/ftpuser/{superman001,superman002}
#chown-Rftpuser:ftpuser/home/ftpuser
图1-18创建虚拟用户各自虚拟目录
10、重启vsftpd服务;
#systemctlrestartvsftpd.service
图1-19启动vsftpd服务
11、通过Windows顾客端资源管理器登陆vsftpd服务端,测试结果如图1-20(a)、1-20(b)所示:
图1-20(a)superman001虚拟用户登入FTP服务器
图1-20(b)superman001虚拟用户上传下载文件

