FTP服务器

功能介绍

FTP服务器概述

FTP(File Transfer Protocol,文件传输协议)是IETF Network Working Group所制定的一套标准协议,属于网络协议组的应用层,FTP基于TCP(Transmission Control Protocol,传输控制协议)实现文件传输。FTP是Internet传递文件最主要的方法。

FTP采用客户端/服务器的模式,如图1-1所示,设备可以作为FTP服务器,提供远程客户端的接入与程序操作。用户可以通过客户端向服务器发出命令,查看FTP服务器目录下的文件,并把文件从远程计算机上拷到本地,或把本地的文件传送到服务器上。除此之外,FTP还提供登录验证及读写权限控制等功能。

FTP客户端/服务器模式

image.png

工作原理

FTP连接

FTP在客户端和服务器之间建立了两条TCP连接,分别是控制连接和数据连接。

控制连接使用端口21,负责传输控制命令,控制连接始终处于开启状态。

数据连接使用端口20,负责传输数据。服务器可以主动打开数据连接,也可主动关闭数据连接。每传输一份文件或目录,都会建立一个新的数据连接。

对于比较简单的连接只需要建立控制连接,客户端向服务器发送命令,服务器接收到命令则进行命令响应,其过程如图1-2所示。

控制连接

image.png

当客户端发出的命令需要上传或下载数据时,不仅要建立控制连接还需要建立数据连接。

用户登录授权

FTP客户端要想访问FTP服务器上的文件,必须拥有该FTP服务器授权的用户账号。设备缺省情况下支持设定的最大用户个数为10个,每个用户最大连接数为2个,服务器最大连接数为10个。

同时,可定义用户访问文件的读写权限,此功能能够有效防止未经授权的用户访问内部文件。当用户FTP登录失败次数达到设定的阈值后,该用户的IP地址或用户名将被锁定,在一定时间内,所有通过该IP地址或用户名登录的用户均不能正常连接。

支持的FTP命令

当设备收到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锁定功能

(可选)配置FTP服务器支持AAA认证

(可选)配置FTP用户读写权限控制功能

配置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客户端命令操作后(如一个文件全部传输完毕后),将重新开始计算会话空闲时间;在下一个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个。

配置FTP锁定功能

功能简介

开启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认证的支持。

配置限制与指导

在开启FTP功能后,本命令才能生效。

配置准备

配置本命令前,请先开启AAA功能。关于开启AAA功能的详细介绍,请参见“安全配置指南”中的“AAA”。

配置步骤

进入特权模式。

enable

进入全局配置模式。

configure terminal

配置支持AAA认证。

ftp-server authentication { default | name }

缺省情况下,FTP不支持AAA账户登录认证。

配置FTP用户读写权限控制功能

功能简介

开启用户读写权限控制功能后,用户配置的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

典型配置举例

局域网内提供FTP服务配置举例

组网需求

如图1-3所示,在一个局域网内,网关设备作为FTP服务器,为用户提供上传与下载服务,Switch为接入设备。要求会话的空闲时间为5分钟。

组网图

局域网内提供FTP服务组网图

image.png

配置要点

在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

!

常见错误

未配置用户名

未配置密码

未配置顶层目录