Add HAMMER support to the installer
[dragonfly.git] / contrib / tcp_wrappers / CHANGES
1 Request: after building the programs, please run the `tcpdchk' wrapper
2 configuration checker. See the `tcpdchk.8' manual page (`nroff -man'
3 format) for instructions. `tcpdchk' automatically identifies the most
4 common configuration problems, and will save you and me a lot of time.
5
6 Changes per release 7.6 (Mar 1997)
7 ==================================
8
9 - Improved the anti source-routing protection. The code in version
10 7.5 was not as strong as it could be, because I tried to be compatible
11 with Linux. That was a mistake. Sorry for the inconvenience.
12
13 - The program no longer terminates case of a source-routed connection,
14 making the IP-spoofing code more usable for long-running daemons.
15
16 - When syslogging DNS hostname problems, always stop after a limited
17 number of characters.
18
19 Changes per release 7.5 (Feb 1997)
20 ==================================
21
22 - Optionally refuse source-routed TCP connections requests altogether.
23 Credits to Niels Provos of Universitaet Hamburg.  File: fix_options.c.
24
25 - Support for IRIX 6 (Lael Tucker).
26
27 - Support for Amdahl UTS 2.1.5 (Richard E. Richmond).
28
29 - Support for SINIX 5.42 (Klaus Nielsen).
30
31 - SCO 5 now has vsyslog() (Bill Golden).
32
33 - Hints and tips for dealing with IRIX inetd (Niko Makila, Aaron
34 M Lee).
35
36 - Support for BSD/OS (Paul Borman).
37
38 - Support for Tandem (Emad Qawas).
39
40 - Support for ISC (Frederick B. Cohen).
41
42 - Workaround for UNICOS - it would choke on a setjmp() expression
43 (Bruce Kelly). File: hosts_access.c, tcpdchk.c.
44
45 - Increased the level of buffer overflow paranoia when printing
46 unwanted IP options.  File: fix_options.c.
47
48 Changes per release 7.4 (Mar 1996)
49 ==================================
50
51 - IRIX 5.3 (and possibly, earlier releases, too) library routines call
52 the non-reentrant strtok() routine. The result is that hosts may slip
53 through allow/deny filters. Workaround is to not rely on the vendor's
54 strtok() routine (#ifdef LIBC_CALLS_STRTOK). Credits to Th. Eifert
55 (Aachen University) for spotting this one. This fix supersedes the
56 earlier workaround for a similar problem in FreeBSD 2.0.
57
58 Changes per release 7.3 (Feb 1996)
59 ==================================
60
61 - More tests added to tcpdchk and tcpdmatch: make sure that the
62 REAL_DAEMON_DIR actually is a directory and not a regular file;
63 detect if tcpd recursively calls itself.
64
65 - Edwin Kremer found an amusing fencepost error in the xgets()
66 routine: lines longer than BUFLEN characters would be garbled.
67
68 - The access control routines now refuse to execute "dangerous" actions
69 such as `twist' when they are called from within a resident process.
70 This prevents you from shooting yourself into the foot with critical
71 systems programs such as, e.g., portmap or rpcbind.
72
73 - Support for Unicos 8.x (Bruce Kelly). The program now closes the
74 syslog client socket before running the real daemon: Cray UNICOS
75 refuses to checkpoint processes with open network ports.
76
77 - Support for MachTen UNIX (Albert M.C Tam).
78
79 - Support for Interactive UNIX R3.2 V4.0 (Bobby D. Wright).
80
81 - Support for SCO 3.2v5.0.0 OpenServer 5 (bob@odt.handy.com)
82
83 - Support for Unixware 1.x and Unixware 2.x.  The old Unixware Makefile
84 rule was broken. Sorry about that.
85
86 - Some FreeBSD 2.0 libc routines call strtok() and severely mess up the
87 allow/deny rule processing. This is very bad. Workaround:  call our own
88 strtok() clone (#ifdef USE_STRSEP).
89
90 - The programs now log a warning when they detect that a non-existent
91 banner directory is specified.
92
93 - The hosts_access.3 manual page used obsolete names for the RQ_*
94 constants.
95
96 Changes per release 7.2 (Jan 1995)
97 ==================================
98
99 - Added a note to the README and manpages on using the IDENT service to
100 detect sequence number spoofing and other host impersonation attacks.
101
102 - Portability: ConvexOS puts RPC version numbers before the daemon path
103 name (Jukka Ukkonen).
104
105 - Portability: the AIX compiler disliked the strchr() declaration
106 in socket.c.  I should have removed it when I included <string.h>.
107
108 - Backwards compatibility: some people relied on the old leading dot or
109 trailing dot magic in daemon process names.
110
111 - Backwards compatibility: hostname lookup remains enabled when
112 -DPARANOID is turned off. In order to disable hostname lookups you
113 must turn off -DALWAYS_HOSTNAME.
114
115 - Eliminated false complaints from the tcpdmatch/tcpdchk configuration
116 checking programs about process names not in inetd.conf or about KNOWN
117 username patterns.
118
119 Changes per release 7.1 (Jan 1995)
120 ==================================
121
122 - Portability: HP-UX permits you to break inetd.conf entries with
123 backslash-newline.
124
125 - Portability: EP/IX has no putenv() and some inetd.conf entries are
126 spread out over two lines.
127
128 - Portability: SCO with NIS support has no *netgrent() routines.
129
130 Changes per release 7.0 (Jan 1995) 
131 ==================================
132
133 - Added a last-minute workaround for a Solaris 2.4 gethostbyname()
134 foulup with multi-homed hosts in DNS through NIS mode.
135
136 - Added a last-minute defense against TLI weirdness: address lookups
137 apparently succeed but the result netbuf is empty (ticlts transport).
138
139 - Dropped several new solutions that were in need of a problem. Beta
140 testers may recognize what new features were kicked out during the last
141 weeks before release 7.0 came out. Such is life.
142
143 - Got rid of out the environment replacement routines, at least for
144 most architectures. One should not have to replace working system
145 software when all that is needed is a 4.4BSD setenv() emulator.
146
147 - By popular request I have added an option to send banner messages to
148 clients. There is a Banners.Makefile that gives some aid for sites that
149 are going to use this feature. John C. Wingenbach did some pioneering
150 work here. I used to think that banners are frivolous. Now that I had
151 a personal need for them I know that banners can be useful.
152
153 - At last: an extensible functional interface to the pattern matching
154 engine. request_init() and request_set() accept a variable-length
155 name-value argument list.  The result can be passed to hosts_access().
156
157 - When PARANOID mode is disabled (compile time), the wrapper does no
158 hostname lookup or hostname double checks unless required by %letter
159 expansions, or by access control rules that match host names.  This is
160 useful for sites that don't care about internet hostnames anyway.
161 Inspired by the authors of the firewalls and internet security book.
162
163 - When PARANOID mode is disabled (compile time), hosts with a name/name
164 or name/address conflict can be matched with the PARANOID host wildcard
165 pattern, so that you can take some intelligent action instead of just
166 dropping clients. Like showing a banner that explains the problem.
167
168 - New percent escapes: %A expands to the server address; %H expands to
169 the corresponding hostname (or address if no name is available); %n and
170 %N expand to the client and server hostname (or "unknown"); %s expands
171 to everything we know about the server endpoint (the opposite of the %c
172 sequence for client information).
173
174 - Symmetry: server and client host information is now treated on equal
175 footing, so that we can reuse a lot of code.
176
177 - Lazy evaluation of host names, host addresses, usernames, and so on,
178 to avoid doing unnecessary work.
179
180 - Dropping #ifdefs for some archaic systems made the code simpler.
181
182 - Dropping the FAIL pattern made the pattern matcher much simpler.  Run
183 the "tcpdchk" program to scan your access control files for any uses of
184 this obscure language feature.
185
186 - Moving host-specific pattern matching from string_match() to the
187 host_match() routine made the code more accurate.  Run the "tcpdchk"
188 program to scan your access control files for any dependencies on
189 undocumented or obscure language features that are gone.
190
191 - daemon@host patterns trigger on clients that connect to a specific
192 internet address.  This can be useful for service providers that offer
193 multiple ftp or www archives on different internet addresses, all
194 belonging to one and the same host (www.foo.com, ftp.bar.com, you get
195 the idea).  Inspired by a discussion with Rop Gonggrijp, Cor Bosman,
196 and Casper Dik, and earlier discussions with Adrian van Bloois.
197
198 - The new "tcpdchk" program critcizes all your access control rules and
199 inetd.conf entries. Great for spotting obscure bugs in my own hosts.xxx
200 files. This program also detects hosts with name/address conflicts and
201 with other DNS-related problems. See the "tcpdchk.8" manual page.
202
203 - The "tcpdmatch" program replaces the poor old "try" command. The new
204 program looks in your inetd.conf file and therefore produces much more
205 accurate predictions. In addition, it detects hosts with name/address
206 conflicts and with other DNS-related problems. See the "tcpdmatch.8"
207 manual page.  The inetd.conf lookup was suggested by Everett F Batey.
208
209 - In the access control tables, the `=' between option name and value
210 is no longer required.
211
212 - Added 60-second timeout to the safe_finger command, to cover another
213 potential problem. Suggested by Peter Wemm.
214
215 - Andrew Maffei provided code that works with WIN-TCP on NCR System V.4
216 UNIX. It reportedly works with versions 02.02.01 and 02.03.00. The code
217 pops off all streams modules above the device driver, pushes the timod
218 module to get at the peer address, and then restores the streams stack
219 to the initial state.
220
221 Changes per release 6.3 (Mar 1994)
222 ==================================
223
224 - Keepalives option, to get rid of stuck daemons when people turn off
225 their PC while still connected. Files: options.c, hosts_options.5.
226
227 - Nice option, to calm down network daemons that take away too much CPU
228 time. Files: options.c, hosts_options.5.
229
230 - Ultrix perversion: the environ global pointer may be null. The
231 environment replacement routines now check for this. File: environ.c.
232
233 - Fixed a few places that still assumed the socket is on standard
234 input. Fixed some error messages that did not provide access control
235 file name and line number.  File: options.c.
236
237 - Just when I was going to release 6.2 I received code for Dynix/PTX.
238 That code is specific to PTX 2.x, so I'll keep around my generic
239 PTX code just in case. The difference is in the handling of UDP
240 services.  Files:  tli_sequent.[hc].
241
242 Changes per release 6.2 (Feb 1994)
243 ==================================
244
245 - Resurrected my year-old code to reduce DNS load by appending a dot to
246 the gethostbyname() argument. This feature is still experimental and it
247 may go away if it causes more problems than it solves. File: socket.c.
248
249 - Auxiliary code for the Pyramid, BSD universe. Karl Vogel figured out
250 what was missing: yp_get_default_domain() and vfprintf(). Files:
251 workarounds.c, vfprintf.c.
252
253 - Improved support for Dynix/PTX. The wrapper should now be able to
254 deal with all TLI over IP services. File: ptx.c.
255
256 - The try command now uses the hostname that gethostbyaddr() would
257 return, instead of the hostname returned by gethostbyname(). This can
258 be significant on systems with NIS that have short host names in the
259 hosts map. For example, gethostbyname("wzv.win.tue.nl") returns
260 "wzv.win.tue.nl"; gethostbyaddr(131.155.210.17) returns "wzv", and
261 that is what we should test with. File: try.c.
262
263 Changes per release 6.1 (Dec 1993)
264 ==================================
265
266 - Re-implemented all environment access routines. Most systems have
267 putenv() but no setenv(), some systems have setenv() but no putenv(),
268 and there are even systems that have neither setenv() nor putenv(). The
269 benefit of all this is that more systems can now be treated in the same
270 way. File:  environ.c.
271
272 - Workaround for a weird problem with DG/UX when the wrapper is run as
273 nobody (i.e. fingerd). For some reason the ioctl(fd, I_FIND, "sockmod")
274 call fails even with socket-based applications. The "fix" is to always
275 assume sockets when the ioctl(fd, I_FIND, "timod") call fails. File:
276 fromhost.c. Thanks to Paul de Vries (vries@dutentb.et.tudelft.nl) for
277 helping me to figure out this one.
278
279 - Implemented a workaround for Dynix/PTX and other systems with TLI
280 that lack some essential support routines. Thanks to Bugs Brouillard
281 (brouill@hsuseq.humboldt.edu) for the hospitality to try things out.
282 The trick is to temporarily switch to the socket API to identify the
283 client, and to switch back to TLI when done.  It still does not work
284 right for basic network services such as telnet. File: fromhost.c.
285
286 - Easy-to-build procedures for SCO UNIX, ConvexOS with UltraNet, EP/IX,
287 Dynix 3.2, Dynix/PTX. File: Makefile.
288
289 - Variable rfc931 timeout. Files: rfc931.c, options.c, log_tcp.h, try.c.
290
291 - Further simplification of the rfc931 code. File: rfc931.c.
292
293 - The fromhost() interface stinks: I cannot change that, but at least
294 the from_sock() and from_tli() functions now accept a file descriptor
295 argument.
296
297 - Fixed a buglet: fromhost() would pass a garbage file descriptor to
298 the isastream() call.
299
300 - On some systems the finger client program lives in /usr/bsd. File:
301 safe_finger.c.
302
303 Changes per release 6.0 (Sept 1993)
304 ===================================
305
306 - Easy build procedures for common platforms (sun, ultrix, aix, hpux
307 and others).
308
309 - TLI support, System V.4 style (Solaris, DG/UX).
310
311 - Username lookup integrated with the access control language.
312 Selective username lookups are now the default (was: no username
313 lookups).
314
315 - A safer finger command for booby traps. This one solves a host of
316 possible problems with automatic reverse fingers. Thanks, Borja Marcos
317 (borjam@we.lc.ehu.es) for some inspiring discussions.
318
319 - KNOWN pattern that matches hosts whose name and address are known.
320
321 - Cleanup of diagnostics. Errors in access-control files are now shown
322 with file name and line number.
323
324 - With AIX 3.2, hostnames longer than 32 would be truncated.  This
325 caused hostname verification failures, so that service would be refused
326 when paranoid mode was enabled.  Found by:  Adrian van Bloois
327 (A.vanBloois@info.nic.surfnet.nl).
328
329 - With some IRIX versions, remote username lookups failed because the
330 fgets() library function does not handle partial read()s from sockets.
331 Found by:  Daniel O'Callaghan (danny@austin.unimelb.edu.au).
332
333 - Added a DISCLAIMER document to help you satisfy legal departments.
334
335 The extension language module has undergone major revisions and
336 extensions.  Thanks, John P. Rouillard (rouilj@ra.cs.umb.edu) for
337 discussions, experiments, and for being a good guinea pig. The
338 extensions are documented in hosts_options.5, and are enabled by
339 editing the Makefile STYLE macro definition.
340
341 - (Extension language) The ":" separator may now occur within options
342 as long as it is protected with a backslash. A warning is issued when
343 a rule ends on ":".
344
345 - (Extension language) Better verification mode. When the `try' command
346 is run, each option function now explains what it would do.
347
348 - (Extension language) New "allow" and "deny" keywords so you can now
349 have all rules within a single file. See "nroff -man hosts_options.5"
350 for examples.
351
352 - (Extension language) "linger" keyword to set the socket linger time
353 (SO_LINGER). From:  Marc Boucher <marc@cam.org>.
354
355 - (Extension language) "severity" keyword to turn the logging noise up
356 or down. Many sites wanted a means to shut up the program; other sites
357 wanted to emphasize specific events.  Adapted from code contributed
358 by Dave Mitchell <D.Mitchell@dcs.shef.ac.uk>.
359
360 Changes per release 5.1 (Mar 1993)
361 ==================================
362
363 - The additional protection against source-routing attacks from hosts
364 that pretend to have someone elses network address has become optional
365 because it causes kernel panics with SunOS <= 4.1.3.
366
367 Changes per release 5.0 (Mar 1993)
368 ==================================
369
370 - Additional protection against source-routing attacks from hosts that
371 pretend to have someone elses network address. For example, the address
372 of a trusted host within your own network.
373
374 - The access control language has been extended with a simple but
375 powerful operator that greatly simplifies the design of rule sets (ALL:
376 .foo.edu EXCEPT dialup.foo.edu). Blank lines are permitted, and long
377 lines can be continued with backslash-newline.
378
379 - All configurable stuff, including path names, has been moved into the
380 Makefile so that you no longer have to hack source code to just
381 configure the programs.
382
383 - Ported to Solaris 2. TLI-based applications not yet supported.
384 Several workarounds for System V bugs.
385
386 - A small loophole in the netgroup lookup code was closed, and the
387 remote username lookup code was made more portable.
388
389 - Still more documentation. The README file now provides tutorial
390 sections with introductions to client, server, inetd and syslogd.
391
392 Changes per release 4.3 (Aug 1992) 
393 ==================================
394
395 - Some sites reported that connections would be rejected because
396 localhost != localhost.domain. The host name checking code now
397 special-cases localhost (problem reported by several sites).
398
399 - The programs now report an error if an existing access control file
400 cannot be opened (e.g. due to lack of privileges).  Until now, the
401 programs would just pretend that the access control file does not exist
402 (reported by Darren Reed, avalon@coombs.anu.edu.au).
403
404 - The timeout period for remote userid lookups was upped to 30 seconds,
405 in order to cope with slow hosts or networks.  If this is too long for
406 you, adjust the TIMEOUT definition in file rfc931.c (problem reported
407 by several sites).
408
409 - On hosts with more than one IP network interface, remote userid
410 lookups could use the IP address of the "wrong" local interface.  The
411 problem and its solution were discussed on the rfc931-users mailing
412 list.  Scott Schwartz (schwartz@cs.psu.edu) folded the fix into the
413 rfc931.c module.
414
415 - The result of % expansion (in shell commands) is now checked for
416 stuff that may confuse the shell; it is replaced by underscores
417 (problem reported by Icarus Sparry, I.Sparry@gdr.bath.ac.uk).
418
419 - A portability problem was fixed that caused compile-time problems
420 on a CRAY (problem reported by Michael Barnett, mikeb@rmit.edu.au).
421
422 Changes per release 4.0 (Jun 1992)
423 ==================================
424
425 1 - network daemons no longer have to live within a common directory
426 2 - the access control code now uses both the host address and name
427 3 - an access control pattern that supports netmasks
428 4 - additional protection against forged host names
429 5 - a pattern that matches hosts whose name or address lookup fails
430 6 - an operator that prevents hosts or services from being matched
431 7 - optional remote username lookup with the RFC 931 protocol
432 8 - an optional umask to prevent the creation of world-writable files
433 9 - hooks for access control language extensions
434 10 - last but not least, thoroughly revised documentation.
435
436 Changes per release 3.0 (Oct 1991)
437 ==================================
438
439 Enhancements over the previous release are: support for datagram (UDP
440 and RPC) services, and execution of shell commands when a (remote host,
441 requested service) pair matches a pattern in the access control tables.
442
443 Changes per release 2.0 (May 1991)
444 ==================================
445
446 Enhancements over the previous release are: protection against rlogin
447 and rsh attacks through compromised domain name servers, optional
448 netgroup support for systems with NIS (formerly YP), and an extension
449 of the wild card patterns supported by the access control files.
450
451 Release 1.0 (Jan 1991)