设为首页 收藏本站
查看: 1623|回复: 0

[经验分享] 基于CentOS7.3构建企业级Vsftpd文件服务器

[复制链接]

尚未签到

发表于 2017-10-23 13:29:29 | 显示全部楼层 |阅读模式
文件传输协议(File Transfer Protocol,FTP),基于该协议FTP客户端与服务端可以实现共享文件、上传文件、下载文件。 FTP 基于TCP协议生成一个虚拟的连接,主要用于控制FTP连接信息,同时再生成一个单独的TCP连接用于FTP数据传输。用户可以通过客户端向FTP服务器端上传、下载、删除文件,FTP服务器端可以同时提供给多人共享使用。

FTP服务是Client/Server(简称C/S)模式,基于FTP协议实现FTP文件对外共享及传输的软件称之为FTP服务器源端,客户端程序基于FTP协议,则称之为FTP客户端,FTP客户端可以向FTP服务器上传、下载文件。
1、FTP传输模式
FTP基于C/S模式,FTP客户端与服务器端有两种传输模式,分别是FTP主动模式、FTP被动模式,主被动模式均是以FTP服务器端为参照。主被动模式如图1-2(a)、1-2(b)所示,主被动模式详细区别如下:
(1)FTP主动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器,FTP服务器以数据端口(20)连接到客户端指定的数据端口(N+1)。
(2)FTP被动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,客户端提交 PASV命令,服务器会开启一个任意的端口(P >1024),并发送PORT P命令给客户端。客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
在企业实际环境中,如果FTP客户端与FTP服务端均开放防火墙,FTP需以主动模式工作,这样只需要在FTP服务器端防火墙规则中,开放20、21端口即可。关于防火墙配置后面章节会讲解。

wKiom1lDWSzSkpDmAAB9bg8ow7I525.png
图1-2(a) FTP主动模式
-------------------------------------------------------------------------------------------------------
wKioL1lDWUeCGsLxAAB6fItEgs4558.png
图1-2(b) FTP被动模式
2、Vsftpd服务器简介
目前主流的FTP服务器端软件包括:Vsftpd、ProFTPD、PureFTPd、Wuftpd、Server-U FTP、FileZilla Server等软件,其中Unix/Linux使用较为广泛的FTP服务器端软件为Vsftpd 。
非常安全的FTP服务进程(Very Secure FTP daemon,Vsftpd),Vsftpd在Unix/Linux发行版中最主流的FTP服务器程序,优点小巧轻快,安全易用、稳定高效、满足企业跨部门、多用户的使用等。
3、Vsftpd服务器安装配置
Vsftpd服务器端安装有两种方法,一是基于YUM方式安装,而是基于源码编译安装,最终实现效果完全一致,本文采用YUM安装Vsftpd,步骤如下:
(1)   在命令行执行如下命令,如图1-3所示:
yum   install    vsftpd*   -y

wKioL1lDWZjQAKPkAABj9o17jDo450.png
图1-3 YUM安装Vsftpd服务端
(2)   打印vsftpd安装后的配置文件路径、启动Vsftpd服务及查看进程是否启动,如图1-4所示:
rpm   -ql     vsftpd|more
systemctl  restart   vsftpd.service
ps   -ef |grep  vsftpd
wKiom1lDWaSyBSMHAABVwwmbNvk536.png
图1-4 打印Vsftpd软件安装后路径
(3)   Vsftpd.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服务器。
(4)   启动Vsftpd服务后,通过Windows客户端资源管理器访问Vsftp服务器端,如图1-5所示:
ftp://192.168.111.131/
wKiom1lDWbPwzQwUAADR3nl92ao762.png
图1-5 匿名用户访问FTP默认目录
FTP主被动模式,默认为被动模式,设置为被动模式使用端口方法如下:
pasv_enable=YES
pasv_min_port=60000
pasv_max_port=60100
4、Vsftpd匿名用户配置
Vsftpd默认以匿名用户访问,匿名用户默认访问的FTP服务器端路径为:/var/ftp/pub,匿名用户只有查看权限,无法创建、删除、修改。如需关闭FTP匿名用户访问,需修改配置文件/etc/vsftpd/vsftpd.conf,将anonymous_enable=YES修改为anonymous_enable=NO,重启Vsftpd服务即可。
如果允许匿名用户能够上传、下载、删除文件,需在/etc/vsftpd/vsftpd.conf配置文件中加入如下代码:
anon_upload_enable=YES                  允许匿名用户上传文件;
anon_mkdir_write_enable=YES          允许匿名用户创建目录;
anon_other_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
anon_other_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
由于默认Vsftpd匿名用户有两种:anonymous、ftp,所以匿名用户如果需要上传文件、删除及修改等权限,需要ftp用户对/var/ftp/pub目录有写入权限,使用如下chown和chmod任意一种即可,设置命令如下:
chown      -R  ftp         pub/
chmod          o+w     pub/
如上Vsftpd.conf配置文件配置完毕,同时权限设置完,重启vsftpd服务即可,通过Windows客户端访问,能够上传文件、删除文件、创建目录等操作,如图1-6所示:
wKioL1lDWdTTLNdeAAB8ExF-o2g167.png-wh_500x0-wm_3-wmp_4-s_1336864559.png
图1-6 匿名用户访问上传文件
5、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
(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)   通过Windows资源客户端验证,使用jfedu1、jfedu2用户登录FTP服务器,即可上传文件、删除文件、下载文件,jfedu1、jfedu2系统用户上传文件的家目录在/home/jfedu1、/home/jfedu2下,如图1-7(a)、1-7(b)所示:
wKioL1lDWfGRaITZAACAPZMTsqo153.png
图1-7(a) jfedu1用户登录FTP服务器
wKiom1lDWgrRHlQUAACDrFjL9vc896.png
图1-7(b) jfedu1登录FTP服务器上传文件
6、Vsftpd虚拟用户配置
如果基于Vsftpd系统用户访问FTP服务器,系统用户越多越不利于管理,而且不利于系统安全管理,鉴于此,为了能更加的安全使用VSFTPD,需使用Vsftpd虚拟用户方式。
Vsftpd虚拟用户原理:虚拟用户就是没有实际的真实系统用户,而是通过映射到其中一个真实用户以及设置相应的权限来实现访问验证,虚拟用户不能登录Linux系统,从而让系统更加的安全可靠。
Vsftpd虚拟用户企业案例配置步骤如下:
(1)   安装Vsftpd虚拟用户需用到的软件及认证模块:
yum  install   pam*  libdb-utils  libdb*   --skip-broken  -y
(2)   创建虚拟用户临时文件/etc/vsftpd/ftpusers.txt,新建虚拟用户和密码,其中jfedu001、jfedu002为虚拟用户名,123456为密码,如果有多个用户,依次格式填写即可:
jfedu001
123456
jfedu002
123456
(3)   生成Vsftpd虚拟用户数据库认证文件,设置权限700:
db_load  -T   -t  hash  -f   /etc/vsftpd/ftpusers.txt   /etc/vsftpd/vsftpd_login.db
chmod  700   /etc/vsftpd/vsftpd_login.db
(4)   配置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
(5)   所有Vsftpd虚拟用户需要映射到一个系统用户,该系统用户不需要密码,也不需要登录,主要用于虚拟用户映射使用,创建命令如下:
useradd    -s    /sbin/nologin    ftpuser
(6)   完整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                                     虚拟用户使用与本地用户相同的权限。
(7)   至此,所有虚拟用户共同基于/home/ftpuser主目录实现文件上传与下载,可以在/etc/vsftpd/vsftpd_user_conf目录创建虚拟用户各自的配置文件,创建虚拟用户配置文件主目录:
mkdir  -p     /etc/vsftpd/vsftpd_user_conf/
(8)   如下分别为虚拟用户jfedu001、jfedu002用户创建配置文件:
/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
/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           允许匿名用户其他权限,例如删除、重命名等。
(9)   创建虚拟用户各自虚拟目录:
mkdir -p  /home/ftpuser/{jfedu001,jfedu002}
chown -R ftpuser:ftpuser  /home/ftpuser
重启Vsftpd服务,通过Windows客户端资源管理器登录Vsftpd服务端,测试结果如图1-8(a)、1-8(b)所示:
wKiom1lDWijhdJbJAAC2I3KU2Rk336.png
图1-8(a) jfedu001虚拟用户登录FTP服务器
wKioL1lDWjXxBq-zAACHg4_fe_8470.png
图1-8(b) jfedu001虚拟用户上传下载文件


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-405745-1-1.html 上篇帖子: CentOS7上搭建FTP服务+VSFTPD配置全解析 下篇帖子: Vsftpd使用MySQL验证实验
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表