FTP(File Transfer Protocol,文件传输协议)是IETF Network Working Group所制定的一套标准协议,属于网络协议组的应用层,FTP基于TCP(Transmission Control Protocol,传输控制协议)实现文件传输。FTP是Internet传递文件最主要的方法。
FTP采用客户端/服务器的模式,如图1-1所示,设备可以作为FTP服务器,提供远程客户端的接入与程序操作。用户可以通过客户端向服务器发出命令,查看FTP服务器目录下的文件,并把文件从远程计算机上拷到本地,或把本地的文件传送到服务器上。除此之外,FTP还提供登录验证及读写权限控制等功能。
FTP在客户端和服务器之间建立了两条TCP连接,分别是控制连接和数据连接。
控制连接使用端口21,负责传输控制命令,控制连接始终处于开启状态。
数据连接使用端口20,负责传输数据。服务器可以主动打开数据连接,也可主动关闭数据连接。每传输一份文件或目录,都会建立一个新的数据连接。
对于比较简单的连接只需要建立控制连接,客户端向服务器发送命令,服务器接收到命令则进行命令响应,其过程如图1-2所示。
当客户端发出的命令需要上传或下载数据时,不仅要建立控制连接还需要建立数据连接。
FTP客户端要想访问FTP服务器上的文件,必须拥有该FTP服务器授权的用户账号。设备缺省情况下支持设定的最大用户个数为10个,每个用户最大连接数为2个,服务器最大连接数为10个。
同时,可定义用户访问文件的读写权限,此功能能够有效防止未经授权的用户访问内部文件。当用户FTP登录失败次数达到设定的阈值后,该用户的IP地址或用户名将被锁定,在一定时间内,所有通过该IP地址或用户名登录的用户均不能正常连接。
当设备收到FTP连接请求时,FTP服务器将要求客户端提供登录用户名和密码以进行身份认证。
如果客户端通过身份认证,即可执行FTP客户端命令进行操作。目前FTP服务器支持的FTP客户端命令如下表。
FTP服务器支持的FTP客户端命令
ascii |
close |
mdelete |
mput |
quit |
size |
---|---|---|---|---|---|
bin |
delete |
mdir |
nlist |
recv |
system |
bye |
dir |
mget |
passive |
rename |
type |
cd |
get |
mkdir |
put |
rmdir |
user |
cdup |
ls |
mls |
pwd |
send |
以上FTP客户端命令的用法请参考使用的FTP客户端软件的文档。另外,FTP客户端工具(如CuteFTP和FlashFXP等)均提供了图形化的操作界面,使用此类工具可以无需再通过FTP命令进行操作。
RFC 959:FILE TRANSFER PROTOCOL (FTP)
RFC 3659:Extensions to FTP
RFC 2228:FTP Security Extensions
RFC 2428:FTP Extensions for IPv6 and NATs
RFC 1635:How to Use Anonymous FTP
配置FTP服务器基本功能
(可选)配置FTP会话管理
(可选)配置FTP锁定功能
(可选)配置FTP服务器支持AAA认证
(可选)配置FTP用户读写权限控制功能
建立FTP服务器,配置用户名、密码和顶层目录,向FTP客户端提供FTP服务。
进入特权模式。
enable
进入全局配置模式。
configure terminal
开启FTP Server功能
ftp-server enable
缺省情况下,FTP服务器处于关闭状态。
配置服务器顶层目录
ftp-server topdir directory
缺省情况下,未配置FTP客户端能够进行文件读写操作的目录范围,即禁止客户端访问FTP服务器上任何目录。
配置服务器登录用户名和密码
ftp-server username username [ privilege level ] password [ type ] password
缺省情况下,未配置FTP服务器的登录用户名和密码,即不限制登录用户。
会话的有效次数,是指一个FTP会话在登陆过程中,用户最多可以进行账号密码认证的次数。
会话的登陆有效时间,是指用户建立链接后,每次认证用户账号和密码的最长在线时间。在该有效时间内用户若未再次进行用户密码认证,将被中止会话,从而保证其他用户能够登陆。
会话的空闲时间,是指在一个FTP会话中从上次FTP操作完成后,到下次FTP操作开始的时长。服务器在响应完一个FTP客户端命令操作后(如一个文件全部传输完毕后),将重新开始计算会话空闲时间;在下一个FTP客户端命令操作到来的时,停止计算会话空闲时间。因此会话空闲时限的配置并不会对某些耗时的文件传输操作带来任何影响。
进入特权模式。
enable
进入全局配置模式。
configure terminal
配置FTP会话管理。请至少选择其中一项进行配置。
配置会话登陆有效次数。
ftp-server login times times
缺省情况下,FTP会话的登陆有效次数为1次,即在一次输入错误的用户名或密码时,会话被中止,从而允许其他用户上线。
配置会话登陆有效时长。
ftp-server login timeout time
缺省情况下,FTP会话登陆的有效时长为2分钟
配置会话空闲时限。
ftp-server timeout time
缺省情况下,FTP会话的空闲时限为10分钟。
配置会话的最大连接个数。
ftp-server max-sessions number
缺省情况下,FTP会话的最大连接个数为20个。
开启IP地址锁定功能后,在一个FTP会话在登陆过程中,用户在累计输入错误的用户名或密码的进行登录的次数达到配置的上限时,会话被中止,该用户的IP地址会被锁定,所有通过该IP的地址的用户均无法正常登录。
开启用户名锁定功能后,在一个FTP会话在登陆过程中,当本地已配置的用户在输入错误的密码的进行登录的次数达到配置的上限时,会话被中止,该用户的用户名会被锁定,该用户无法正常登录,其他用户不受影响。
会话的锁定有效时长是指用户登录失败达上限次数被锁定后,需要等待自动解锁的时长。在该时间内被锁定的用户无法正常登录,时长过后才能正常登录。
FTP锁定功能允许登录验证的次数是指当锁定功能打开时,用户最多可以进行账号密码认证的次数。默认设置为3次,若认证失败的次数超过配置的上限,会话被中止,从而锁定该用户。
开启IP地址锁定功能,IP地址锁定个数达到上限后,会启用全锁定,此时FTP服务器不再接受任何连接,直到被锁定的IP地址个数下降到最大值以下,才允许新用户连接。
进入特权模式。
enable
进入全局配置模式。
configure terminal
配置FTP锁定功能。请至少选择其中一项进行配置。
关闭FTP基于IP地址的锁定功能。
ftp-server login ip-block disable
缺省情况下,FTP基于IP地址锁定功能处于开启状态。
配置FTP基于用户名的锁定功能关闭。
ftp-server login username-block disable
缺省情况下,FTP基于用户名锁定功能处于开启状态。
配置FTP锁定的时间。
ftp-server login silence-time time
缺省情况下,FTP会话的锁定有效时长为5分钟。
配置FTP开启IP地址锁定功能后允许锁定的IP的个数上限。
ftp-server login max-block-limit limit
缺省情况下,FTP允许锁定的最大IP个数为30个。
配置FTP锁定功能允许登录验证的次数。
ftp-server login block failed-times times
缺省情况下,FTP锁定功能允许登录验证的次数为3次。
缺省情况下,FTP不支持AAA账户登录认证。可通过配置开启FTP服务器对AAA认证的支持。
在开启FTP功能后,本命令才能生效。
配置本命令前,请先开启AAA功能。关于开启AAA功能的详细介绍,请参见“安全配置指南”中的“AAA”。
进入特权模式。
enable
进入全局配置模式。
configure terminal
配置支持AAA认证。
ftp-server authentication { default | name }
缺省情况下,FTP不支持AAA账户登录认证。
开启用户读写权限控制功能后,用户配置的FTP用户名等级或者AAA的用户名等级,将会起到读写权限控制的效果。缺省情况下,所有等级的用户均具有读写权限。开启权限控制开关后,用户等级若未配置则默认为1,此时的用户只具有读权限,即只能下载。用户可根据需要配置不同等级的ftp用户,用于读写权限控制。
进入特权模式。
enable
进入全局配置模式。
configure terminal
开启用户读写权限功能。
ftp-server login permission enable
缺省情况下,FTP用户读写权限控制功能处于关闭状态。
可以通过show命令行查看功能配置后的运行情况以验证配置效果。
可以通过debug命令行列举输出的各种调试信息。
注意
输出调试信息,会占用系统资源。使用完毕后,请立即关闭调试开关。
可以通过执行clear命令来清除各类信息。
注意
在设备运行过程中执行clear命令,可能因为重要信息丢失而导致业务中断。
FTP服务器监视与维护
作用 |
命令 |
---|---|
清除FTP锁定功能记录的用户表项 |
clear ftp-server block-list [ all | ip-address { ipv4-address | ipv6-address } [ vrf vrf-name ] | username user ] |
show ftp-server |
|
查看FTP锁定功能记录的用户表项 |
show ftp-server { ip-block | username-block } list |
打开FTP服务器错误事件的调试开关 |
debug ftp-server err |
打开FTP服务器消息事件的调试开关 |
debug ftp-server pro |
如图1-3所示,在一个局域网内,网关设备作为FTP服务器,为用户提供上传与下载服务,Switch为接入设备。要求会话的空闲时间为5分钟。
在Device A上配置:
开启FTP Server服务。
配置顶层目录/syslog。
配置用户名为user,密码为password。
配置会话空闲时限为5分钟。
配置Device A
# 配置IP地址。
DeviceA> enable
DeviceA# configure terminal
DeviceA(config)# interface gigabitethernet 0/1
DeviceA(config-if-GigabitEthernet 0/1)# ip address 192.168.21.100 255.255.255.0
DeviceA(config-if-GigabitEthernet 0/1)# exit
# 开启FTP Server服务
DeviceA(config)# ftp-server enable
# 配置顶层目录/syslog。
DeviceA(config)# ftp-server topdir /syslog
# 配置用户名为user,密码为password。
DeviceA(config)# ftp-server username user password password
# 配置会话空闲时限为5分钟。
DeviceA(config)# ftp-server timeout 5
配置User Host
# 配置User Host的IP地址为192.168.21.26/24。
# 通过show ftp-server查看FTP Server的配置情况。
DeviceA# show ftp-server
ftp-server information
===================================
enable : Y
topdir : /syslog
timeout: 5min
total connect: 0
username:user
password:(PLAINT)password
connect num[0]
Device A的配置文件
hostname DeviceA
!
interface gigabitEthernet 0/1
ip address 192.168.21.100 255.255.255
!
ftp-server enable
ftp-server topdir /syslog
ftp-server timeout 5
ftp-server username user password password
!
未配置用户名
未配置密码
未配置顶层目录