Linux基础学习笔记整理——vsftpd服务

1、vsftpd服务

1.1vsftpd服务基础

在学习如何构建FTP服务器之前,首先应对FTP的工作原理,服务器端软件有一个基本
的认识,对此将在下面分别进行介绍。

1、FTP连接及传输模式
FTP服务器默认使用TCP协议的20、21端口与客户端进行通信。20端口用与建立
数据连接,并传输文件数据。21端口用于建立控制连接,并传输FTP控制命令。根据
FTP服务器在建立数据连接过程中的主、被动关系。FTP数据连接分为主动模式和被动
模式。两者的含义及主要区别如下:

主动模式:服务器主动发起数据连接。首先由客户端向服务端的21端口建立FTP控制
连接,当需要传输数据时。客户端以PORT命令告知服务器“我已经打开了XX端口,你
过来链接我”,于是服务器从20端口向客户端的改端口发送请求并建立数据连接。
被动模式:服务器被动等待数据连接。如果客户机所在网络的防火墙禁止主动模式连
接,通常会使用被动模式,首先由客户端向服务端的21端口建立FTP控制连接,当需
要传输数据时,服务器以PASV命令告知客户端“我带开了某端口,你来连接我”,于是
客户端向服务器的改端口(非20)发送请求并建立连接。

客户端与服务器建立好数据连接后,就可以根据从控制连接中发送ftp命令上传或下载
文件。在创建文件时,根据是否进行字符转换,分为文本模式和二进制模式。

文本模式:又称ASCII(美国信息交换标准码)模式,这种模式在传输文件时使用ASCII
标准字符序列,一般只用于纯文件传输。
二进制模式:又称为Binary模式,这种模式不会转化文件中的字符序列。更适合传输
程序、图片等非文本字符文件

2、FTP用户类型:
使用FTP客户端软件访问服务器时,通常要用到一类特殊的用户账号,其他用户名为ftp
或anonymous,提供任意密码(包括空密码)都可以通过服务器的验证,这样的用户称为“
匿名用户“。匿名用户一般用于提供公共文件的下载,如提供一些免费的软件、学习资料下载
的站点
除了不需要密码验证的匿名用户以外,FTP服务器还可以直接使用本机的系统用户账号
来进行验证,这些用户通常称为“本地用户”。在RHEL6.5中匿名用户也有对应的本地系统用
户账号“ftp”,但是对于vsftpd服务来说,本地用户指的除了匿名用户以外的其他系统用户
有些FTP服务器软件还可以维护一份独立的用户数据库文件,而不是直接是有系统系统
用户账户,这些域为独立数据库文件中的FTP账户的关联性降至最低,可以为系统提供更好的
安全性。

3、FTP服务器软件的种类
在 Windows系统中,常见的FTP服务器软件包括Filezilla Seners Sery-u, 而在tinux 系统中,
stpd是目前在Linux/UNIX领域应用十分广泛的一款FTP服务软件。本课程将以ysftpd进行讲解。

vsftpd服务的名称来源于"Very Secure FTP Daemon"该软件针对安全特性方面做了大量的
设计,除了安全意外, vsftpd在速度和稳定性方面的表现也相当突出,根据 ftp.redht.com 服务器反
应的数据,ysftpd可以支持15000个用户并发连接。

4、FTP客户端工具的种类:
最简单的FTP客户端工具莫过于ftp命令程序了, Windows系统和Linux系统默认都自带有ftp
命令程序,可以连接到ftp服务器进行交互式的上传、下载通信。
除此之外,还有大量的图形化FTP客户端工具,windows中较常用的包括CuteFTP、
FlashFXPLeapFTP, Filezilla等,在图形化的客户端程序中,用户通过鼠标和菜单即可访问,管理FTP
资源。而不需要掌握FTP交互命令,因此使用户的操作更加简单、易于使用。
还有一些下载工具软件,如FlashGET, Wget等,包括大多数网页浏览器程序,都支持通过FTP协
议下载文件,但因为不具备FTP上传等管理功能,通常不称为FTP客户端工具

1.2 vsftpd的配置文件:

本章中将以Centos7系统中RPM方式安装vsftpd-3.0.2-21.el7x86-64.rpm软件包为例,来学习tp服务器的构建过程。Vstpd的官方网站位于http://wstpd.beasts.org。若希望获取最新的源码安装版本。用户可以从该站点中下载。.
通过RPM方式安装的ystpd软件包,将会自动添加名为ysftpd的系统服务,因此启动、停止vsftpd服务变得非常方便,构建vsftpd服务器的关键在于熟悉相关配置文件。ystpd服务的配置文件于/etc/ystpd目录下,包括用户列表文件(ftpusers user list)和主配置文牛(ysftpd.conf)等。

1、用户列表文件ftpusers和user list.
在tpusers user list文件中,各自记录了若干个ftp用户账号名称,两个列表文件都用于tp登陆控
制,但是控制方式存在一些差别。

tpusers文件:此文件中列出的用户将禁止登陆ystpd服务器,不管该用户是否在user list,文件中
出现。默认已包括root, bin、 daemon等用于系统运行的特殊用户。e
user list文件:此文件中包含的用户可能被禁止登陆,也可能被允许登陆,具体取决于主配置文件
ystpd.conf中的设置,当存在"userlist enable-YES"的配置项时, user list列文件方可生动。若指定
"userlist deny=YES",则仅允许列表中的用户登录。
Ftpuser文件相当于黑名单,为vsftp服务器提供了一份禁止登陆用户列表,而user_list文件提
供了一份可以灵活控制的用户列表,二者相互结合,为FTP账号的登录控制提供了便捷的途径。

2、主配置文件vsftpd.conf

在vsftpd的配置文件中,配置行采用“配置项多数"的路式。下面列出最常见的一些配置项及其
含义说明。
Vsftpd.conf常见配置项及含义说明:

匿名用户

anonymous_enable=Yes 是否允许匿名访问
anon_umask=022  设置匿名用户所上传文件的默认权限掩码值
anan_root=/var/ftp  匿名用户的FTP根目录-
anon_word_readable_only=YES  允许匿名下载
anon_upload_enable=YES      允许上传文件
anon_mkdir_write_enable=YES:允许创建目录
anon_other_write_enable=YES   开放其他写入权
anon_max_rate=0             限制最大传输速率(字节/秒)
本地用户

local_enable=YES           是否启用本地系统用户
local_umask=022           本地用户所上传文件的权限掩码
local_root=/var/ftp         设置本地用户的FTP根目录
chroot_local_user=YES       是否将用户禁锢在主目录
local_max_rate=0           限制最大传输速率(字节/秒)
chroot_list_enable=YES      配合下面的文件使用
chroot_list_file=/etc/vsftpd/chroot_list   配合使用,列表中的用户将被禁锢在目录中
全局配置

listen_address=192.168.4.1          设置监听的IP地址
listen=YES                        是否以独立运行的方式监听服务
listen_port=21                     设置监听FTP服务的端口号
write_enable=YES                 是否启用写入权限
download_enable=YES             是否允许下载文件
max_clients=0                    限制并发客户端连接数
max_per_ip=0                    限制同一IP地址的并发连接数
pasv_enable=yes                  设置最小的被动端口号
pasv_min_port=9981               设置最小的被动端口号
pasv_max_port=9981               设置最大的被动端口号
dirmessage_enable=yes             是否显示目录说明文件
xferlog_enable=yes                 是否记录ftp传输过程
xferlog_file=/var/log/vsftpd.log       日志的路径和名字
xferlog_std_format=yes             是否使用标准的ftp xferlog
chown_username=username  是否改变上传文件的属主,如果是则需要
输入一个系同用户名
connect_from_port_20=YES   允许服务器主动模式(从20端口建立连接)
pasv_enable=YES		允许被动模式连接
pasv_max_port=24600		设置用于被动模式的服务器最大端口号
pasv_min_port=24500		设置用于被动模式的服务器最小端口号
pam_service_name=vsftpd	设置用于用户认证的PAM文件位置(/etc/pam.d/目录
中对应的文件名)
userlist_enable=YES		是否启用user_list用户列表文件
userlist_deny=YES			是否禁用user_list列表文件中的用户账号
max_clients=0				最多允许多少个客户端同时连接(0为无限制)
max_per_ip=0				对来自同一个IP地址的客户端最多允许多少个并发连接
(0为无限制)
tcp_wrappers=YES			是否启用TCP_Wrappers主机访问控制

2、搭建vsftpd服务

2·1 匿名用户

访问匿名FTP服务器时,不需要密码验证,任何人都可以使用,非常方便,当需要提供
公开访问的文件下载资源(如:ftp.redhat.com),或者让用户上传一些不需要保密的数据资
料时,可以选择搭建匿名FTP服务器。

(1)准备匿名FTP访问目录
在CentOS7系统中,FTP匿名用户对应的系统为ftp,他的宿主目录/var/ftp也就是匿名
访问vsftpd服务时所在的FTP根目录,基于安全考虑,FTP根目录的权限不允许匿名用户或
其他用户有写入权限(否则访问时会报500错误)
为了后续测试方便,可以在/var/ftp目录下创建一个用于下载测试文件,例如,执行以下
操作创建一个压缩包文件作为测试。
tar zcf /var/ftp/vsftpconf.tar.gz /etc/ftp

/var/ftp目录下默认设置了一个名为pub的子文件夹,可以给匿名访问ftp时提供上传文件
使用,执行操作可以使匿名用户ftp对该目录拥有写入权限,以便上传数据。

在这里插入图片描述
(2)开放匿名用户配置并启动vsftpd服务
配置vsftpd时,是否开放匿名ftp访问取决于配置项“anonymous_enable”,只要将其设
置为“YES”,即表示允许匿名用户访问,反之表示禁用。启用匿名用户后,默认情况下具有
读取权限,匿名用户可以完成目录列表、下载文件等基本的FTP任务。
若要进一步开放权限,允许匿名上传文件,则需要开放更多的配置,主要涉及以下几个
配置项,分别对应不同的FTP权限:

write_enable:用于启用、禁止vsftpd服务的写入权限,是全局性的选项,不管是
匿名用户、本地用户还是虚拟用户,若要允许其上传,都必须启用此配置项
anon_upload_enable:用于允许、禁止匿名用户在现有的可写入目录中上传文件
anon_mkdir_write_enable:用于允许、禁止匿名用户在现有的可写目录中创建文
件夹,即上传目录。
anon_other_write_enable:用于允许、禁止匿名用户的其他写入权限,包括删除
改名、覆盖等操作。

上述四个配置项,应根据匿名FTP服务器的实际应用需求来选择设置,若只要求上传文
件,则只需要启用write_enable、anon_upload_enable就可以了,若还要求能够上传文件夹
,则需要进一步启用anon_mkdir_write_enable。只有在希望匿名用户能够对上传文件和目
录进行覆盖、删除等管理操作时,才需要启用anon_other_write_enable。
例如,若要设置vsftpd服务器提供匿名访问,允许匿名用户上传、下载,但禁止使用删
除操作是,可以参考以下步骤修改配置文件:

2·2用户验证

vsftpd可以直接使用linux主机系统用户作为FTP账户,提供基于用户名/密码的登录验证。用
户使用系统用户账号登录FTP服务器后,将默认位于自己的宿主目录中,且在宿主目录中用于读
写权限。
(1)基本的本地用户验证:
使用基本的本地用户验证,只需打开local_enable、write_enable两个配置项,为了提
高上传文件的权限,可以将权限掩码设置为077(仅属主用户拥有权限)。若还希望将所有
的宿主目录禁锢在其宿主目录中,可以添加chroot_local_user配置项目。否则用户将能够任
意切换到服务器的/var、/etc等宿主目录以外的目录中,存在极大的安全隐患。
在访问要求用户验证FTP服务器时,如果使用URL地址的形式,必须制定FTP账号名称
如访问ftp://192.168.0.2,可以根据提示输入密码进行验证,当然也可以在URL地址中直接
指定密码,如访问ftp://zs:123@192.168.0.2
通过ftp命令访问FTP服务器,只需要输入正确的用户名密码即可,
当我们限定了用户不能跳出其主目录之后,使用该用户登录FTP时往往或遇到这个错误
500OOPS:vsftpd:refusing to run with writable root inside chroot()
解决方法:
在vsftpd.conf配置文件中添加allow_writeable_chroot=YES就可以解决
useradd zs
passwd zs

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值