1. 论坛系统升级为Xenforo,欢迎大家测试!
    排除公告

Linux下FTP的配置与应用

本帖由 pepsicj2006-02-21 发布。版面名称:主机讨论

  1. pepsicj

    pepsicj New Member

    注册:
    2005-12-20
    帖子:
    17
    赞:
    0
    FTP服务是Internet上的标准服务之一,用来在网络上传输文件。在linux系统中,通常用wu-ftpd来实现该服务(www.wu-ftpd.org)。
      通常,wu-ftpd提供三种ftp登录形式:

      1、anonymous ftp
      2、real ftp
      3、guest ftp

      anonymous ftp 应用最广泛的一种ftp,通常,用户以anonymous为用户名,以电子邮件地址为密码进行登录。

      real ftp 就是以真实的用户名和密码进行登录,登录以后,用户可以访问整个目录结构。通常认为,real ftp 能对系统安全构成极大威胁,所以,除非万不得以,应尽量避免使用real ftp。

      guest ftp 也是real ftp 的一种形式,不同之处在于,一个geust登录后,他就不能访问除宿主目录以外的内容。

      在wu-ftpd中,是通过特定的配置文来控制ftp 访问的,主要的配置文件有:

      /etc/ftpaccess
      /etc/ftpusers
      /etc/ftphosts
      /etc/ftpconversions

      等等,下面我们就分别来讲讲这些配置文件。

      ftpaccess是主要的ftp配置文件,在该文件内你可以实现对ftp各方面的控制,由于控制命令名目繁多,我们将以wu-ftpd的2.6版本为例分几个部分来讲,相关文档可见wu-ftpd手册。

      1、访问控制

      class [...]
      说明:该命令用于定义用户类,定义用户类的目的是为了方便对服务的控制。其中:

      为类名,为一字符串;

      可以以逗号分隔的"anonymous"、"guest"、"real"关键字之一,real说明该用户类中的用户可以用真实的账号来访问ftp,anonymous说明该用户类中的用户使用匿名ftp,guest说明该用户类中的用户用guest账号访问ftp。

      定义该用户类源ip地址或域名,可以用以下定义方法:ip地址:子网掩码,或address/cidr。这里也可以指定一个文件,该文件包含了该用户类源ip地址的定义。之前还可以用惊叹号表示除以外的地址类。

      例子:

      class anon anonymous *
      class mng real 210.221.80.0/24
      class user real !domainname.com

      第一条定义了anon用户类,为匿名用户,可以是来自任何地方。
      第二条定义了mng用户类,为真实用户,来自210.221.80网段。
      第三条定义了user用户类,为真实用户,可以是除domainname.com以外的任何地址。


     
  2. pepsicj

    pepsicj New Member

    注册:
    2005-12-20
    帖子:
    17
    赞:
    0
    我们接着来看ftpaccess的其他配置。

      deny
      说明:拒绝源地址符合的访问,同时显示文件的内容。也可以是某一文件,该文件包含了拒绝的ip地址类的定义。可以用 !nameserverd来拒绝没有注册域名的客户端请求。

      如:
      deny !nameserverd /home/ftp/etc/noname.msg

      拒绝没有注册域名的客户端请求,并且显示noname.msg的内容。

      guestgroup [...]
      guestuser [...]
      realgroup [...]
      realuser [...]
      说明:如果客户端为中的真实用户(real user)则该客户端被当作guest用户处理;如果客户端为真实用户则该客户端也被当作guest用户处理;realgroup和realuser把非匿名连接视为真实用户连接。和也可以用用户id和组id代替。

      比如:guestuser *
      realgroup admin

      表示除了admin组以外的任何非匿名连接视为guest用户连接,admin仍旧视为真实用户连接。

      nice []
      说明:如果为中的用户连接的话,则调整ftpd进程的nice值为中指定的值。

      keepalive
      说明:是否在会话过程中保持数据通道的激活状态。

      timeout accept
      timeout connect
      timeout data
      timeout idle
      timeout maxidle
      timeout RFC931
      说明:设置各种超时。

      accept设置ftpd服务等待被动数据通道连接请求的超时。(缺省为120秒)
      connect设置ftpd服务标准数据通道连接请求的超时。(缺省为120秒)
      data设置ftpd服务等待客户端在数据通道上多长时间没有动作为超时。(缺省为1200秒)
      idle 设置ftpd服务等待客户端用户在命令通道上多长时间没有动作为超时。(缺省为900秒)
      maxidle 设置用户可以在客户端设置的更长的空闲时间的上限。(缺省为10秒)
      RFC931 设置一个RFC931协议会话的最长时间。为零则取消对该协议的支持。

      tcpwindows []
      说明:设置tcp 窗口的大小。一般linux系统缺省值为6。如果网络连接情况较好可以增大该值,否则,应减小之。

      我们接着来看ftpaccess的其他配置。

      file-limit [] []
      说明:用来限制在给定类中的用户可以传输的文件数目。可分为进、出、合计三类。如果没有指定类,则改选项将应用于所有没有传输文件限制的类。可选参数raw用来限制总的流量。

      byte-limit [] []
      说明:说明:用来限制在给定类中的用户可以传输的数据流量。可分为进、出、合计三类。如果没有指定类,则改选项将应用于所有没有传输文件限制的类。可选参数raw用来限制总的流量。

      limit-time {*|anonymous|guest}
      说明:用于限制一个ftp会话的总时间。缺省值为无限,真实用户不受限制。

      guestserver []
      说明:控制那一部主机用来提供anonymous或guest访问。如果没有指定,则拒绝所有anonymous或guest访问。

      limit
      说明:控制在一定的时间内,可以访问ftp的指定),当达到最大限制数时,显示的内容。
     
  3. pepsicj

    pepsicj New Member

    注册:
    2005-12-20
    帖子:
    17
    赞:
    0
    格式有些复杂:星期天到星期六分别为Su、Mo、Tu、We、Th、Fr、Sa,时间采用军用格式,在小时和分钟间没有冒号,范围用破折号指定。

      如:
      limit anon 20 MoTuWe,Th0800-1730 /home/ftp/etc/topmsg

      表示在星期一、星期二、星期三的全天,星期四的上午八点到下午五点半这段时间内,对anon类的用户登录数目限制为20,达到这一限制时显示topmsg的内容。

      noretrieve [absolut|relative][class=]...[-]
      说明:拒绝传送某些文件。你可以指定该文件的绝对路径,也可以只给出文件名。如果只给出文件名,则将拒绝传送所有符合该文件名的文件。

      如:
      noretrieve /etc/group passwd anon
      将拒绝向anon类传送etc目录下的group文件及任何目录下的passwd文件。

      allow-retrieve [absolut|relative] [class=]...[-]
      说明:定义允许传送的文件,即使被noretrieve拒绝。

      loginfails
      说明:当登录失败的次数达到时,显示“repeated login failures"并终止ftp会话。

      private
      说明:是否允许用户利用SITE GROUP和SITE GPASS命令进入需要密码的特权用户组中。

      在这里要引用到/etc/ftpgroups文件,该文件的格式为:

      access_groupname:encrypted_passard:real_group
      access_groupname为用来引用特殊组的名字,encrypted_passard是该组的密码, real_group为/etc/group中实际被引用的组。


      2、显示信息控制
      指当用户连接到ftp或做出某些特定行为(如改变目录)时,向用户显示的特定信息。

      greeting full|breif|terse
      greeting text
      说明:定义再用户登录前向用户显示的信息。

      full 向用户显示主机名和ftp服务程序的版本,为缺省设置。
      breif 只向用户显示主机名。
      terse 仅仅显示“FTP server ready"
      text 可以指定你所想显示的任何信息。
      从安全角度出发,建议用terse.

      banner
      说明:在用户键入用户名和密码前向用户显示的信息。
      为想要显示的文件的完整路径名。
      如:banner /home/ftp/etc/.banner

      hostname
      说明:定义在greeting时,向用户显示的主机名。

      email
      说明:定义网络管理员的email地址。

      message { {...}}
      说明:当用户登录或更改目录时,向用户显示所定义的文件的内容。
      可以是LOGIN,说明当用户登录成功时向用户显示信息。
      也可以是CWD=,即当用户更改目录到时显示信息。
      为了避免迷惑用户,该信息将只显示一次。
      当anonymous用户触发message时,必须相对于ftp主目录。
      在该文件中可以包含一些特殊的参数(完整参数请参考手册):
      %T 本地时间
      %F 目录的可用空间
      %C 当前的工作目录
      %E 管理员的email地址
      %R 远程主机名
      %L 本地主机名
      %U 用户登录时的用户名
      %M 在该用户类中最大的允许登录数
      %N 该用户类的再线人数

      readme {}
      说明:基本用法和功能同message.
     
  4. pepsicj

    pepsicj New Member

    注册:
    2005-12-20
    帖子:
    17
    赞:
    0
    3、日志控制

      log commands
      说明:对特定的typelist的任何命令都进行日志。
      typelist可以是real、anonymous、guest 中的一种。

      log transfers
      说明:对特定的typelist的文件传输进行日志。
      typelist同上,direction可以是inbound或oubound两种。

      如:
      log transfers real inbound,outbound
      对real用户下载或上传进行日志。

      log security
      说明:对种种违反安全规则的行为进行日志,typelist同上。

      log syslog
      说明:把特定文件inbound或oubound的传输日志重定向到syslog.没有该条语句则会把这些日志写到xferlog.

      log syslog+xferlog
      说明:把特定文件inbound或oubound的传输日志写到系统日志和xferlog.

      4、其他控制

      alias
      说明:为目录定义已个别名。

      比如:alias tools /pub/soft/tools
      则当用户使用cd tools命令时,不管用户当前处于什么目录都将进入/pub/soft/tools目录,从这里我们也可以看出是相对于ftp宿主目录的。

      cdpath
      说明:和dos中的path命令一样,cdpath 是用来定义ftp会话中的用户使用cd命令时的搜索路径。

      如:cdpath /pub/soft
      cdpath /pub/doc

      假设用户执行了一条cd net命令,则搜索的顺序如下:

      a. ./net (搜索当前目录)
      b. 搜索所有别名定义
      c. /pub/soft/net
      d. /pub/doc/net

      compress []...
      tar []...
      说明:使符合定义的用户在传输之前可以对文件进行压缩、解压和归档。实际的传输过程在/etc/ftpconversions中定义。

      shutdown
      说明:如果指向的文件存在的话,则服务程序将定期地检查该文件,看看服务器是不是将被关闭。如果服务器将被关闭,则会通知用户,并在指定的时间后拒绝新的用户连接,在指定的时间后中断当前的用户会话。

      该文件的格式如下:

      其中:
       必须大于1970
       范围为0—11
       范围为0—23
       范围为0—59
       拒绝新的用户连接的时间,格式为HHMM。
       中断当前的用户会话的时间,格式为HHMM。
      为向用户的信息。可以包含以下变量:
      %s 系统关闭的时间
      %r 拒绝新的用户连接的时间
      %d 中断当前的用户会话的时间

      daemonaddress
      说明:让ftp监听指定的ip地址,缺省将监听说有的ip地址。