FTP服务是互联网上的标准服务之一,用于在网络上传输文件。在linux系统中,通常使用wu-ftpd来实现该服务(www.wu-ftpd.org)。
一般来说,wu-ftpd提供了三种ftp登录形式:
1、匿名ftp
2、真正的ftp
3、来宾ftp
匿名ftp是使用最广泛的ftp。通常,用户以anonymous作为用户名,以email地址作为密码登录。
真正的ftp就是用真实的用户名和密码登录。登录后,用户可以访问整个目录结构。一般来说,认为真实的ftp会对系统安全造成很大的威胁,除非绝对必要,否则应该尽量避免。
来宾ftp也是真实ftp的一种形式。不同之处在于,在geust登录后,他不能访问除主机目录以外的任何内容。
在wu-ftpd中,ftp访问由特定的配置文件控制。主要的配置文件有:
/etc/ftpaccess
/etc/ftpusers
/etc/ftphosts
/etc/ftpconversions
等等,我们分开来说这些配置文件。
Ftpaccess是主要的ftp配置文件,您可以在其中控制ftp的所有方面。由于控制命令多种多样,我们就以Wu-ftpd 2.6版本为例,分成几个部分。相关文件可在wu-ftpd手册中找到。
1.访问控制
类别[.]
注意:该命令用于定义用户类别,定义用户类别的目的是为了方便对服务的控制。其中包括:
是类名,是一个字符串;
可以用逗号分隔的关键字“anonymous”、“guest”和“real”之一。real表示该用户类中的用户可以使用真实帐户访问ftp,anonymous表示该用户类中的用户使用匿名FTP,guest表示该用户类中的用户使用guest帐户访问FTP。
要定义该用户类的源ip地址或域名,可以使用以下定义方法:ip地址:子网掩码或地址/cidr。您还可以指定一个包含该用户类的源ip地址定义的文件。在之前,你也可以用感叹号来表示除。
示例:
匿名类*
mng real级210.221.80.0/24
类用户真实!domainname.com
第一个定义了anon user类,它是一个匿名用户,可以来自任何地方。
第2条定义了mng用户类,是来自210.221.80网段的真实用户。
第3条定义了用户类,这是一个真正的用户,可以是除domainname.com以外的任何地址。
再来看看ftpaccess的其他配置。
否认
描述:拒绝匹配源地址的访问,显示文件内容。它也可以是包含被拒绝的ip地址类的定义的文件。可以用!服务器d拒绝没有注册域名的客户端请求。
比如:
否认!name serverd/home/FTP/etc/noname . msg
客户端注册域名的请求被拒绝,显示noname.msg的内容。
来宾组[.]
guestuser [.]
realgroup [.]
真实用户[.]
注意:如果客户端是中的真实用户,则该客户端被视为来宾用户;如果客户端是真实用户,则该客户端也被视为来宾用户;Realgroup和realuser将非匿名连接视为真实用户连接。也可以用用户id和组id来代替。
示例:guestuser *
真实组管理
意味着除了admin组之外的任何非匿名连接都被视为来宾用户连接,而admin仍然被视为真实用户连接。
好看[]
注意:如果中的用户已连接,则将ftpd进程的nice值调整为中指定的值。
保持活跃
注意:是否在会话期间保持数据通道活动。
超时接受
超时连接
超时数据
空闲超时
超时maxidle
超时RFC931
描述:设置各种超时。
接受设置ftpd服务等待被动数据通道连接请求的超时。(默认值为120秒)
设置connect ftpd服务标准数据通道连接请求的超时。(默认值为120秒)
设置当数据通道上没有操作时,数据ftpd服务等待客户端超时的时间。(默认值为1200秒)
Idle设置当命令通道上没有任何操作时,ftpd服务等待客户端用户超时的时间。(默认值为900秒)
Maxidle设置用户可以在客户端设置的更长空闲时间的上限。(默认为10秒)
RFC931设置RFC931协议会话的最大时间。如果是零,则取消对协议的支持。
tcpwindows []
说明:设置tcp窗口的大小。一般linux系统的默认值是6。如果网络连接良好,可以增加该值,否则应该减少该值。
再来看看ftpaccess的其他配置。
文件限制[] []
描述:用于限制给定类别中的用户可以传输的文件数量。可分为进、出、总三类。如果没有指定类,更改选项将应用于所有没有文件传输限制的类。可选参数raw用于限制总流量。
字节限制[] []
描述:描述:用于限制给定类别中的用户可以传输的数据流。可分为进、出、总三类。如果没有指定类,更改选项将应用于所有没有文件传输限制的类。可选参数raw用于限制总流量。
限时{ * |匿名|访客}
描述:用于限制ftp会话的总时间。默认值是无限的,真实用户不受限制。
guestserver []
注意:控制哪个主机用于提供匿名或访客访问。如果未指定,将拒绝所有匿名或访客访问。
限制
描述:可以在一定时间内访问指定的ftp),达到最大限制时,显示内容。
格式有些复杂:周日到周六分别是Su,Mo,Tu,We,Th,Fr,Sa。时间采用军用格式,小时和分钟之间没有冒号。范围由虚线指定。
比如:
限制anon 20 MoTuWe,th 0800-1730/home/FTP/etc/topmsg
意思是周一周二周三全天,周四早上8: 00到下午5: 30这段时间内,登录anon class的用户数量限制在20个,当达到这个限制时,将显示topmsg的内容。
no retrieve[绝对|相对][class=].[-]
注意:部分文件被拒绝传输。您可以指定文件的绝对路径,或者只给出文件名。如果只给出文件名,所有与文件名匹配的文件都将被拒绝。
比如:
noretrieve /etc/group passwd anon
etc目录中的Group文件和任何目录中的passwd文件将被anon类拒绝访问。
allow-retrieve[absolut | relative][class=].[-]
描述:定义允许传输的文件,即使它们被noretrieve拒绝。
登录失败
注意:当登录失败次数达到时,将显示“重复登录失败”,ftp会话将被终止。
私人的
注意:是否允许用户使用网站用户组和网站GPASS命令进入需要密码的特权用户组。
这里,您应该参考/etc/ftpgroups文件,其格式为:
access _ group name:encrypted _ passard:real _ group
Access_groupname是用来引用特殊组的名称,encrypted_passard是该组的密码,real_group是/etc/group中实际引用的组。
2.显示信息控制
指当用户连接到ftp或执行某些特定操作(如更改目录)时,向用户显示的特定信息。
问候完整|简短|简洁
问候文本
描述:定义用户登录前显示给他们的信息。
Full向用户显示主机名和ftp服务程序的版本,这是默认设置。
Breif仅向用户显示主机名。
Terse只显示“FTP服务器就绪”
文本可以指定您想要显示的任何信息。
从安全角度考虑,建议简洁。
旗帜
描述:在用户键入用户名和密码之前向他们显示的信息。
是要显示的文件的完整路径名。
例如banner /home/ftp/etc/。旗帜
主机名
描述:定义在问候时向用户显示的主机名。
电子邮件
描述:定义网络管理员的电子邮件地址。
消息{ {.}}
描述:当用户登录或更改目录时,向用户显示已定义文件的内容。
可以是LOGIN,表示当用户成功登录时向用户显示信息。
或CWD=,即当用户更改目录时显示信息。
为了避免混淆用户,此信息将只显示一次。
当匿名用户触发消息时,它必须相对于ftp主目录。
该文件中可以包含一些特殊参数(完整参数请参考手册):
% t本地时间
%F目录的可用空间
%C当前工作目录
%E管理员的电子邮件地址
%R远程主机名
%L本地主机名
%U登录时的用户名。
%M该用户类别中允许的最大登录次数
% n此用户类的重新连接次数。
自述文件{}
说明:基本用法和功能与message相同。
3.日志控制
日志命令
注意:记录特定类型列表的任何命令。
类型列表可以是真实、匿名和来宾之一。
记录传输
描述:记录特定类型列表的文件传输。
类型列表同上,方向可以是入站或出站。
比如:
记录真实的入站、出站传输
右侧r