一、FTP服务概述:

    FTP:(File Transfer Protocol,文件传输协议)是典型的C/S结构的应用层网络协议。需要相应的客户端和服务器端软件才能进行文件传输。

1、FTP连接及传输模式

     FTP服务器默认使用TCP协议的20、21端口与客户端进行通信。21端口用于建立控制连接,并传输FTP控制命令;20端口用于建立数据连接,并传输文件数据。

     根据FTP服务器在建立数据连接过程中的主、被动关系,FTP数据连接分为:主动模式和被动模式。

两者区别如下:

  主动模式:

     首先客户段向连接服务器21端口建立FTP控制连接,当需要传输数据时,客户端以PORT(主动)命令告知服务器“我打开了某某端口,你来连接我”,于是服务器从20端口向客户端的该端口发送请求并建立数据连接。

  

  被动模式: 

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


传输模式:

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

 文本模式又称为ASCII模式,这种模式在传输文件时使用ASCII字符序列,一般只用于纯文本文件传输。

 二进制模式又称为Binary模式,这种模式不会转换文件中的字符序列,更适合传输程序、图片等文件。

说明:使用二进制模式比文本模式更有效率,大多数FTP客户端工具可以根据文件类型自动选择文件传输模式,而无需用户手工指定。

2、FTP用户类型

  匿名用户:其用户名为anonymous和ftp,提供任意密码(包括空密码)都可以通过服务器验证,这样的用户称之为“匿名用户”。匿名用户一般用于提供公共文件的下载,如一些提供免费软件、学习资料下载的站点。

  本地用户:就是以真实的用户名和密码进行登录,但前提条件是用户在FTP服务器上拥有自己的帐号.用真实帐号登录后,其登录的目录为用户自己的目录,该目录在系统建立帐号时系统就自动创建.

  虚拟用户:FTP服务器软件可以维护一份独立的用户数据库文件,而不是直接使用本地用户账号。这些位于独立数据库文件中的FTP用户账号,通常称为“虚拟用户”,使用FTP虚拟用户可以提供更好的安全性。

3、FTP服务器软件的种类

   Wu-ftpd服务器是早期较为流行的FTP服务器程序之一,功能强大且稳定性也较出色。但是安全性比Proftpd和vsftpd要差一些。

   Proftpd服务器在Wu-ftpd的基础上进行改进,配置起来也相对比较容易,执行效率和安全性方面也得到很大的提高。

  vsftpd服务器主要基于安全性进行改进,vsftpd在速度和稳定性方面的表现也很突出。vsftpd可以支持15000个用户并发连接。

注:本文主要介绍的Vsftpd软件

4、FTP客户端软件

  Windows平台:CuteFTP、FlashFXP、LeapFTP、Filezilla等

  Linux平台:gftp、kuftp等

二、FTP服务基础知识

在redhat5系统中,安装vsftpd软件,下面由redhat5上安装vsftpd,介绍相关内容。

   vsftpd服务的配置文件默认位于:/etc/vsftpd/文件夹中,主要包括用户控制列表文件(ftpusers、user_list)和主配置文件(vsftpd.conf)。

1、用户控制列表文件ftpusers和user_list

   ftpusers和user_list文件中均包含一份FTP用户名的列表,两个文件虽然都用于FTP用户控制,但是之间存在一些差别。

ftpusers文件:(就像黑名单),该文件中包含的用户账号将禁止登录vsftpd服务器,不管该用户是否存在user_list文件中出现。通常将root、bin、daemon等特殊用户列在改文件中,禁止用户登录FTP服务。

user_list文件:该文件中包含的用户账号可能被禁止登录,也可能被允许登录,具体在主配置文件vsftpd.conf中决定。当存在"userlist_enable=YES"的配置项时,user_list文件生效,如果配置"userlist_deny=YES",则禁止列表中的用户账号登录,如果配置"userlist_deny=NO",则仅允许列表中的用户账号登录。

2、主配置文件/etc/vsftpd/vsftpd.conf

    在vsftpd主配置文件中,配置行采用“配置项=参数”的格式。下面列出vsftpd.conf文件中常见配置项:

作用范围配置项及示例含义说明





匿名用户

anonymous_enable=YES是否允许匿名访问
anon_umask=022设置匿名用户所上传的默认权限
anon_root=/var/ftp设置匿名用户FTP根目录(缺省为/var/ftp/)
anon_upload_enable=YES是否允许匿名用户上传文件
anon_mkdir_write_enable=YES是否允许匿名用户有创建目录的写权限
anon_other_write_enable=YES是否允许匿名用户有其他写入权限。如对文件改名、覆盖及删除文件
anon_max_rate=0限制匿名用户的最大传输速率(0位无限制)单位为字节




本地用户

local_enable=YES是否允许本地系统用户访问
local_umask=022设置本地用户所上传文件的默认权限掩码值
local_root=/var/ftp设置本地用户的FTP根目录(缺省为用户的宿主目录)
chroot_local_user=YES是否将FTP本地用户禁锢在宿主目录中
local_max_rate=0限制本地用户最大传输速率(0为无限制),单位为字节
全局配置listen=YES是否以独立运行的方式监听服务
listen_port=21设置监听FTP服务的端口号
write_enable=YES启用任何形式的写入权限(如上传、删除文件等)都需要开启此项
download_enable=YES是否允许下载文件(建立仅限于浏览、上传的FTP服务时可将其设为NO)
dirmessage_enable=YES用户切换进入目录时显示.message文件(如果存在)的内容
xferlog_enable=YES启用xferlog日志,默认记录到/var/log/xferlog文件
xferlog_std_format=YES启用标准的xferlog日志格式,若禁用此项,将使用vsftpd自己的日志格式
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_client=0最多允许多个客户端同时连接(0无限制)
max_per_ip=0对来自相同IP地址的客户端,最多允许多少个并发连接(0为无限制)
tcp_wrappers=YES是否启用TCP_Wrappers主机访问控制

说明:关于vsftpd文件中的更多配置选项,使用man vsftpd.conf查看帮助。