基于CentOS7.3构建企业级Vsftpd文件服务器

文件传输协议(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)所示,主被动模式详细区别如下:

q  FTP主动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器,FTP服务器以数据端口(20)连接到客户端指定的数据端口(N+1)。

q  FTP被动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,客户端提交 PASV命令,服务器会开启一个任意的端口(P >1024),并发送PORT P命令给客户端。客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

在企业实际环境中,如果FTP客户端与FTP服务端均开放防火墙,FTP需以主动模式工作,这样只需要在FTP服务器端防火墙规则中,开放20、21端口即可。关于防火墙配置后面章节会讲解。

图1-2(a) FTP主动模式

图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服务器程序,优点小巧轻快,安全易用、稳定高效、满足企业跨部门、多用户的使用等。

Vsftpd基于GPL开源协议发布,在中小企业中得到广泛的应用,Vsftpd可以快速上手,基于Vsftpd虚拟用户方式,访问验证更加安全。Vsftpd还可以基于MYSQL数据库做安全验证,多重安全防护。

3、Vsftpd服务器安装配置

Vsftpd服务器端安装有两种方法,一是基于YUM方式安装,而是基于源码编译安装,最终实现效果完全一致,本文采用YUM安装Vsftpd,步骤如下:

(1)   在命令行执行如下命令,如图1-3所示:


yum   install     vsftpd*   -y

图1-3 YUM安装Vsftpd服务端

(2)   打印vsftpd安装后的配置文件路径、启动Vsftpd服务及查看进程是否启动,如图1-4所示:


rpm   -ql     vsftpd|more

systemctl  restart   vsftpd.service

ps   -ef |grep  vsftpd

图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/

图1-5 匿名用户访问FTP默认目录

FTP主被动模式,默认为被动模式,设置为被动模式使用端口方法如下:


pasv_enable=YES

pasv_min_port=60000

pasv_max_port=60100

1.1.4Vsftpd匿名用户配置

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所示:

图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)所示:

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

图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用户创建配置文件:

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       允许匿名用户其他权限,例如删除、重命名等。

(9)   创建虚拟用户各自虚拟目录:


mkdir -p  /home/ftpuser/{jfedu001,jfedu002} ;chown -R ftpuser:ftpuser  /home/ftpuser

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

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

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

你若觉得作者的文章写得不错,你可以奖励作者几锭银子,让文章作者感受到来自你满满的鼓励和继续创作的动力!我们支持原创!鼓励原创!

打赏之后,文章底部显示参与打赏者的记录,直接通过支付宝或者微信均可扫描打赏哟,直接按打赏根据提示操作。
自定义打赏金额,友情提示打赏金额不要超过50哦,土豪可以随意哦,51CTO谢谢您对作者的支持!谢谢你的慷慨大方!

时间: 2024-10-10 21:36:27

基于CentOS7.3构建企业级Vsftpd文件服务器的相关文章

滴滴出行基于RocketMQ构建企业级消息队列服务的实践

小结: 1. https://mp.weixin.qq.com/s/v6NM3UgX-qTI7yO1QPCJrw 滴滴出行基于RocketMQ构建企业级消息队列服务的实践 原创: 江海挺 阿里巴巴中间件 2018-11-01 原文地址:https://www.cnblogs.com/yuanjiangw/p/10780829.html

使用Docker构建基于centos7镜像的python环境

Dcokerfile配置信息 ############################################## # 基于centos7构建python3运行环境 # 构建命令: 在Dockerfile文件目录下执行 docker build -t python-centos:3.5 . # 容器启动命令: docker run -itd --name python --restart always --privileged=true -v /root/dockers/python:/

构建横向扩展文件服务器

上一篇中,主要演示了如何构建高可用SMB3.0wenjian 服务器,今天主要为大家演示如何构建横向扩展文件服务器并将Hyper-V虚拟机创建到该服务器中. 在 Windows Server 2012 中,横向扩展文件服务器设计用于提供横向扩展文件共享,该类共享可供基于文件的服务器应用程序存储连续使用.横向扩展文件共享允许从同一群集的多个节点上共享同一文件夹.例如,对于使用在 Windows Server 2012 中引入的服务器消息块 (SMB) 扩展的四节点文件服务器群集,运行 Window

基于WinSvr2016(TP)构建的“超融合技术架构”进阶篇

之前我有给大家介绍过<基于WinSrv2016(TP)构建的"超融合基础架构">,架构如下: 那大家还记得微软从Windows Server 2012推出的SOFS(横向扩展文件服务器)吗?忘了的话可以参考徐老师的博文<构建横向扩展文件服务器>,架构如下: 那么我今天想把2个东西合为一体,那么我接下来要做的就是超融合架构里再增加SOFS层上构建虚拟机,这样可以达到什么样的效果呢?最后我再告诉大家.那架构如下: 那基于之前的环境,我来构建SOFS吧: 选择SOFS

Hadoop高级编程之为Hadoop实现构建企业级安全解决方案

本章内容提要 ●    理解企业级应用的安全顾虑 ●    理解Hadoop尚未为企业级应用提供的安全机制 ●    考察用于构建企业级安全解决方案的方法 第10章讨论了Hadoop安全性以及Hadoop中用于提供安全控制的机制.当构建企业级安全解决方案(它可能会围绕着与Hadoop数据集交互的许多应用程序和企业级服务)时,保证Hadoop自身的安全仅仅是安全解决方案的一个方面.各种组织努力对数据采用一致的安全机制,而数据是从采用了不同安全策略的异构数据源中提取的.当这些组织从多个源获取数据,接

MogileFS + Nginx 实现基于CentOS7平台的分布式文件存储与访问

MogileFS是一个开源的分布式文件系统,Nginx是开源的4-7层web应用服务端以及反向代理服务端.本文基于CentOS7平台,进行MogileFS + Nginx的部署 MogileFS的一些注意事项 针对于MogileFS,有如下概念需要注意一下. MogileFS属于有中心节点形式的分布式文件系统,元数据默认存储在关系型数据库(MySQL)当中,在此处于单点,因此有必要对MySQL使用主从复制或者MHA. 按功能分为tracker,database,storage.其中tracker

跟我上“云”端(四)使用eclipselink构建企业级多租户应用

上一篇博客中我们介绍了多租户的数据隔离,文中具体的介绍了hibernate和eclipselink对于多租户的实现情况,博客的最后,我也对hibernate实现多租户的细节上做了解释,这次,我想带大家一起来使用eclipselink构建企业级的多租户项目. eclipselink的三种实现 由于eclipselink完整实现了jpa规范,我们就可以使用ejb构建一个企业级的多租户项目,首先eclipselink支持3中多租户的模式: - Single-Table Multi-tenancy,依靠

《Hadoop高级编程》之为Hadoop实现构建企业级安全解决方案

本章内容提要 ●    理解企业级应用的安全顾虑 ●    理解Hadoop尚未为企业级应用提供的安全机制 ●    考察用于构建企业级安全解决方案的方法 第10章讨论了Hadoop安全性以及Hadoop中用于提供安全控制的机制.当构建企业级安全解决方案(它可能会围绕着与Hadoop数据集交互的许多应用程序和企业级服务)时,保证Hadoop自身的安全仅仅是安全解决方案的一个方面.各种组织努力对数据采用一致的安全机制,而数据是从采用了不同安全策略的异构数据源中提取的.当这些组织从多个源获取数据,接

融云CEO韩迎:如何基于云通讯构建企业竞争力

近日,"第四届互联网+高峰论坛暨大数据应用峰会 CIO 时代中国行苏州站"活动成功举行.本次论坛由中国新一代 IT 产业推进联盟.江苏省企业信息化协会指导,CIO 时代学院.苏州工业园区人工智能产业协会.江苏省企业信息化协会苏州代表处联合主办,吸引了来自全国各地的近150名行业翘楚.知名 CIO 及专家学者参会,与会者围绕"新 IT 助力制造业再增长"的主题进行深入沟通与探讨. 活动现场 融云 CEO 韩迎受邀参会,并就"如何基于云通讯构建企业移动信息化竞