home *** CD-ROM | disk | FTP | other *** search
/ Handbook of Infosec Terms 2.0 / Handbook_of_Infosec_Terms_Version_2.0_ISSO.iso / text / rfcs / rfc1579.txt < prev    next >
Text File  |  1996-05-07  |  9KB  |  122 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                        S. Bellovin Request for Comments: 1579                        AT&T Bell Laboratories Category: Informational                                    February 1994 
  8.  
  9.                           Firewall-Friendly FTP 
  10.  
  11. Status of this Memo 
  12.  
  13.    This document provides information for the Internet community.  This    document does not specify an Internet standard of any kind.    Distribution of this document is unlimited. 
  14.  
  15. Abstract 
  16.  
  17.    This memo describes a suggested change to the behavior of FTP client    programs.  No protocol modifications are required, though we outline    some that might be useful. 
  18.  
  19. Overview and Rational 
  20.  
  21.    The FTP protocol [1] uses a secondary TCP connection for actual    transmission of files.  By default, this connection is set up by an    active open from the FTP server to the FTP client.  However, this    scheme does not work well with packet filter-based firewalls, which    in general cannot permit incoming calls to random port numbers. 
  22.  
  23.    If, on the other hand, clients use the PASV command, the data channel    will be an outgoing call through the firewall.  Such calls are more    easily handled, and present fewer problems. 
  24.  
  25. The Gory Details 
  26.  
  27.    The FTP specification says that by default, all data transfers should    be over a single connection.  An active open is done by the server,    from its port 20 to the same port on the client machine as was used    for the control connection.  The client does a passive open. 
  28.  
  29.    For better or worse, most current FTP clients do not behave that way.    A new connection is used for each transfer; to avoid running afoul of    TCP's TIMEWAIT state, the client picks a new port number each time    and sends a PORT command announcing that to the server. 
  30.  
  31.    Neither scenario is firewall-friendly.  If a packet filter is used    (as, for example, provided by most modern routers), the data channel    requests appear as incoming calls to unknown ports.  Most firewalls    are constructed to allow incoming calls only to certain believed-to-    be-safe ports, such as SMTP.  The usual compromise is to block only 
  32.  
  33.  
  34.  
  35. Bellovin                                                        [Page 1] 
  36.  RFC 1579                 Firewall-Friendly FTP             February 1994 
  37.  
  38.     the "server" area, i.e., port numbers below 1024.  But that strategy    is risky; dangerous services such as X Windows live at higher-    numbered ports. 
  39.  
  40.    Outgoing calls, on the other hand, present fewer problems, either for    the firewall administrator or for the packet filter.  Any TCP packet    with the ACK bit set cannot be the packet used to initiate a TCP    connection; filters can be configured to pass such packets in the    outbound direction only.  We thus want to change the behavior of FTP    so that the data channel is implemented as a call from the client to    the server. 
  41.  
  42.    Fortunately, the necessary mechanisms already exist in the protocol.    If the client sends a PASV command, the server will do a passive TCP    open on some random port, and inform the client of the port number.    The client can then do an active open to establish the connection. 
  43.  
  44.    There are a few FTP servers in existence that do not honor the PASV    command.  While this is unfortunate (and in violation of STD 3, RFC    1123 [2]), it does not pose a problem.  Non-conforming    implementations will return a "500 Command not understood" message;    it is a simple matter to fall back to current behavior.  While it may    not be possible to talk to such sites through a firewall, that would    have been the case had PASV not been adopted. 
  45.  
  46. Recommendation 
  47.  
  48.    We recommend that vendors convert their FTP client programs    (including FTP proxy agents such as Gopher [3] daemons) to use PASV    instead of PORT.  There is no reason not to use it even for non-    firewall transfers, and adopting it as standard behavior will make    the client more useful in a firewall environment.     STD 3, RFC 1123 notes that the format of the response to a PASV    command is not well-defined.  We therefore recommend that FTP clients    and servers follow the recommendations of that RFC for solving this    problem. 
  49.  
  50. Discussion 
  51.  
  52.    Given the behavior of most current FTP clients, the use of PASV does    not cause any additional messages to be sent.  In all cases, a    transfer operation is preceded by an extra exchange between the    client and the server; it does not matter if that exchange involves a    PORT command or a PASV command. 
  53.  
  54.    There is some extra overhead with Gopher-style clients; since they    transfer exactly one file per control channel connection, they do not 
  55.  
  56.  
  57.  
  58. Bellovin                                                        [Page 2] 
  59.  RFC 1579                 Firewall-Friendly FTP             February 1994 
  60.  
  61.     need to use PORT commands.  If this is a serious concern, the Gopher    proxy should be located on the outside of the firewall, so that it is    not hampered by the packet filter's restrictions. 
  62.  
  63.    If we accept that clients should always perform active opens, it    might be worthwhile enhancing the FTP protocol to eliminate the extra    exchange entirely.  At startup time, the client could send a new    command APSV ("all passive"); a server that implements this option    would always do a passive open.  A new reply code 151 would be issued    in response to all file transfer requests not preceded by a PORT or    PASV command; this message would contain the port number to use for    that transfer.  A PORT command could still be sent to a server that    had previously received APSV; that would override the default    behavior for the next transfer operation, thus permitting third-party    transfers. 
  64.  
  65. Implementation Status 
  66.  
  67.    At least two independent implementations of the modified clients    exist.  Source code to one is freely available.  To our knowledge,    APSV has not been implemented. 
  68.  
  69. Security Considerations 
  70.  
  71.    Some people feel that packet filters are dangerous, since they are    very hard to configure properly.  We agree.  But they are quite    popular.  Another common complaint is that permitting arbitrary    outgoing calls is dangerous, since it allows free export of sensitive    data through a firewall.  Some firewalls impose artificial bandwidth    limits to discourage this.  While a discussion of the merits of this    approach is beyond the scope of this memo, we note that the sort of    application-level gateway necessary to implement a bandwidth limiter    could be implemented just as easily using PASV as with PORT. 
  72.  
  73.    Using PASV does enhances the security of gateway machines, since they    no longer need to create ports that an outsider might connect to    before the real FTP client.  More importantly, the protocol between    the client host and the firewall can be simplified, if there is no    need to specify a "create" operation. 
  74.  
  75.    Concerns have been expressed that this use of PASV just trades one    problem for another.  With it, the FTP server must accept calls to    random ports, which could pose an equal problem for its firewall.  We    believe that this is not a serious issue, for several reasons. 
  76.  
  77.    First, there are many fewer FTP servers than there are clients.  It    is possible to secure a small number of special-purpose machines,    such as gateways and organizational FTP servers.  The firewall's 
  78.  
  79.  
  80.  
  81. Bellovin                                                        [Page 3] 
  82.  RFC 1579                 Firewall-Friendly FTP             February 1994 
  83.  
  84.     filters can be configured to allow access to just these machines.    Further precautions can be taken by modifying the FTP server so that    it only uses very high-numbered ports for the data channel.  It is    comparatively easy to ensure that no dangerous services live in a    given port range.  Again, this is feasible because of the small    number of servers. 
  85.  
  86. References 
  87.  
  88.    [1] Postel, J., and J. Reynolds, "File Transfer Protocol", STD 1, RFC        959, USC/Information Sciences Institute, October 1985. 
  89.  
  90.    [2] Braden, R., Editor, "Requirements for Internet Hosts -        Application and Support", STD 3, RFC 1123, USC/Information        Sciences Institute, October 1989. 
  91.  
  92.    [3] Anklesaria, F., McCahill, M., Lindner, P., Johnson, D., Torrey,        D., and B. Alberti, "The Internet Gopher Protocol (a distributed        document search and retrieval protocol)", RFC 1436, University of        Minnesota, March 1993. 
  93.  
  94. Author's Address 
  95.  
  96.        Steven M. Bellovin        AT&T Bell Laboratories        600 Mountain Avenue        Murray Hill, NJ  07974 
  97.  
  98.        Phone: (908) 582-5886        EMail: smb@research.att.com 
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120. Bellovin                                                        [Page 4] 
  121.  
  122.