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