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

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                       M. St. Johns Request for Comments: 1413                      US Department of Defense Obsoletes: 931                                             February 1993 
  8.  
  9.                          Identification Protocol 
  10.  
  11. Status of this Memo 
  12.  
  13.    This RFC specifies an IAB standards track protocol for the Internet    community, and requests discussion and suggestions for improvements.    Please refer to the current edition of the "IAB Official Protocol    Standards" for the standardization state and status of this protocol.    Distribution of this memo is unlimited. 
  14.  
  15. 1.  INTRODUCTION 
  16.  
  17.    The Identification Protocol (a.k.a., "ident", a.k.a., "the Ident    Protocol") provides a means to determine the identity of a user of a    particular TCP connection.  Given a TCP port number pair, it returns    a character string which identifies the owner of that connection on    the server's system. 
  18.  
  19.    The Identification Protocol was formerly called the Authentication    Server Protocol.  It has been renamed to better reflect its function.    This document is a product of the TCP Client Identity Protocol    Working Group of the Internet Engineering Task Force (IETF). 
  20.  
  21. 2.  OVERVIEW 
  22.  
  23.    This is a connection based application on TCP.  A server listens for    TCP connections on TCP port 113 (decimal).  Once a connection is    established, the server reads a line of data which specifies the    connection of interest.  If it exists, the system dependent user    identifier of the connection of interest is sent as the reply.  The    server may then either shut the connection down or it may continue to    read/respond to multiple queries. 
  24.  
  25.    The server should close the connection down after a configurable    amount of time with no queries - a 60-180 second idle timeout is    recommended.  The client may close the connection down at any time;    however to allow for network delays the client should wait at least    30 seconds (or longer) after a query before abandoning the query and    closing the connection. 
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33. St. Johns                                                       [Page 1] 
  34.  RFC 1413                Identification Protocol            February 1993 
  35.  
  36.  3.  RESTRICTIONS 
  37.  
  38.    Queries are permitted only for fully specified connections.  The    query contains the local/foreign port pair -- the local/foreign    address pair used to fully specify the connection is taken from the    local and foreign address of query connection.  This means a user on    address A may only query the server on address B about connections    between A and B. 
  39.  
  40. 4.  QUERY/RESPONSE FORMAT 
  41.  
  42.    The server accepts simple text query requests of the form: 
  43.  
  44.             <port-on-server> , <port-on-client> 
  45.  
  46.    where <port-on-server> is the TCP port (decimal) on the target (where    the "ident" server is running) system, and <port-on-client> is the    TCP port (decimal) on the source (client) system. 
  47.  
  48.    N.B - If a client on host A wants to ask a server on host B about a    connection specified locally (on the client's machine) as 23, 6191    (an inbound TELNET connection), the client must actually ask about    6191, 23 - which is how the connection would be specified on host B. 
  49.  
  50.       For example: 
  51.  
  52.                  6191, 23 
  53.  
  54.    The response is of the form 
  55.  
  56.    <port-on-server> , <port-on-client> : <resp-type> : <add-info> 
  57.  
  58.    where <port-on-server>,<port-on-client> are the same pair as the    query, <resp-type> is a keyword identifying the type of response, and    <add-info> is context dependent. 
  59.  
  60.    The information returned is that associated with the fully specified    TCP connection identified by <server-address>, <client-address>,    <port-on-server>, <port-on-client>, where <server-address> and    <client-address> are the local and foreign IP addresses of the    querying connection -- i.e., the TCP connection to the Identification    Protocol Server.  (<port-on-server> and <port-on-client> are taken    from the query.) 
  61.  
  62.       For example: 
  63.  
  64.          6193, 23 : USERID : UNIX : stjohns          6195, 23 : ERROR : NO-USER 
  65.  
  66.  
  67.  
  68. St. Johns                                                       [Page 2] 
  69.  RFC 1413                Identification Protocol            February 1993 
  70.  
  71.  5.  RESPONSE TYPES 
  72.  
  73. A response can be one of two types: 
  74.  
  75. USERID 
  76.  
  77.      In this case, <add-info> is a string consisting of an      operating system name (with an optional character set      identifier), followed by ":", followed by an      identification string. 
  78.  
  79.      The character set (if present) is separated from the      operating system name by ",".  The character set      identifier is used to indicate the character set of the      identification string.  The character set identifier,      if omitted, defaults to "US-ASCII" (see below). 
  80.  
  81.      Permitted operating system names and character set      names are specified in RFC 1340, "Assigned Numbers" or      its successors. 
  82.  
  83.      In addition to those operating system and character set      names specified in "Assigned Numbers" there is one      special case operating system identifier - "OTHER". 
  84.  
  85.      Unless "OTHER" is specified as the operating system      type, the server is expected to return the "normal"      user identification of the owner of this connection.      "Normal" in this context may be taken to mean a string      of characters which uniquely identifies the connection      owner such as a user identifier assigned by the system      administrator and used by such user as a mail      identifier, or as the "user" part of a user/password      pair used to gain access to system resources.  When an      operating system is specified (e.g., anything but      "OTHER"), the user identifier is expected to be in a      more or less immediately useful form - e.g., something      that could be used as an argument to "finger" or as a      mail address. 
  86.  
  87.      "OTHER" indicates the identifier is an unformatted      character string consisting of printable characters in      the specified character set.  "OTHER" should be      specified if the user identifier does not meet the      constraints of the previous paragraph.  Sending an      encrypted audit token, or returning other non-userid      information about a user (such as the real name and      phone number of a user from a UNIX passwd file) are 
  88.  
  89.  
  90.  
  91. St. Johns                                                       [Page 3] 
  92.  RFC 1413                Identification Protocol            February 1993 
  93.  
  94.       both examples of when "OTHER" should be used. 
  95.  
  96.      Returned user identifiers are expected to be printable      in the character set indicated. 
  97.  
  98.      The identifier is an unformatted octet string - - all      octets are permissible EXCEPT octal 000 (NUL), 012 (LF)      and 015 (CR).  N.B. - space characters (040) following the      colon separator ARE part of the identifier string and      may not be ignored. A response string is still      terminated normally by a CR/LF.  N.B. A string may be      printable, but is not *necessarily* printable. 
  99.  
  100. ERROR 
  101.  
  102.    For some reason the port owner could not be determined, <add-info>    tells why.  The following are the permitted values of <add-info> and    their meanings: 
  103.  
  104.           INVALID-PORT 
  105.  
  106.           Either the local or foreign port was improperly           specified.  This should be returned if either or           both of the port ids were out of range (TCP port           numbers are from 1-65535), negative integers, reals or           in any fashion not recognized as a non-negative           integer. 
  107.  
  108.           NO-USER 
  109.  
  110.           The connection specified by the port pair is not           currently in use or currently not owned by an           identifiable entity. 
  111.  
  112.           HIDDEN-USER 
  113.  
  114.           The server was able to identify the user of this           port, but the information was not returned at the           request of the user. 
  115.  
  116.           UNKNOWN-ERROR 
  117.  
  118.           Can't determine connection owner; reason unknown.           Any error not covered above should return this           error code value.  Optionally, this code MAY be           returned in lieu of any other specific error code           if, for example, the server desires to hide           information implied by the return of that error 
  119.  
  120.  
  121.  
  122. St. Johns                                                       [Page 4] 
  123.  RFC 1413                Identification Protocol            February 1993 
  124.  
  125.            code, or for any other reason.  If a server           implements such a feature, it MUST be configurable           and it MUST default to returning the proper error           message. 
  126.  
  127.    Other values may eventually be specified and defined in future    revisions to this document.  If an implementer has a need to specify    a non-standard error code, that code must begin with "X". 
  128.  
  129.    In addition, the server is allowed to drop the query connection    without responding.  Any premature close (i.e., one where the client    does not receive the EOL, whether graceful or an abort should be    considered to have the same meaning as "ERROR : UNKNOWN-ERROR". 
  130.  
  131. FORMAL SYNTAX 
  132.  
  133.    <request> ::= <port-pair> <EOL> 
  134.  
  135.    <port-pair> ::= <integer> "," <integer> 
  136.  
  137.    <reply> ::= <reply-text> <EOL> 
  138.  
  139.    <EOL> ::= "015 012"  ; CR-LF End of Line Indicator 
  140.  
  141.    <reply-text> ::= <error-reply> | <ident-reply> 
  142.  
  143.    <error-reply> ::= <port-pair> ":" "ERROR" ":" <error-type> 
  144.  
  145.    <ident-reply> ::= <port-pair> ":" "USERID" ":" <opsys-field>                      ":" <user-id> 
  146.  
  147.    <error-type> ::= "INVALID-PORT" | "NO-USER" | "UNKNOWN-ERROR"                     | "HIDDEN-USER" |  <error-token> 
  148.  
  149.    <opsys-field> ::= <opsys> [ "," <charset>] 
  150.  
  151.    <opsys> ::= "OTHER" | "UNIX" | <token> ...etc.                ;  (See "Assigned Numbers") 
  152.  
  153.    <charset> ::= "US-ASCII" | ...etc.                  ;  (See "Assigned Numbers") 
  154.  
  155.    <user-id> ::= <octet-string> 
  156.  
  157.    <token> ::= 1*64<token-characters> ; 1-64 characters 
  158.  
  159.    <error-token> ::= "X"1*63<token-characters>                      ; 2-64 chars beginning w/X 
  160.  
  161.  
  162.  
  163. St. Johns                                                       [Page 5] 
  164.  RFC 1413                Identification Protocol            February 1993 
  165.  
  166.     <integer> ::= 1*5<digit> ; 1-5 digits. 
  167.  
  168.    <digit> ::= "0" | "1" ... "8" | "9" ; 0-9 
  169.  
  170.    <token-characters> ::=                   <Any of these ASCII characters: a-z, A-Z,                    - (dash), .!@#$%^&*()_=+.,<>/?"'~`{}[]; >                                ; upper and lowercase a-z plus                                ; printables minus the colon ":"                                ; character. 
  171.  
  172.    <octet-string> ::= 1*512<octet-characters> 
  173.  
  174.    <octet-characters> ::=                   <any octet from  00 to 377 (octal) except for                    ASCII NUL (000), CR (015) and LF (012)> 
  175.  
  176. Notes on Syntax: 
  177.  
  178.    1)   To promote interoperability among variant         implementations, with respect to white space the above         syntax is understood to embody the "be conservative in         what you send and be liberal in what you accept"         philosophy.  Clients and servers should not generate         unnecessary white space (space and tab characters) but         should accept white space anywhere except within a         token.  In parsing responses, white space may occur         anywhere, except within a token.  Specifically, any         amount of white space is permitted at the beginning or         end of a line both for queries and responses.  This         does not apply for responses that contain a user ID         because everything after the colon after the operating         system type until the terminating CR/LF is taken as         part of the user ID.  The terminating CR/LF is NOT         considered part of the user ID. 
  179.  
  180.    2)   The above notwithstanding, servers should restrict the         amount of inter-token white space they send to the         smallest amount reasonable or useful.  Clients should         feel free to abort a connection if they receive 1000         characters without receiving an <EOL>. 
  181.  
  182.    3)   The 512 character limit on user IDs and the 64         character limit on tokens should be understood to mean         as follows: a) No new token (i.e., OPSYS or ERROR-TYPE)         token will be defined that has a length greater than 64         and b) a server SHOULD NOT send more than 512 octets of         user ID and a client MUST accept at least 512 octets of 
  183.  
  184.  
  185.  
  186. St. Johns                                                       [Page 6] 
  187.  RFC 1413                Identification Protocol            February 1993 
  188.  
  189.          user ID.  Because of this limitation, a server MUST         return the most significant portion of the user ID in         the first 512 octets. 
  190.  
  191.    4)   The character sets and character set identifiers should         map directly to those defined in or referenced by RFC 1340,         "Assigned Numbers" or its successors.  Character set         identifiers only apply to the user identification field         - all other fields will be defined in and must be sent         as US-ASCII. 
  192.  
  193.    5)   Although <user-id> is defined as an <octet-string>         above, it must follow the format and character set         constraints implied by the <opsys-field>; see the         discussion above. 
  194.  
  195.    6)   The character set provides context for the client to         print or store the returned user identification string.         If the client does not recognize or implement the         returned character set, it should handle the returned         identification string as OCTET, but should in addition         store or report the character set.  An OCTET string         should be printed, stored or handled in hex notation         (0-9a-f) in addition to any other representation the         client implements - this provides a standard         representation among differing implementations. 
  196.  
  197. 6.  Security Considerations 
  198.  
  199.    The information returned by this protocol is at most as trustworthy    as the host providing it OR the organization operating the host.  For    example, a PC in an open lab has few if any controls on it to prevent    a user from having this protocol return any identifier the user    wants.  Likewise, if the host has been compromised the information    returned may be completely erroneous and misleading. 
  200.  
  201.    The Identification Protocol is not intended as an authorization or    access control protocol.  At best, it provides some additional    auditing information with respect to TCP connections.  At worst, it    can provide misleading, incorrect, or maliciously incorrect    information. 
  202.  
  203.    The use of the information returned by this protocol for other than    auditing is strongly discouraged.  Specifically, using Identification    Protocol information to make access control decisions - either as the    primary method (i.e., no other checks) or as an adjunct to other    methods may result in a weakening of normal host security. 
  204.  
  205.  
  206.  
  207.  St. Johns                                                       [Page 7] 
  208.  RFC 1413                Identification Protocol            February 1993 
  209.  
  210.     An Identification server may reveal information about users,    entities, objects or processes which might normally be considered    private.  An Identification server provides service which is a rough    analog of the CallerID services provided by some phone companies and    many of the same privacy considerations and arguments that apply to    the CallerID service apply to Identification.  If you wouldn't run a    "finger" server due to privacy considerations you may not want to run    this protocol. 
  211.  
  212. 7.  ACKNOWLEDGEMENTS 
  213.  
  214.    Acknowledgement is given to Dan Bernstein who is primarily    responsible for renewing interest in this protocol and for pointing    out some annoying errors in RFC 931. 
  215.  
  216. References 
  217.  
  218.    [1] St. Johns, M., "Authentication Server", RFC 931, TPSC, January        1985. 
  219.  
  220.    [2] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC 1340,        USC/Information Sciences Institute, July 1992. 
  221.  
  222. Author's Address 
  223.  
  224.        Michael C. St. Johns        DARPA/CSTO        3701 N. Fairfax Dr        Arlington, VA 22203 
  225.  
  226.        Phone: (703) 696-2271        EMail: stjohns@DARPA.MIL 
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246. St. Johns                                                       [Page 8] 
  247.  
  248.