Vsftpd配置(Centos7)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Vsftpd配置(Centos7)
6.1、Vsftpd介绍:
⽤于上传图⽚和使⽤ FTP 协议访问图⽚服务器。

解决分布式环境的图⽚访问问题,使⽤vsftpd对图⽚做统⼀管理。

vsftpd 是“very secure FTP daemon”的缩写,安全性是它的⼀个最⼤的特点。

vsftpd 是⼀个在 UNIX 类操作系统上运⾏
的服务的名字,它可以运⾏在诸如 Linux、BSD、Solaris、 HP-UNIX 等系统上⾯,是⼀个完全免费的、开放源代码的 ftp 服
务器软件,⽀持很多其他的FTP 服务器所不⽀持的特征。

⽐如:⾮常⾼的安全性需求、带宽限制、良好的可伸缩性、可创建虚
拟⽤户、⽀持IPv6、速率⾼等。

vsftpd是⼀款在Linux发⾏版中最受推崇的FTP服务器程序。

特点是⼩巧轻快,安全易⽤。

在开
源操作系统中常⽤的FTPD套件主要还有ProFTPD、PureFTPd和wuftpd等。

1、特点:
(1)它是⼀个安全、⾼速、稳定的FTP服务器;
(2)它可以做基于多个IP的虚拟FTP主机服务器;
(3)匿名服务设置⼗分⽅便;
(4)匿名FTP的根⽬录不需要任何特殊的⽬录结构,或系统程序或其它的系统⽂件;
(5)不执⾏任何外部程序,从⽽减少了安全隐患;
(6)⽀持虚拟⽤户,并且每个虚拟⽤户可以具有独⽴的属性配置;
(7)可以设置从inetd中启动,或者独⽴的FTP服务器两种运⾏⽅式;
(8)⽀持两种认证⽅式(PAP或xinetd/ tcp_wrappers);
(9)⽀持带宽限制;
(10)不⽀持⽂件的在线编辑,需要先将⽂件下载,编辑完成后再上传。

VSFTP市场应⽤⼗分⼴范,很多国际性的⼤公司和⾃由开源组织在使⽤.
2、vsftpd的访问模式:
(1)ftp基于的传输协议:
FTP是仅基于tcp的服务,不⽀持udp。

FTP使⽤2个端⼝,⼀个数据端⼝和⼀个命令端⼝(也可叫做控制端⼝)。

通常来说这两个
端⼝是21(命令端⼝)和20(数据端⼝)。

但FTP⼯作⽅式的不同,数据端⼝并不总是20,这就是主动与被动FTP的最⼤不同之处。

(2)port⽅式:主动模式:
1)port(主动)⽅式的连接过程是:
客户端向服务器的FTP端⼝(默认是21)发送连接请求,服务器接受连接,建⽴⼀条命令链路。

当需要传送数据时,服务器从20端⼝向客户端的空闲端⼝发送连接请求,建⽴⼀条数据链路来传送数据。

即当需要传送数据时,客
户端在命令链路上⽤PORT命令告诉服务器"我打开了***X端⼝,你过来连接我"。

于是服务器从20端⼝向客户端的***X 端⼝发送连
接请求,建⽴⼀条数据链路来传送数据。

2)主动模式的FTP⼯作流程:
客户端从⼀个任意的⾮特权端⼝N(N>1024)连接到FTP服务器的命令端⼝,也就是21端⼝。

然后客户端开始监听端⼝N+1,并
发送FTP命令"portN+1"到FTP服务器。

接着服务器会从它⾃⼰的数据端⼝(20)连接到客户端指定的数据端⼝
(N+1)。

针对FTP
服务器前⾯的防⽕墙来说,必须允许以下通讯才能⽀持主动⽅式FTP:
A、任何⼤于1024的端⼝到FTP服务器的21端⼝。

(客户端初始化的连接)
B、FTP服务器的21端⼝到⼤于1024的端⼝。

(服务器响应客户端的控制端⼝)
C、FTP服务器的20端⼝到⼤于1024的端⼝。

(服务器端初始化数据连接到客户端的数据端⼝)
D、⼤于1024端⼝到FTP服务器的20端⼝(客户端发送ACK响应到服务器的数据端⼝)
即、主动FTP:
命令连接:客户端⼤于1024的端⼝ --> 服务器 21端⼝
数据连接:客户端⼤于1024的端⼝ <-- 服务器 20端⼝
(3)pasv⽅式:被动模式:
1)pasv(被动)⽅式的连接过程是:
客户端向服务器的FTP端⼝(默认是21)发送连接请求,服务器接受连接,建⽴⼀条命令链路。

当需要传送数据时,客户端向服务器的空闲端⼝发送连接请求,建⽴⼀条数据链路来传送数据。

即当需要传送数据时,服务器在命
令链路上⽤PASV命令告诉客户端"我打开了***X端⼝,你过来连接我"。

于是客户端向服务器的***X端⼝发送连接请求,建⽴⼀条
数据链路来传送数据。

2)被动模式的FTP⼯作流程 (有效解决了服务器发起到客户的连接问题) 当客户端通知服务器它处于被动模式时才启⽤。

在被动⽅式FTP
中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端⼝的⼊⽅向连接被防⽕墙过滤掉的问题。

当开启
⼀个FTP连接时,客户端打开两个任意的⾮特权本地端⼝(N>1024和N+1)。

第⼀个端⼝连接服务器的21端⼝,但与主动⽅式的FTP不
同,客户端不会提交PORT命令并允许服务器来回连它的数据端⼝,⽽是提交PASV命令。

这样做的结果是服务器会开启⼀个任意的⾮特
权端⼝(P>1024),并发送PORTP命令给客户端。

然后客户端发起从本地端⼝N+1到服务器的端⼝P的连接⽤来传送数据。

对于服务器
端的防⽕墙来说,必须允许下⾯的通讯才能⽀持被动⽅式的FTP:
A、从任何⼤于1024的端⼝到服务器的21端⼝(客户端初始化的连接)
B、服务器的21端⼝到任何⼤于1024的端⼝(服务器响应到客户端的控制端⼝的连接)
C、从任何⼤于1024端⼝到服务器的⼤于1024端⼝(客户端初始化数据连接到服务器指定的任意端⼝)
D、服务器的⼤于1024端⼝到远程的⼤于1024的端⼝(服务器发送ACK响应和数据到客户端的数据端⼝)
即:被动FTP:
命令连接:客户端⼤于1024的端⼝ --> 服务器 21端⼝
数据连接:客户端⼤于1024的端⼝ --> 服务器⼤于1023的端⼝
(4)主动与被动FTP优缺点:
1)主动FTP对FTP服务器的管理有利,但对客户端的管理不利。

因为FTP服务器企图与客户端的⾼位随机端⼝建⽴连接,⽽这个端⼝很有可能被客户端的防⽕墙阻塞掉。

2)被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。

因为客户端要与服务器端建⽴两个连接,其中⼀个连到⼀个⾼位随机端⼝,⽽这个端⼝很有可能被服
务器端的防⽕墙阻塞掉。

3)随着WWW的⼴泛流⾏,许多⼈习惯⽤web浏览器作为FTP客户端。

⼤多数浏览器只在访问ftp://这样的URL时才⽀持被动模式。

这到底是好还是坏取决于服务器和
防⽕墙的配置。

通常情况下会选⽤被动模式的FTP。

3、vsftpd的三种认证模式:
(1)匿名开放模式:是⼀种最不安全的认证模式,任何⼈都可以⽆需密码验证⽽直接登陆,在登录FTP时使⽤默认的⽤户名,⼀般是ftp或anonymous。

(2)本地⽤户模式:是通过Linux系统本地的账户密码信息进⾏认证的模式,在/etc/passwd中,相较于匿名开放模式更安全,⽽且配置起来简单。

(3)虚拟⽤户模式:是这三种模式中最安全的⼀种认证模式,它需要为FTP服务单独建⽴⽤户数据库⽂件,虚拟出⽤来进⾏⼝令验证的账户信息,⽽这些
账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进⾏认证使⽤。

使⽤虚拟⽤户账号可以提供集中管理的FTP根⽬录,⽅便了管理员的管理,
同时将⽤于FTP登录的⽤户名、密码与系统⽤户账号区别开,进⼀步增强了FTP服务器的安全性。

某种意义上来说,匿名⽤户也是系统⽤户,只是系统⽤户
的⼀个映射。

公开的FTP都不会使⽤系统⽤户作为FTP帐号,⽽更多的采⽤了虚拟⽤户,这样能保证系统的安全性。

4、vsftpd服务常⽤的参数以及作⽤
(1)tcp_wrappers=YES
############################################################################
#设置vsftpd是否与tcp wrapper相结合来进⾏主机的访问控制,默认开启;
#如果启⽤,则vsftpd服务器会检查/etc/hosts.allow 和/etc/hosts.deny 中的设置,来决定请求连接的
#主机,是否允许访问该FTP服务器。

#⽐如:若要仅允许172.16.1.0⽹段的⽤户可以连接FTP服务器,则在需要在相应的配置⽂件中添加以下内容:
#[root@m01 vsftpd]# vim /etc/hosts.deny
#vsftpd:all:deny
#[root@m01 vsftpd]# vim /etc/hosts.allow
#vsftpd:172.16.1.0/255.255.255.0:allow
############################################################################
(2)userlist_enable=YES
#########################################################################
#开启控制⽤户访问,默认开启;
#当 userlist_enable=NO时user_list列表不⽣效,此时只有user_list和不在ftpusers⾥⾯的系统⽤户可以访问;#当 userlist_enable=YES,userlist_deny=YES时此时只有不在ftpusers和user_list的系统⽤户可以访问(默认);#当 userlist_enable=YES , userlist_deny=NO时此时只有user_list⽤户可以访问,只能⽤命令⾏进⾏访问;
#如果⽤户同时出现在ftpuser和user_list中,ftpuser的优先权⼤于user_list;
############################################################################
(3)chroot_local_user,chroot_list_enable介绍,默认都是不开启的:
chroot_list_enable=NO
#设置是否启⽤chroot_list_file配置项指定的⽤户列表⽂件。

默认值为NO。

chroot_list_file=/etc/vsftpd.chroot_list
#⽤于指定⽤户列表⽂件,该⽂件⽤于控制哪些⽤户可以切换到⽤户家⽬录的上级⽬录
chroot_local_user=YES
#所有的⽤户都不能切换到其它的⽬录,默认是NO;
(4)dirmessage_enable=YES
默认为开启。

在需要访问的⽬录下创建".message"⽂件,并写⼊欢迎语,这样切换到该⽬录时就会显⽰
欢迎信息。

6.2、安装Vsftpd服务:
[root@slavenode1 ~]# yum install vsftpd -y
[root@slavenode1 ~]# rpm -qa vsftpd
vsftpd-3.0.2-27.el7.x86_64
6.3、配置⽂件说明:
/etc/vsftpd/vsftpd.conf
#vsftpd 的核⼼配置⽂件。

/etc/vsftpd/ftpusers
#⿊名单⽂件,此⽂件⾥的⽤户不允许访问 FTP 服务器。

/etc/vsftpd/user_list
#是⽩名单⽂件,此⽂件⾥的⽤户允许访问 FTP 服务器。

6.4、默认配置参数:
[root@slavenode1 ~]# egrep -v "^#|^$" /etc/vsftpd/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
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
#备份原配置⽂件
[root@slavenode1 ~]# cp -a /etc/vsftpd/vsftpd.conf{,.bak} 6.5、Vsftpd匿名⽤户登陆配置:
1、vsftpd.conf 配置参数:
[root@slavenode1 ~]# cat /etc/vsftpd/vsftpd.conf anonymous_enable=YES
#启⽤匿名访问模式
anon_umask=022
#匿名⽤户上传⽂件的umask值
anon_upload_enable=YES
#允许匿名⽤户上传⽂件
anon_mkdir_write_enable=YES
#允许匿名⽤户创建⽬录
anon_other_write_enable=YES
#允许匿名⽤户重命名、删除等操作
anon_root=/data/anon
#匿名⽤户的ftp根⽬录
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_port=21
#vsftpd服务监听的端⼝号
listen_address=0.0.0.0
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
pasv_enable=YES
#启⽤ftp的被动模式
pasv_min_port=45000
#PASV模式最⼩端⼝号
pasv_max_port=49000
#PASV模式最⼤端⼝号
2、创建并授权匿名⽤户FTP根⽬录
[root@slavenode1 ~]# mkdir -p /data/anon/pub
[root@slavenode1 ~]# chown -R ftp.ftp /data/anon/pub/ #匿名⽤户登陆后默认是以ftp⽤户的权限创建⽂件的
3、启动vsftpd服务,并加⼊开机启动
[root@slavenode1 ~]# systemctl start vsftpd
[root@slavenode1 ~]# systemctl enable vsftpd
[root@slavenode1 ~]# netstat -tunlp | grep vsftpd
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 15767/vsftpd
4、使⽤FileZilla进⾏测试:
(1)连接Vsftpd服务:
(2)操作测试:
(3)在linux服务器中查看创建的内容:
[root@slavenode1 ~]# ls -l /data/anon/pub/
总⽤量 112
-rw-r--r-- 1 ftp ftp 110868 5⽉ 28 10:57 lc_picture.jpg drwxr-xr-x 2 ftp ftp 6 5⽉ 28 10:57 test_dir
6.6、Vsftpd本地⽤户登陆配置:
1、vsftpd.conf 配置参数:
[root@slavenode1 ~]# cat /etc/vsftpd/vsftpd.conf
#禁⽌匿名登录FTP服务器
anonymous_enable=NO
#允许本地⽤户登录FTP服务器
local_enable=YES
#可以上传(全局控制)
write_enable=YES
#允许下载
#download_enable=YES
#本地⽤户上传⽂件的umask
local_umask=022
#设置本地⽤户登录后所在⽬录
local_root=/var/ftp/test
#全部⽤户被限制在主⽬录
chroot_local_user=YES
#允许对FTP根⽬录执⾏写⼊操作
allow_writeable_chroot=YES
#是否在进⼊新⽬录时显⽰ message_file ⽂件中的内容
dirmessage_enable=YES
#启⽤⽇志
xferlog_enable=YES
#vsftpd主动模式下开启的数据端⼝,在被动模式下不启动
connect_from_port_20=YES
#⽇志是否进⾏格式化
xferlog_std_format=YES
#监听的端⼝号
listen_port=21
#监听本地所有端⼝,默认监听本地所有端⼝
listen_address=0.0.0.0
#独⽴服务
listen=YES
#centos7增加此设置,关闭ipv6本地监听,默认监听ipv4和ipv6地址
listen_ipv6=NO
#认证模式
pam_service_name=vsftpd
#启⽤⽤户列表
userlist_enable=YES
#启⽤tcp_wrappers
tcp_wrappers=YES
#开启被动模式
pasv_enable=YES
#FTP服务器公⽹IP(也就是当前阿⾥云服务器的公⽹ IP)
#pasv_address=120.xx.xx.xx
#设置被动模式下,建⽴数据传输可使⽤port范围的最⼩值
pasv_min_port=10000
#设置被动模式下,建⽴数据传输可使⽤port范围的最⼤值
pasv_max_port=10088
2、创建本地虚拟⽤户和密码:
[root@slavenode1 ~]# useradd -s /sbin/nologin ftptest
#注意,这⾥创建ftp虚拟⽤户时必须要带其家⽬录,不能带-M参数,否则会报以下两⾏错误:#响应: 500 OOPS: cannot change directory:/home/ftptest
#错误: 严重错误: ⽆法连接到服务器
[root@slavenode1 ~]# echo "ftptest@lc" | passwd --stdin ftptest
3、创建⼀个所有⽤户登陆到ftp后被限制在该⽬录下的⽬录:
[root@slavenode1 ~]# mkdir -p /var/ftp/test
4、更改/var/ftp/test⽬录的拥有者为ftptest
[root@slavenode1 ~]# chown -R ftptest:ftptest /var/ftp/test
5、启动服务:
[root@slavenode1 ~]# systemctl start vsftpd
[root@slavenode1 ~]# systemctl enable vsftpd
[root@slavenode1 ~]# netstat -tunlp | grep vsftpd
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1401/vsftpd
6、测试:
(1)连接服务器:
(2)操作测试:
(3)查看上传的⽂件权限:
[root@slavenode1 ~]# ls -l /var/ftp/test/
总⽤量 176
drwxr-xr-x 2 ftptest ftptest 6 5⽉ 28 13:23 test_dir
-rw-r--r-- 1 ftptest ftptest 176654 5⽉ 28 13:23 test_picture.jpg
7、补充说明:
(1)在以上配置下,以后创建的⽤户访问ftp服务器都会被控制到/var/ftp/test⽬录之下(只有查看的权限,因为,创建的虚拟⽤户是以/var/ftp/test/⽬录其它⽤户的"r-x"权限进⼊的,如果想要有所有的操作权限,在创建⽤户时需要,指定新建⽤户主组,例如,useradd -g ftptest -s /sbin/nologin liu):
例如:
[root@slavenode1 ~]# useradd -s /sbin/nologin liu
[root@slavenode1 ~]# echo "liu" | passwd --stdin liu
(3)每个本地⽤户在ftp服务器上都有⼀个单独的⽬录:
将/etc/vsftpd/vsftpd.conf配置⽂件中的"local_root=/var/ftp/test"注释掉。

例如:
[root@slavenode1 ~]# useradd -s /sbin/nologin -M chang
[root@slavenode1 ~]# echo "chang" | passwd --stdin chang
[root@slavenode1 ~]# mkdir -p /chang
[root@slavenode1 ~]# chown chang.chang /chang
[root@slavenode1 ~]# usermod -d /chang chang
6.7、vsftp连接很慢的解决办法
VSFTP连接时很慢,因为默认开启了reverse_lookup(反向解析),然后在vsftpd.conf中加上
reverse_lookup_enable=NO,service vsftpd restart。

相关文档
最新文档