root/fwknop/tags/fwknop-1.9.10/ChangeLog

Revision 1391, 61.6 KB (checked in by mbr, 20 months ago)

fwknop-1.9.10 release

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1fwknop-1.9.10 (01/12/2009):
2    - Added the ability to send SPA packet over HTTP to a webserver.  This
3      requires that the same running fwknopd is also running a webserver, or
4      that ENABLE_TCP_SERVER is enabled so that fwknopd spawns fwknop_serv to
5      listen on a real TCP socket.  Sending SPA packets over HTTP is
6      accomplished with a new command line argument --HTTP on the fwknop
7      client command line, and via a new configuration variable
8      ENABLE_SPA_OVER_HTTP in the fwknop.conf file.
9    - Added ENABLE_EXTERNAL_CMDS for fwknopd to control whether the
10      EXTERNAL_CMD_OPEN and EXTERNAL_CMD_CLOSE directives are used (instead of
11      just checking whether they are set to __NONE__);
12    - Bug fix to make sure to properly construct hash reference for the
13      "include" command list for the check_commands() function when checking
14      for the mail command.
15    - Bug fix for fwknopd to not require Net::Pcap::lookupnet() to succeed on
16      interfaces with no IPv4 address assigned.  This function sets the IP and
17      netmask of the local interface, but if fwknopd sniffs an interface
18      without any IP assigned, then such information will not necessarily
19      exist.
20    - Bug fix to add --Override config support to knopwatchd (Franck
21      Joncourt).
22    - Bug fix to add client timeout (--fw-timeout) support to both forward
23      NAT and local NAT modes (Damien Stuart).  This required increasing the
24      number of expected fields in decrypted SPA packets in fwknopd.
25    - Bug fix in the install.pl script for Cygwin systems (or others where a
26      client-mode only install is done) to take into account the newer perl
27      library path handling code.
28    - Updated minimum ICMP header length to 8 bytes in fwknopd to accept
29      spoofed SPA packets over ICMP echo requests.
30    - Added config dumping support to knopwatchd with -D (Franck Joncourt).
31    - Minor code cleanups and updates to knopwatched (such as the usage of
32      isspace() to allow tab chars between variable names and values in the
33      fwknop.conf file (Franck Joncourt).
34    - Added ENABLE_COOKED_INTF to force fwknopd to always treat the sniffing
35      interface as the "cooked" interface type found on Linux.
36    - Updated knopwatchd to allow more than one overwrite file (Franck
37      Joncourt).
38    - Added --Single-mod-install to the perl installer so that individual
39      module dependencies can be installed piecemeal.
40    - (Test suite): Bug fix for the proper usage of the 'ps' command on
41      FreeBSD and Mac OS X systems.  The test suite now runs successfully on
42      these systems after this fix.
43    - (Test suite): Added the ability to test sending SPA packets over
44      established TCP connections with the fwknop_serv daemon.
45    - (Test suite): Added support for collecting *.warn and *.die output for
46      each test as it is executed and appending this data to each test output
47      file.
48
49fwknop-1.9.9 (11/13/2008):
50    - Added support to fwknop for the Linux 'any' interface which allows SPA
51      packets to be received on multiple interfaces on a Linux system.  This
52      is useful for running fwknop on a dual-homed Linux host, and then
53      accepting SPA packets on either the internal or external interface so
54      that SPA packets can influence the packet filter from either network.
55    - Added support for interfacing fwknop with third party software through
56      the addition of three new variables in the access.conf file (or set
57      globally in the fwknop.conf file): EXTERNAL_CMD_OPEN,
58      EXTERNAL_CMD_CLOSE, and EXTERNAL_CMD_ALARM.
59            The "open" and "close" commands might be manually supplied firewall
60      commands, and both support variable substitution of any of the variables
61      in the access.conf file with "$VAR".  Also, three special variables are
62      supported: $SRC, $PORT, and $PROTO, which are derived from actual values
63      from within valid SPA packets (as opposed to $SOURCE from access.conf
64      which may contain a list of networks instead of a single IP address).
65        Here are some examples:
66        - Execute a specific iptables command on behalf of the source IP
67          in a valid SPA packet to add a new ACCEPT rule, and execute another
68          command (to delete the same rule after a timeout):
69                EXTERNAL_CMD_OPEN       iptables -A INPUT -s $SRC -j ACCEPT
70                EXTERNAL_CMD_CLOSE      iptables -D INPUT -s $SRC -j ACCEPT
71        - Execute a custom binary with the SOURCE and OPEN_PORTS variables from
72          the access.conf file as input on the command line, and after a
73          timeout execute a different program but use the real SPA source IP:
74                EXTERNAL_CMD_OPEN       /path/someprog $SOURCE $OPEN_PORTS
75                EXTERNAL_CMD_OPEN       /path/otherprog $SRC
76    - Added IPT_CMD_ALARM to control the number of seconds that the
77      IPTables::ChainMgr module uses to wrap alarm() calls around iptables
78      commands (for IPTables::ChainMgr 0.8 and later, although this does not
79      interfere with earlier versions of the module).
80    - Added IPT_EXEC_STYLE to control the execution method used for iptables
81      commands in the IPTables::ChainMgr module.  The default is "waitpid",
82      but "system", and "popen" are also supported.
83    - Added IPT_EXEC_SLEEP to control the number of seconds that the
84      IPTables::ChainMgr module uses to delay between each iptables command.
85      The default is zero (no delay), but this can be increased to ensure that
86      iptables commands are issued at a slower pace.
87    - Added IPT_EXEC_TRIES to allow critical iptables commands to be tried
88      multiple times (with a default of 1) in case there are any errors from
89      iptables execution.
90    - Added --Override-config to fwknopd (suggested by Franck Joncourt) to
91      allow config variables in the normal /etc/fwknop/fwknop.conf file to be
92      superseded by values from other specified files.  The --Override-config
93      command line argument accepts a comma-separated list of multiple files
94      from which to import configuration variables from.
95    - Added code to prefer the usage of the /usr/sbin/sendmail binary to send
96      email alerts before falling back to the mail binary (suggested by
97      Alexander Perlis).
98    - Added --Dump-config to fwknopd (suggested by Franck Joncourt).
99    - Added execution of --Dump-config to the test suite to collect the
100      installed version of the fwknop.conf and access.conf files (personal
101      information is anonymized).
102    - Updated fwknopd to use the POSIX sys_wait_h API for SIGCHLD handling in
103      order to be more consistent with an example from the perlipc man page.
104    - Updated fwknopd to pass in a reference to the SIGCHLD signal handler to
105      the IPTables::ChainMgr module so that all command executions via fork()
106      and exec() are associated with the same signal handler.
107    - Updated to IPTables::ChainMgr version 0.8.
108    - Updated to IPTables::Parse version 0.7.
109    - (Test suite): Added time stamps to MSG and TEST lines for each test
110      (useful to see the relative time if an alarm expires).
111    - (Test suite): Added tests for fwknopd --Override-config, --Dump-config,
112      and writing SPA packets to disk with the --Save-packet functionality (in
113      the fwknop client).
114    - (Test suite): Added tests for IPT_EXEC_SLEEP delays for executing
115      iptables commands.
116    - (Test suite): Added tests for Linux 'any' interface capture of SPA
117      packets on all interfaces.
118    - (Test suite): Added the ability to collect output from knoptm to see
119      when requests are received from fwknopd and when rules are added and
120      removed.
121    - Added version information for fwknopd to syslog startup message.
122    - Bug fix for the fwknop client in symmetric key mode where the terminal
123      would not be taken out of 'noecho' mode if a password less than 8
124      characters long is provided.  Previous to this fix, it was necessary to
125      blindly type 'reset'.  (Reported by Alexander Perlis.)
126
127fwknop-1.9.8 (09/30/2008):
128    - Added GPG_NO_REQUIRE_PREFIX to access.conf to control whether the GnuPG
129      'hQ' prefix is added before base64 decoding and decrypting.  Normally
130      this is not needed, but if there appear to be communications issues
131      between the fwknop client and the fwknopd server then this option can be
132      useful to ensure that encrypted SPA data is sent through the GnuPG
133      decryption routine.  The 'hQ' prefix is a heuristic derived from the
134      file 'magic' database for describing data encrypted with GnuPG, and the
135      fwknop client normally strips this data from outgoing SPA packets
136      (unless the --Include-gpg-prefix option is used).
137    - Added 'GPG_PATH <path>' to fwknopd (via access.conf) so that different
138      paths to the gpg binary can be specified on a per-SOURCE basis.  This
139      allows one SOURCE stanza to apply one gpg binary to decrypt incoming SPA
140      packets (say /usr/bin/gpg), and another SOURCE stanza to apply to another
141      gpg binary (say /usr/bin/gpg2).  In this way, fwknop/fwknopd now
142      supports gpg2 in addition to gpg.
143    - Bugfix to make sure that neither fwknop nor fwknopd reference any
144      options file in GnuPG mode, and this is now the default (which overrides
145      the now unnecessary --gpg-no-options arg).  There is a new option
146      --gpg-use-options and GPG_USE_OPTIONS to restore the usage of an options
147      file by GnuPG by fwknop and fwknopd (not normally needed).
148    - Added '--gpg-prefix <bytes>' to the fwknop client so that the
149      predictable prefix for GnuPG encrypted data can be changed.  Normally
150      this prefix is 'hQ' (base64 encoded), or the raw bytes 0x8502.
151    - Added the ability to control the path used for the gpg binary on the
152      client side with a new argument '--gpg-path <path>', and on the server
153      side with gpgCmd in the fwknop.conf file.  The GnuPG::Interface module
154      normally just takes the first instance of gpg that is the current path,
155      but this new feature allows the path to the binary to be explicitly set.
156    - Added --Save-packet-append to allow SPA packets to be appended to the
157      --Save-packet-file in --Save-packet mode.  This allows multiple SPA
158      packets to more easily be stored for closer examination (i.e. to make
159      sure randomness is high or to test encryption properties over large
160      sets of SPA packets).
161    - Updated fwknopd to enforce the DIGEST_TYPE variable more strictly by not
162      accepting SPA packets that do not include digest of the specified type.
163      The DIGEST_TYPE default is 'ALL', so normally fwknopd accepts any
164      supported digest.
165    - Bugfix to make sure to apply BLACKLIST checks to IP addresses specified
166      with -a (or derived via -R) in addition to the source IP in the IP
167      header (which can be modified via --Spoof-src).  (Franck Joncourt
168      submitted a patch for this.)
169    - Bugfix to ensure that the permissions for the
170      /var/run/fwknop/knopwatchd.pid file are set to 0600 (noticed by Franck
171      Joncourt).
172    - Bugfix to remove the Net::IPv4Addr dependency in the fwknop client and
173      knoptm daemon (Franck Joncourt).
174    - (Test suite) Added the base64_byte_frequency.pl script to the test/
175      directory.  This script parses files that contain base64 encoded data
176      (one record per line), and produces data files that can be graphed with
177      Gnuplot in order to visualize SPA packets.  The new --Save-packet-append
178      argument makes it easy to generate large collections of SPA packets with
179      the fwknop client, and this data can then be parsed by
180      base64_byte_frequency.pl to look for features that are common across SPA
181      packets (this should be minimized because every fwknop SPA packet contains
182      16 bytes of random data).  Some analysis of randomness in SPA packets
183      generated by fwknop is presented in this blog post:
184
185      http://www.cipherdyne.org/blog/2008/09/visualizing-spa-packet-randomness.html
186
187    - (Test suite) Added tests for GPG_NO_REQUIRE_PREFIX functionality and for
188      the expected GnuPG prefix.
189    - (Test suite) Added tests for GnuPG version 2 (a check is made to see if
190      it is installed before these tests are run).
191
192fwknop-1.9.7 (08/24/2008):
193    - Mirek Trmac from Red Hat contributed several patches so that fwknop can
194      be bundled within the Fedora Linux distribution.  These patches
195      implemented the following changes:
196
197        Updates to fwknopd to remove the NetPacket module as a dependency
198      (this is a particularly important update since it assists with getting
199      fwknop bundled with Debian as well).  The patch manually decodes the
200      network and transport layer headers.
201        A patch to make the fwknop init script not start fwknopd by default
202      on Red Hat systems.  This patch also supports Fedora init script
203      conventions better (i.e. fwknop instead of the fwknopd name for the lock
204      file in /var/lock/subsys).
205        Updated the fwknop Makefile to respect the OPTS variable which is used
206      in the RPM spec file.
207        Bugfix in fwknop_serv to support the variable expansion code from
208      fwknopd.  This was important for the TCPSERV_PID_FILE file which is
209      defined as $FWKNOP_RUN_DIR/fwknop_serv.pid.
210        Updated fwknopd to use the Net::Pcap API valid in Net::Pcap-0.14 for
211      the datalink() function (used to detect the datalink layer type).
212
213    - Updated fwknop, fwknopd, and knoptm to import perl modules out of the
214      /usr/lib/fwknop/ directory if it exists.  This allows the perl module
215      path to be manipulated via the --Lib-dir command line argument and
216      'require' statements instead of the old 'use module' strategy.
217    - Added module version output for each non-core perl module used by fwknop
218      and fwknopd in --debug mode.  This is mostly useful for the test suite
219      to see which versions of the modules are being used.
220    - Added the ability to ignore any local GnuPG 'options' file with a new
221      command line argument --gpg-no-options (for the fwknop client) and a new
222      access.conf config variable GPG_NO_OPTIONS (for the fwknopd daemon).
223      This fixes a problem reported by Mike Holzmann where the 'encrypt-to'
224      option in the default options file was causing SPA packets to exceed
225      1500 bytes when encrypted with a 2048-bit GnuPG key.  Also added the
226      MAX_SNIFF_BYTES to the fwknop.conf file and --Max-packet-size to the
227      fwknop command line to alter the default of 1500 bytes if needed (but
228      this shouldn't really be necessary).
229    - Bugfix for 'Premature end of base64 data' and 'Premature padding of
230      base64 data' warning messages from MIME::Base64 errors.  Now fwknopd
231      applies more rigorous checks for base64 encoded characters, and either
232      of these two messages above will result in the packet data being
233      discarded before it is sent through any decryption function.  Mike
234      Holzmann reported this issue.
235    - (Test suite) Added --test-system-fwknop to allow any installed version
236      of fwknop to be installed instead of the scripts bundled within the
237      local source distribution.
238
239fwknop-1.9.6 (07/18/2008):
240    - SPA packets are base64-encoded by the fwknop client, and this encoding
241      pads data with '=' chars until the total length of the encoded data is a
242      multiple of four.  This characteristic can be used within a Snort rule
243      to assist in the detection of SPA communications.  The 1.9.6 release of
244      fwknop strips out these padding characters before the client sends an
245      SPA packet, and the fwknopd server adds them back in (to form a multiple
246      of four) before base64 decoding the packet data.  This reduces the level
247      of identifying information in SPA packets and therefore makes it more
248      difficult to detect the usage of SPA for service access.  For reference,
249      a Snort rule that would detect SPA packets via the trailing '=' chars
250      (previous to this release) would be:
251
252        alert udp any any -> any 62201 (msg:"fwknop SPA traffic"; \
253        dsize:>150; pcre:"/==$/"; sid:20080001; rev:1;)
254
255    - According to the 'file' command (via it's 'magic') database, files that
256      are encrypted with GnuPG begin with 0x8502, and this is true for SPA
257      packets generated by fwknop (previous to this release).  In
258      fwknop-1.9.6, the "hQ" prefix is removed by the fwknop client and added
259      back in by the fwknopd server if it doesn't exist.  This measure is
260      another effort to make SPA packets more difficult to detect on the wire,
261      such as with the following Snort rule:
262
263        alert udp any any -> any 62201 (msg:"fwknop GnuPG encrypted SPA
264        traffic"; content:"hQ"; depth:2; dsize:>1000; sid:20080003; rev:1;)
265
266    - Updated the fwknop client to randomize the UDP source port for default
267      SPA packet generation.  There is also a new command line argument
268      --Source-port <port> to allow the user to manually set the source port
269      on the fwknop client command line.  A lot more attention is given now to
270      source ports after the Dan Kaminsky DNS caching exploit, and it turns
271      out that even on Linux that the kernel did not randomize UDP source
272      ports until the 2.6.24 kernel.  Of course, any userspace process is free
273      to request a random port itself, but if a userspace application did not
274      build this in then it would be up to the kernel to assign a source port.
275      In the case of Linux, here are two links that show the change to the
276      kernel code as well as the ChangeLog entry for UDP source port
277      randomization:
278
279        http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;\
280        a=commit;h=32c1da70810017a98aa6c431a5494a302b6b9a30
281        http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.24
282
283    - (Test suite): Added the ability to explicitly run major classes of tests
284      with two new command line arguments to the fwknop_test.pl script:
285      --test-include <test>, and --test-exclude <test>.  In each case the
286      <test> string is used as a sub-string match against the main identifying
287      string for the name of the test.  For example, to run all tests for
288      replay attacks, use "--test-include Replay", and for all port
289      randomization tests use "--test-include random".  To see all possible
290      classes of tests, run the test suite without any command line arguments
291      and examine the test.log file.
292    - (Test suite): Added tests for the legacy shared and encrypted port
293      knocking modes.
294    - (Legacy port knocking mode): Updated to not require iptables log
295      messages to be written to the fwknopfifo named pipe and just parse the
296      /var/log/messages file directly by default.  This can be configured via
297      two new variables ENABLE_SYSLOG_FILE and IPT_SYSLOG_FILE (similarly to
298      the psad project).  In support of this feature, install.pl now does not
299      create the fwknopfifo or reconfigure the syslog daemon unless the
300      --install-syslog-fifo argument is used, and the knopmd does not have to
301      run.
302    - (Legacy port knocking mode): Added the ability to re-open the
303      /var/log/messages file if it is rotated by an external program such as
304      logrotate.
305    - (Test suite): Bugfix to use --fw-type argument on fwknopd command line.
306      This fixes various tests on Mac OS X and FreeBSD systems running ipfw.
307    - Minor bugfix to require a space character after variable names when
308      parsing the fwknop.conf file via knopmd and knopwatchd (implemented in
309      fwknop_funcs.c)
310
311fwknop-1.9.5 (06/08/2008):
312    - Updated to Class::MethodMaker 2.11 from CPAN.  This helps with systems
313      running perl-5.10.0 and greater (such as Fedora 9).
314    - Added the LOCALE variable to fwknop.conf and made the "C" locale set by
315      default so that gpg process output would always be correctly
316      interpreted.
317    - Updated to Net::RawIP 0.23 from 0.21_03 and removed List::MoreUtils
318      since Net::RawIP no longer requires it
319    - Updated to Crypt::Rijndael 1.06 from 1.04.
320    - Updated to Crypt::CBC 2.29 from 2.19.
321    - Updated to GnuPG::Interface 0.36 from 0.34.
322    - Removed legacy knopmd.conf file since knopmd uses the fwknop.conf file
323      instead.  Also, note that knopmd only runs in the legacy port knocking
324      mode to collect iptables log information from syslog.  The default
325      authentication/authorization method used by fwknop is SPA which exhibits
326      far better security properties than port knocking (see
327      http://www.cipherdyne.org/fwknop/docs/SPA.html).
328
329fwknop-1.9.4 (06/01/2008):
330    - Added two new port randomization options.  The first instructs the
331      fwknop client to select a random port between 10,000 and 65,535 as the
332      destination port over which to send an SPA packet.  This feature is
333      enabled with a new command line argument "--rand-port" like so:
334
335      $ fwknop -A tcp/22 --rand-port -R -D 11.1.1.1
336
337      On the fwknopd server side, the default PCAP_FILTER setting of "udp port
338      62201" should be changed to "udp dst portrange 10000-65535" so that
339      fwknopd can sniff SPA packets that are sent over randomized destination
340      ports.  Randomizing the destination port makes it more difficult to
341      write IDS signatures to detect fwknop SPA communications.
342
343      The second port randomization technique uses a new SPA message type to
344      tell the fwknopd daemon to create a NAT rule for access to a local
345      socket via the iptables INPUT chain.  This allows an SSH client to meet
346      the local SSHD daemon running on the fwknopd server system by SSH'ing to
347      the random port.  This functionality is implemented via two new command
348      line arguments on the fwknop client command line: "--NAT-rand-port" to
349      instruct fwknop to select a random port over which the follow-on
350      connection will be made), and "--NAT-local" (to instruct the fwknopd
351      server that new firewall rules should NAT an incoming connection to the
352      randomly selected port).  Here is an example:
353
354      $ fwknop -A tcp/22 --NAT-rand-port --NAT-local -R -D 11.1.1.1
355
356      Now the fwknop client will select a random port to NAT the incoming
357      connection.  So say it selects port 31001 (as indicated by the output of
358      fwknop on the command line as displayed below) - then you would SSH to
359      this port to access the real SSH daemon on the system where fwknopd is
360      running:
361
362      [+] Sending 206 byte message to 127.0.0.1 over udp/46245...
363      Requesting NAT access to tcp/22 on 127.0.0.1 via port 31001
364
365      $ ssh -p 31001 <user>@11.1.1.1
366
367      Note that in this case it is not necessary to use --NAT-access since the
368      fwknopd daemon knows that access is requested to a local service (so an
369      internal IP address does not have to be specified).
370
371    - Added the ability to specify the port that SPA packets are sent over
372      with the fwknop client by using the syntax "<host|IP>:<port>".  So, for
373      example, to have the client send an SPA packet to 11.1.1.1 over UDP port
374      12345 (instead of the default of 62201), one could use the following
375      command:
376
377      $ fwknop -A tcp/22 -R -D 11.1.1.1:12345
378
379    - Bugfix to add a check for "keep-state" in ipfw policies in addition to
380      the existing "check-state" check (noticed by Sebastien Jeanquier).
381    - Updated the install.pl script to try to determine the OS type as early
382      as possible during the install process.
383    - Added the MIN_SPA_PKT_LEN variable with 150 (bytes) as the default.
384      This allows fwknopd to ignore packets that are not at least this many
385      bytes (including packet headers) before any decryption attempt is made.
386    - Added --time-offset-plus and --time-offset-minus args to the fwknop
387      client command line.  This allows the time stamp within an SPA packet to
388      be influenced without setting the system clock (which normal users
389      cannot usually do).  This is useful for when the client and server
390      systems have clocks that are out of sync.
391    - Bugfix on Ubuntu systems to make sure that the fwknop init script is
392      installed with a priority of 99 instead of 20 - this puts fwknop as late
393      as possible within the boot sequence so that the system is ready to run
394      fwknop.
395    - Bugfix to not open ports that are not specifically requested in an SPA
396      packet even if those ports are listed in the OPEN_PORTS variable in the
397      access.conf file.
398    - Updated to version 5.47 of the Digest::SHA module.
399    - Updated to version 0.7 of the IPTables::ChainMgr module (includes
400      perldoc documentation).
401    - Updated to version 0.6 of the IPTables::Parse module (includes perldoc
402      documentation).
403    - Added NAT, port randomization, and and time offset option discussions to
404      fwknop(8) man page.
405
406fwknop-1.9.3 (04/05/2008):
407    - Added MASQUERADE and SNAT support to complement inbound DNAT connections
408      for SPA packets that request --Forward-access to internal systems.  This
409      functionality is only enabled when both ENABLE_IPT_FORWARDING and
410      ENABLE_IPT_SNAT are set, and is configured by two new variables
411      IPT_MASQUERADE_ACCESS and IPT_SNAT_ACCESS which define the iptables
412      interface to creating SNAT rules.  The SNAT supplements of DNAT rules
413      are not usually necessary because internal systems usually have a route
414      back out to the Internet, but this feature accommodates those systems
415      that do not have such a route.  By default, the MASQUERADE target is
416      used if ENABLE_IPT_SNAT is enabled because this means that the external
417      IP does not have to be manually defined.  However, the external IP can
418      be defined by the SNAT_TRANSLATE_IP variable.
419    - Added hex_dump() feature for fwknop client so that raw encrypted SPA
420      packet data can be displayed in --verbose mode.
421    - When ENABLE_IPT_FORWARDING is set, added a check for the value of the
422      /proc/sys/net/ipv4/ip_forward file to ensure that the local system
423      allows packets to be forwarded.  Unless ENABLE_PROC_IP_FORWARD is
424      disabled, then fwknopd will automatically set the ip_forward file to "1"
425      if it is set to "0" (again, only if ENABLE_IPT_FORWARDING is enabled).
426    - Minor bugfix to remove sys_log() call in legacy port knocking mode.
427    - Minor bugfix to expand both the Id and Revision tags via the
428      svn:keywords directive.
429
430fwknop-1.9.2 (03/12/2008):
431    - Crypt::CBC adds the string "Salted__" to the beginning of the encrypted
432      text (at least for how fwknop interfaces with Crypt::CBC), so the fwknop
433      client was updated to delete the encoded version of this string
434      "U2FsdGVkX1" before sending a Rijndael-encrypted SPA packet on the wire.
435      The fwknopd server will add this string back in before decrypting.  This
436      makes it harder to write an IDS signature that looks for fwknop traffic;
437      e.g. look for the default prefix string "U2FsdGVkX1" over UDP port 62201,
438      which would work for fwknop clients < 1.9.2 (as long as the port number
439      is not changed with --Server-port).
440    - Added more granular source IP and allowed IP tests so that access to
441      particular internal IP addresses can be excluded in --Forward-access
442      mode.  A new keyword "INTERNAL_NET_ACCESS" is now parsed from the
443      access.conf file in order to implemented these restrictions.
444    - (SPAPICT Group) Added BLACKLIST functionality to allow source IP
445      addresses to easily be excluded from the authentication process.
446    - (Grant Ferley) Submitted patch to handle SIGCHLD in IPTables::ChainMgr.
447    - (Grant Ferley) Submitted patch to handle Linux "cooked" interfaces for
448      packet capture (e.g. PPPoE interfaces).
449    - (SPAPICT Group) Applied modified version of the client-defined access
450      timeout patches submitted by the PICT SPA Group.  There are two new
451      message types to facilitate client timeouts; one for normal access mode,
452      and the other for the FORWARD access mode.  In the access.conf file,
453      there is also a new variable "PERMIT_CLIENT_TIMEOUT" to allow each
454      SOURCE stanza to allow client-defined timeouts or not.
455    - (SPAPICT Group) Submitted patches to include support for the SHA1 digest
456      algorithm for SPA packet replay attack detection.  I modified these
457      patches for maximum configurability (see the --digest-alg argument on
458      the fwknop command line), and the ability to use the SHA256 algorithm as
459      well.  The default path to the /var/log/fwknop/md5sums file has been
460      changed to /var/log/fwknop/digest.cache, and the default digest
461      algorithm is now SHA256 (but this is tunable via the DIGEST_TYPE
462      variable in the fwknop.conf file).
463    - Added the Digest::SHA perl module in support of the SHA1 and SHA256
464      digest algorithms for replay attack detection and SPA message integrity.
465    - Added full packet hex dumps (including packet headers) to fwknopd in
466      --debug --verbose mode.  This is to help diagnose packet sniffing issues
467      over the loopback interface on Mac OS X (first reported by Sebastien
468      Jeanquier).
469    - (Test suite) Bugfix to ensure that the FWKNOP_DIR variable is set to the
470      local output/ directory in several of the test config files in the
471      test/conf/ directory.
472    - (Test suite) Added several tests for configurable digest algorithms in
473      support for the SHA256, SHA1, and MD5 digest changes made by the SPAPICT
474      Group.
475    - Updated the fwknop client to always call encode_base64() with the string
476      to encode along with a second null-string argument to force all encoded
477      data to not include line breaks.
478    - Bugfix in install.pl to not test for the iptable command on non-Linux
479      systems, and to not test for the ipfw command on systems that are Linux.
480    - (Test suite) Updated to include the /proc/config.gz file so that the
481      kernel config can be reviewed (not all Netfilter hooks are necessarily
482      compiled in).
483
484fwknop-1.9.1 (01/26/2008):
485    - Added ENABLE_OUTPUT_ACCESS keyword to access.conf file parsing. This
486      provides a similar configuration gate for the iptables OUTPUT chain to
487      the ENABLE_FORWARD_ACCESS keyword, and adds the abiliy to control which
488      access.conf SOURCE blocks interface to the OUTPUT chain.
489    - Better installation support for various Linux distributions including
490      Fedora 8 and Ubuntu.  The current runlevel is now acquired via the
491      "runlevel" command instead of attempting to read /etc/inittab (which
492      does not even exist on Ubuntu 7.10), and there are new command line
493      arguments --init-dir, --init-name, and --runlevel to allow the init
494      directory, init script name, and the runlevel to be manually specified
495      on the install.pl command line.
496    - Added command line argument display to fwknop client --verbose mode.
497    - Updated the test suite to include OUTPUT chain tests, reference
498      access.conf files in the test/conf/ directory, and perform SPA packet
499      format validation tests by parsing fwknopd output.
500    - Updated fwknopd to use always use the -c argument on the knoptm command
501      line (this makes sure that the test suite usage of fwknopd causes knoptm
502      to reference the correct configuration).
503    - Updated IPTables::ChainMgr to print iptables command output to stdout or
504      stderr if running in debug or verbose mode.
505    - Added --Exclude-mod-regex to install.pl so that the installation of
506      particular perl modules that match the supplied regex can be skipped.
507    - Added SIGALRM wrapper to the test suite since some libpcap and system
508      combinations break the ability of fwknopd to sniff packets.
509    - Added srand() call to the fwknop client (this is useful for older
510      versions of perl which do not automatically call srand() at the first
511      rand() call if srand() was not already called).
512    - Added a test to the test suite for sniffing packets over the loopback
513      interface.
514    - Added SPA packet aging test to the test suite to ensure that packet
515      expirations work properly (this feature protects against MITM attacks
516      where a valid SPA packet is stopped by an inline attacker and
517      retransmitted at a later time to acquire access).
518    - Added a file (test.log) to collect test suite console output.
519    - Added --Prepare-results argument to test suite to anonymize test results
520      and create a tarball that can be emailed to a third party to assist in
521    - Added full firewall policy dumps and the collection of system specifics
522      to the test suite. This makes it easy to send the output directory and
523      the test.log file to developers to assist in debugging (no information
524      is sent anywhere except as part of a manual process of course, and
525      addresses can be anonymized with --Prepare-results - loopback addresses
526      are not modified).
527    - Added --fw-del-ip <IP> argument to fwknopd so that a specific IP address
528      can be removed from the local firewall policy (this is used by the test
529      suite to ensure that if a test for removed firewall rules fails then
530      subsequent tests will not also fail because they are no longer tracked
531      by a running knoptm instance).
532    - Added a test to the test suite to collect fwknopd syslog output.  This
533      is useful to see if a mechanism such as SELinux is deployed in a manner
534      that prevents normal fwknop communications.
535    - Bugfix to track MD5 digest for SPA command mode packets.
536    - Bugfix in fwknopd to not open ports listed in OPEN_PORTS in the absence
537      of the PERMIT_CLIENT_PORTS directive when an SPA packet contains a
538      request for access to a port not listed in OPEN_PORTS.
539      debugging fwknop if there are any issues.
540    - Added --verbose flag to fwknopd commands issued by the test suite so
541      that more data is collected for debugging analysis.
542    - Added GnuPG tests to the test suite with dedicated keys (for use only
543      with the test suite) in the test/conf/client-gpg and
544      test/conf/server-gpg directories.
545    - Added digest file validation to test suite to make sure that fwknopd
546      correctly tracks SPA packet MD5 digests.
547    - Updated to search state tracking rule in any iptables chain (many
548      iptables policies have user-defined chains that can be a bit complicated
549      to parse).
550    - Updated install.pl to be more strict in stopping any running fwknopd
551      processes.
552
553fwknop-1.9.0 (12/15/2007):
554    - Added a test suite so that fwknop and fwknopd functionality can be
555      automatically tested over the loopback interface (see the fwknop_test.pl
556      script in the test/ directory).
557    - Major update to allow SPA packets to create DNAT connections to internal
558      systems through the FORWARD chain (iptables only).  This is useful to
559      connect through to internal systems (that may be running on non-routable
560      IP addresses) via a border firewall or router that is running fwknopd to
561      create inbound DNAT rules.
562    - Added support for the iptables OUTPUT chain via two new variable in the
563      fwknop.conf file: ENABLE_IPT_OUTPUT and IPT_OUTPUT_ACCESS. This is
564      useful for iptables firewalls that are not running the conntrack modules
565      and that have a restrictive OUTPUT chain (so SYN/ACK responses are not
566      allowed out without an explicit ACCEPT rule).
567    - Added the ability to force the fwknopd and knoptm daemons to restart
568      themselves (via knopwatchd) after a configurable timeout (see the
569      ENABLE_VOLUNTARY_EXITS and EXIT_INTERVAL variables in the
570      /etc/fwknop/fwknop.conf file). This feature is for those that want
571      fwknopd to go through its initialization routine periodically just in
572      case there is a logic (or other) bug that might result in fwknopd not
573      accepting a valid SPA packet. NOTE: This feature is disabled by default,
574      and is not normally needed since fwknopd is quite stable in most
575      deployments.
576    - Major update to perform all firewall rule expirations with knoptm, which
577      is now started in all data collection modes.  Older versions of fwknopd
578      maintained its own firewall rule expiration code for the FILE_PCAP,
579      ULOG_PCAP, and KNOCK modes, so two mechanisms were being maintained for
580      the same purpose.  The 1.9.0 release fixes this oversight.
581    - Minor bugfix to have knopwatchd generate syslog messages whenever an
582      fwknop daemon needs to be restarted.
583    - Added --interface command line argument to install.pl to allow the
584      sniffing interface to be specified from the command line. Also updated
585      install.pl to enforce a 10-try maximum for attempting to accept a valid
586      interface name from the command line (LANG env issues can exist
587      sometimes).
588    - Updated SPA packet format for server_auth and forward_info elements;
589      the internal MD5 sum is now always the last field in an SPA packet. This
590      makes extensions of the SPA protocol much easier, and the generation of
591      SPA packets more elegant. Also, SPA packet validation has been improved
592      to ensure that fields that are supposed to be digits really only contain
593      integer data.
594    - Added ENABLE_FORWARD_ACCESS variable to the access.conf file, and added
595      ENABLE_IPT_FORWARDING to the fwknop.conf file. These variables provide
596      the per-SOURCE ability to create DNAT connnections through the FORWARD
597      chain..
598    - Replaced the IPT_AUTO_CHAIN1 variable with IPT_INPUT_ACCESS and
599      IPT_FORWARD_ACCESS in fwknop.conf.
600    - Added --Forward-access argument to the fwknop client.
601    - Added client version number to syslog messages generated by fwknopd when
602      a valid SPA packet is received.
603    - Added human readable timestamp to MD5 cache. Here is an example of the
604      update format:
605        127.0.0.1 X6WF2C29kEgAv4aDJ8TDeQ [Wed Nov 28 09:24:46 2007]
606    - Added --Count argument to fwknopd so that it calls exit() when the
607      specified number of packets is monitored.
608    - Added --no-logs argument to knoptm in support of the test suite so that
609      no emails are generated.
610    - Bugfix in fwknopd to account for non-Ethernet link layer header over
611      *BSD loopback interfaces.
612    - Added --Save-dst argument to the fwknop client to add a priority file to
613      store client command line arguments (~/.fwknop.save). This file is only
614      overwritten when --Save-dst is used.
615    - Added fwknopd --fw-del-chains to allow the fwknopd iptables chains to
616      easily be deleted.
617    - Minor fwknopd bugfix to set process exit status to 0 when --Kill is
618      used.
619
620fwknop-1.8.3 (11/17/2007):
621    - Updated external IP resolution to point to http://www.whatismyip.org,
622      and added http://www.cipherdyne.org/cgi/clientip.cgi as a backup site
623      for fwknop IP resolution.
624    - Added storage of source IP along with SPA MD5 sum. This allows the user
625      to infer which networks are more hostile if an SPA packet is replayed.
626    - Added SPA packet hex dumps in 'fwknopd --debug' mode so that the
627      integration of third-party encryption algorithms is easier to
628      troubleshoot. Sean Greven contributed a patch for this.
629    - Reinstated the legacy port knocking mode. It appears that all encrypted
630      output from the updated Crypt::Rijndael module is at least 32 bytes
631      long, so port knocking sequences are now 32 bytes long as well (they
632      were previously 16 bytes long in old versions of fwknop).
633    - Bugfix to ensure the key length is at least 8 chars in --get-key mode.
634    - Minor update to remove init message on OS X install.
635    - Updated install.pl to set the LANG environmental variable to
636      "en_US.UTF-8". This should fix the problem where the output of ifconfig
637      was not interpreted correctly if the locale LANG setting is not English.
638    - Implemented verbose email alerting by setting the ALERTING_METHODS
639      variable to "verbose". This instructs fwknopd to generate a new email
640      message for each message that it normally logs vis syslog (this feature
641      is not the default, and must be manually enabled).
642
643fwknop-1.8.2 (09/15/2007):
644    - Added fwknopd server support for Mac OS X. The Darwin uname return
645      string is detected and this enables Darwin-specific installation code in
646      install.pl.
647    - Updated to not print sensitive key/password information in --debug mode
648      with fwknopd.
649    - Bugfix for install.pl on Windows 2003 Server running under Cygwin where
650      'uname -o' output is reported 'Gygwin' for some reason.
651    - Added --Cygwin-install command line argument to install.pl to force
652      client-only fwknop install on Cygwin systems.
653    - Added --OS-type command line argument to install.pl to allow the user to
654      force the installation type.
655    - Updated to version 1.04 of Crypt::Rijndael. This fixes incompatibilities
656      between SPA packets between 64-bit and 32-bit platorms.
657    - Bugfix to enforce a maximum of 20 tries to read a password from stdin.
658    - Applied TCP options parsing fix from psad for invalid zero or one length
659      fields that break TLV encoding (this is for fwknopd, and only applies to
660      the legacy port knocking mode).
661    - Added code to fwknopd to check to see if there are any state tracking
662      rules in place within the local iptables or ipfw policy.
663    - Made syslog identity, facility, and priority configurable (applied code
664      from the psad project).
665    - Implemented --fw-list for ipfw firewalls.
666    - Bugfix for knoptm removing ipfw rules too quickly after not timing out
667      previously instantiated rules properly.
668    - Implemented smarter cache removal strategy in knoptm so that rules that
669      are manually removed from the running iptables or ipfw policy are also
670      removed from the cache.
671    - Added /var/log/fwknop/errs/fwknopd.{warn,die} tracking to the fwknopd
672      daemon for the PCAP modes of collecting packet data. Added
673      knoptm{warn,die} files for knoptm as well.
674    - Bugfix to import the GnuPG::Interface module in --get-key mode.
675    - Bugfix to send source IP as a part of the command message in command
676      mode so that REQUIRE_SOURCE_ADDRESS controls can be applied.
677    - Added --Test-mode to fwknop client so that SPA packets can be built but
678      never sent over the network.
679
680fwknop-1.8.1 (06/06/2007):
681    - Bugfix to ensure that the "keep-state" directive is added to firewall
682      rules on systems running the ipfw firewall.
683    - Added the --Save-packet and --Save-packet-file command line arguments
684      to the fwknop client. These options instruct fwknop to save a copy of
685      an encrypted SPA packet before it is sent across the network.
686    - Bugfix to find minimal unused ipfw rule number for ipfw firewalls. This
687      fixes an issue where ipfw rules added by fwknopd could be inserted at
688      the same position as rules from an existing ipfw policy. While ipfw
689      allows duplicate rules, whenever such a rule is deleted by its rule
690      number all matching rules are deleted.
691
692fwknop-1.8 (06/03/2007):
693    - Added support for ipfw firewalls (found on *BSD systems).  The
694      IPTables::Parse and IPTables::ChainMgr modules are not installed on
695      such systems.
696    - Added gpg-agent support for both the fwknop client and fwknopd SPA
697      server.
698    - Updated client-only installation mode to restrict perl module
699      installation to those module that are actually required by the fwknop
700      client. This results in clean installs of the fwknop client on Windows
701      systems running Cygwin.
702    - Added --Defaults to install.pl so that fwknop can be installed without
703      prompting the user to answer any questions. This is to make it easier
704      to install fwknop on the Source Mage Linux distro.
705    - Consolidated daemon config files into the fwknop.conf file (except for
706      the access.conf file). This simplifies the configuration of fwknop.
707    - Added recursive variable resolution in the parsing routines for the
708      fwknop.conf file. This allows variable values to contain embedded
709      variables.
710    - Added init script for FreeBSD systems.
711    - Added --BSD-install command line argument to install.pl. This is not
712      normally necessary since the installer should detect installations on
713      *BSD systems, but this option can force this behavior.
714    - Updated knopmd and knopwatchd to use safe_malloc() instead of malloc().
715    - Bugfix to never time out rules from SOURCE blocks with FW_ACCESS_TIMEOUT
716      set to zero
717
718fwknop-1.0.1 (01/09/2007):
719    - Updated fwknopd to allow the GPG_REMOTE_ID variable to have the value
720      "ANY" to allow a SOURCE block to match on arbitrary remote gpg signing
721      keys (Leland Weathers).
722    - Bugfix to allow OPEN_PORTS to be omitted in access.conf in favor of
723      having only PERMIT_CLIENT_PORTS enabled (reported by Raul Siles).
724    - Added the cd_rpmbuilder script to make it easy to build RPM's out of
725      CipherDyne projects by automatically downloading the project .tar.gz and
726      .spec files from http://www.cipherdyne.org/.
727
728fwknop-1.0 (11/05/2006):
729    - Bugfix for OpenSSH-4.3p2 patch to make sure to include the spa.h header
730      file.
731    - Bugfix for access hashes accumluating when multiple ports are requested
732      to be opened by a client.
733    - Better validation of IPT_AUTO_CHAIN variable so that the from_chain
734      cannot be identical to the to_chain.
735    - Bugfix in RPM to install List::MoreUtils.
736    - Bugfix so that the MD5 sum for an SPA packet is not examined for each
737      SOURCE block.  This fixes a problem where an SPA packet could appear to
738      be replayed if multiple SOURCE blocks are defined in
739      /etc/fwknop/access.conf.
740    - Refactored main SPA access loop so that it is clearer how and when SPA
741      clients are granted access.
742    - Better handling of GnuPG key identifier strings (they can now contain
743      spaces, and syslog messages wrap the identifiers with double quotes).
744    - Added source IP address to command string in the SPA packet so that
745      the REQUIRE_SOURCE_ADDRESS criteria can be applied by the fwknopd
746      server.
747    - Added --Show-last-cmd and --Show-host-cmd args to fwknop so that the
748      last fwknop command and the last fwknop host commands can be viewed.
749    - Added the svn revision number to --Version and --help output.
750
751fwknop-0.9.9 (10/15/2006):
752    - Added REQUIRE_SOURCE_ADDRESS (disabled by default) to force fwknop
753      clients to know their source IP address (i.e. -s cannot be used).  So,
754      either fwknop clients have to use -R to resolve their externally
755      routable address, or they must just know what it is.
756    - Updated to Net-RawIP-0.21_03 for compatibility with gcc-4.x compilers.
757    - Added List-MoreUtils-0.22 which is a dependency of the new Net::RawIP
758      module.
759    - Bugfix to restore "start" functionality in Gentoo init script.
760    - Bugfix to use the IPT_OUTPUT_FILE and IPT_ERROR_FILE configuration
761      variables in fwknopd.
762    - Added KNOPTM_IPT_OUTPUT_FILE and KNOPTM_IPT_ERROR_FILE variables
763      specifically for the knoptm daemon so that it can use IPTables::ChainMgr
764      completely independently of fwknopd (this removes a potential race
765      condition between fwknopd and knoptm).
766
767fwknop-0.9.8 (09/17/2006):
768    - Added the ability to ignore old SPA packets through use of the
769      client-side time stamp.  This means that an attacker cannot intercept an
770      SPA packet, prevent it from being forwarded to its intended destination,
771      and then put the packet on the wire at some time outside of the allowed
772      time window.  There are two new configuration options in fwknop.conf
773      "ENABLE_SPA_PACKET_AGING" and "MAX_SPA_PACKET_AGE" that control the
774      length of the acceptable time window (2 minutes by default).  This
775      requires some level of synchronization between the fwknop client and the
776      fwknopd server, but this is not onerous through the use of NTP.  This
777      feature is enabled by default, and the idea for it was contributed by
778      Sebastien J.
779    - Completely re-worked IPTables::ChainMgr to support the return of
780      iptables error messages that are collected via stderr.  This is critical
781      to fixing any bugs where fwknopd could die as a result of a poorly
782      crafted iptables command.
783      but no information would be returned to the user.
784    - Added the ability to specify the position for both the jump rule into
785      the fwknopd chains as well as the position for new rules within the
786      fwknopd chains via the -I argument to iptables.  This fixes a bug where
787      the user was given the impression that the IPTABLES_AUTO_RULENUM would
788      accomplish this (IPTABLES_AUTO_RULENUM has been removed).
789    - Updated fwknopd to require < 1500 byte payload length before attempting
790      to decrypt.  Also, GnuPG decrypts are not attempted unless the encrypted
791      payload is at least 400 bytes long (this is conservative since even
792      encrypting a single byte with a 1024-bit key will result in about 340
793      bytes of encrypted data).
794    - Added the --gpg-default-key option to have fwknop use the default GnuPG
795      key that is defined in the ~/.gnupg/options file.
796    - Added the --URL command line argument so that a URL other than the
797      default http://www.whatismyip.com/ can be provided by the user for
798      external IP resolution (suggested by Sebastien J.).
799    - Updated to be more rigorous with md5 sums; we now require that the
800      md5_base64() function actually returns a non-null result.
801    - Bugfix to make sure that only the users associated with the a specific
802      REQUIRE_USERNAME value (in a specific SOURCE block in access.conf) are
803      granted the appropriate access even if a valid encrypted packet is
804      constructed from a different user name (by an fwknop client).
805    - Populated the _debug option in the IPTables::ChainMgr module, and also
806      added a _verbose option so that the specific iptables commands can
807      actually be seen as IPTables::ChainMgr functions are called.
808    - Added code to install.pl to update command paths in fwknop.conf and
809      knopwatchd.conf if any of the paths are broken (i.e. the local system
810      does not conform to the default paths).  By default this only happens if
811      the user does not want old configs to be merged, but to override this
812      use the new --path-update command line argument to install.pl.
813    - Added the --Skip-mod-install command line argument to install.pl to
814      allow all perl module installs to be skipped.
815    - Added the --force-mod-regex command line argument to install.pl to allow
816      a regex match on perl module names to force matching modules to be
817      installed.
818    - Minor bugfix to generate better (i.e. closer to those that Firefox
819      generates) http requests to http://www.whatismyip.com/).
820    - Adapted Mate Wierdl's RPM patch from the psad project so that the fwknop
821      RPM builds on x86_64 systems.
822    - Removed iptables requirement in RPM spec file because fwknop may be
823      installed on a system just to run the fwknop client.
824    - Updated to email username mismatch errors.
825
826fwknop-0.9.7 (08/04/2006):
827    - Added fwknop_serv to function as minimal TCP server over which SPA
828      packets can be sent.  This allows SPA to be compatible with the Tor
829      network, which requires that a virtual circuit is established before
830      traffic can be sent.
831    - Updated to Crypt::CBC-2.18 after a vulnerability was discovered in
832      previous versions of Crypt::CBC that caused weak ciphertext to be
833      generated for algorithms that have blocksizes greater than 8 bytes (such
834      as Rijndael used by fwknop).  Manually specifying initialization vectors
835      is not necessary now.
836    - Updated SSH patch to support OpenSSH-4.3p2.
837    - Bugfix to make sure to create /var/* directories if they don't exist
838      (such as when /var is a tmpfs).
839    - Bugfix (Dwayne Rightler) to restore -w IP lookup functionality after
840      format change on data returned by whatismyip.com.
841    - Bugfix to wrap SPA Rijndael decryption with eval{} so that fwknopd does
842      not die if there are problems trying to decrypt data.  This is necessary
843      because of the security vulnerability fix in Crypt::CBC that creates
844      some incompatibilities in different versions of Crypt::CBC.
845    - Added "--L-host" command line argument so that the arguments used for
846      multiple hosts are preserved and can be recalled.
847    - Changed default user-agent setting for whatismyip.com lookups to
848      Firefox/1.0.5.4; there is no need to gratuitously advertise fwknop
849      traffic.
850    - Updated GunPG HOWTO to provide a step-by-step guide to getting fwknop
851      Single Packet Authorization working with GnuPG.
852    - Updated to derive perl module versions from the VERSION files within
853      each of the perl module source directories.
854
855fwknop-0.9.6 (01/13/2006):
856    - Added GPG based authentication capability for SPA packets.  This new
857      mode can be configured to require that a GPG message be signed with a
858      particular key or set of keys.
859    - In GPG mode, the fwknop client now prints GPG errors to stdout if not
860      running with --gpg-no-batch-mode.
861    - Added the ability to require that the client know the UNIX crypt()
862      password associated with a username on the server side.  This
863      functionality is enabled on the fwknop client with the "--Server-auth
864      crypt" command line argument, and the REQUIRE_AUTH_METHOD variable in
865      /etc/fwknop/access.conf on the fwknopd server.
866    - Added patch against OpenSSH-4.2p1 to integrate SPA mode.  This patch
867      adds a "-K <fwknop cmd line>" argument to the SSH client so that
868      fwknop can be executed directly before an SSH connection is made.
869    - Separated server and client portions of fwknop into "fwknopd" and
870      fwknop repectively.  This will allow better portability to be
871      developed since the client and server pieces can be developed more
872      independently.  NOTE: With so many changes, it is probably a good idea
873      to not preserve old fwknop configs via install.pl.
874    - Renamed all relevant fwknopd command and file paths to support new
875      fwknopd server component.
876    - Added --quiet mode (this is used by default in the OpenSSH patch).
877    - Removed legacy port knocking installation in install.pl (fwknopfifo,
878      and fwdata file) unless the data collection mode is set to syslog or
879      syslog-ng for legacy iptables log messages.
880    - Added inode checking for PCAP_PKT_FILE. This helps to ensure that log
881      rotation schemes don't interfere with reading packets out of the file
882      since this check is size independent.
883    - Bugfix for Makefile debug mode.
884    - Added compilation check for perl programs in install.pl before
885      installation into the filesystem.
886    - Bugfix for knopwatchd to make sure it can actually restart all running
887      daemons properly.
888    - Added --force-mod command line argument to install.pl to allow the user
889      to force all perl modules to be be installed regardless of whether a
890      module exists in the system perl lib tree.
891    - Added --no-save-args to fwknop so that existing .fwknop.run file can
892      be preserved (helps to testing new features of fwknop client).
893    - Removed useless --encrypt command line argument (only the old shared
894      port knock sequences are not encrypted).
895
896fwknop-0.9.5 (10/02/2005):
897    - Added the ability to resolve the external IP associated with the
898      local network via http://www.whatismyip.com.  This is a more secure
899      method of accomplishing what the -s option performs.  The new
900      command line option is --whatismyip (or just -w).
901    - Updated fwknop to communicate with knoptm via a UNIX domain socket
902      instead of the previous file-based communication.
903    - Updated to flush the fwknop iptables chains at start time.
904    - Bugfix for removing the wrong hash key in the knoptm IP cache.
905
906fwknop-0.9.4 (09/17/2005):
907    - Bugfix for knoptm timing out new entries based on old time values
908      (this caused new rules to timed out too quickly).
909    - Added support for multiple users in REQUIRE_USERNAME keyword in
910      access.conf.
911    - Added the ability to display raw encrypted packet data in client
912      mode with --verbose.
913    - Created fwknop RPM for RPM-based Linux distributions.
914    - Bugfix for inappropriate redirects in command mode where the command
915      already contained a redirect.
916
917fwknop-0.9.3 (08/27/2005):
918    - Added an on-disk cache of md5 sums so that the md5 sum check can
919      survive restarts of fwknop.
920    - Updated install.pl to be more friendly to Mac OS X (Blair Zajac).
921    - Updated to allow access.conf variables to have values instead of just
922      being defined.
923    - Started on additional server authentication mode code (re-worked MD5
924      sum calculation to allow packet format to be extended by taking into
925      account the fwknop version number).
926
927fwknop-0.9.2 (08/06/2005):
928    - Added FILE_PCAP data collection method when running in server mode.
929      This is a more general way of getting packets than the ULOG_PCAP
930      mode since then a normal ethernet sniffer can be used to build the
931      file.
932    - Added the ability to re-open a pcap file if its size shrinks (i.e.
933      it gets rotated out or something).
934    - Bugfix for multiple rules with the same timestamp not being timed out
935      by knoptm.
936    - Integrated spoofing capability directly within fwknop (instead of
937      using the knopspoof command) through the use of "require Net::RawIP".
938    - Better multi-protocol support in server mode.  Tcp and icmp packets
939      are properly decoded now.
940
941fwknop-0.9.1 (07/29/2005):
942    - Added the ability to specify multiple ports/protocols to access on a
943      server with the --Access command line option.
944    - Added the ability to spoof SPA packets over icmp and tcp protocols.
945    - Added the ability to restrict access at the server to only those
946      ports defined in the OPEN_PORTS keyword.  This option is controled by
947      a new keyword "PERMIT_CLIENT_PORTS".
948    - Bugfix for MD5 sum not being properly calculated over decrypted data.
949      This allowed old packets that contained additional garbage data to
950      be replayed against an fwknop server.
951    - Updated to fall back to getpwuid() if getlogin() fails (Blair Zajac).
952    - Added --ipt-list to list all current rules in the FWKNOP iptables
953      chains.
954    - Added --ipt-flush to flush all current rules in the FWKNOP iptables
955      chains.
956    - Bugfix for the installer dying if ~/lib already exists (Blair Zajac).
957    - Updated to delay the loading of server perl modules (Net::Pcap, etc.)
958      only if we are running in server mode.
959    - Bugfix for module directory paths in install.pl.
960
961fwknop-0.9.0 (05/29/2005):
962    - Added new authorization mode that uses Net::Pcap to read packets
963      out of a file that is written to by the ulogd pcap writer (also
964      stubbed in code to sniff packets directly off the wire).  This
965      authorization mode only requires single packets, and has many
966      characteristics that are better than simple port knocking, including
967      being non-replayable, and much more data can be sent.  This mode
968      is now the default for both the server and the client.
969    - Made the execution of knopmd optional depending on whether AUTH_MODE
970      is a pcap mode (e.g. ULOG_PCAP or PCAP).
971    - Added --Spoof-src argument so that encrypted packets can be spoofed
972      via /usr/sbin/knopspoof.
973    - Added /usr/sbin/knoptm so that firewall rules can be timed-out when
974      the server is running in PCAP mode even if new packets don't appear
975      on the wire.
976    - Updated fwknop man page to talk about the new pcap-based
977      authorization mode.
978
979fwknop-0.5.0 (03/19/2005):
980    - Added ALERTING_METHOD to allow syslog and/or email reporting to be
981      disabled (there is a dedicated file /etc/fwknop/alert.conf that
982      governs this behavior, and both fwknop and knopwatchd reference this
983      file).
984    - Bugfix for distinguishing OPT field associated with --log-tcp-options
985      vs. --log-ip-options.
986    - Added install_perl_module() install.pl from psad to provide a
987      consistent installation interface.
988    - Applied patch to only install perl modules that are not already
989      installed (Blair Zajac).
990    - Added --last-cmd option to allow fwknop to be executed with command
991      line arguments from the previous execution (they are saved in
992      ~/.fwknop.run).
993    - Added --Home-dir option to allow the home directory to be manually
994      specified.
995    - Re-worked get_homedir() to be more friendly to systems that do not
996      necessarily have /etc/passwd (e.g. OS X).
997    - Added configuration preservation and querying for which syslog
998      daemon is running to install.pl.  These features were adapted from the
999      psad installer (http://www.cipherdyne.org/psad).
1000    - Added IPTables::ChainMgr.  Fwknop uses this module to maintain
1001      dedicated chains to which access rules are added.
1002    - Added IPTables::Parse, which is used internally by IPTables::ChainMgr.
1003    - Added __WARN__ and __DIE__ handlers so errors can easily be collected.
1004
1005fwknop-0.4.2 (09/27/2004):
1006    - Added init script for Fedora systems.
1007    - Added --Kill, --Restart, and --Status modes (this fixes the generic
1008      init script which depends on these arguments).
1009
1010fwknop-0.4.1 (09/14/2004):
1011    - Bugfix for legacy posf code in fwknop and variable in fwknop.conf.
1012
1013fwknop-0.4 (09/10/2004):
1014    - Added ability to specify multiple IPs/networks in a single SOURCE
1015      definition.
1016    - Better examples section in the fwknop manpage.
1017    - Bugfix to make sure EMAIL_ADDRESSES variable does not contain commas
1018      (any commas are translated into spaces).
1019    - Added LICENSE file.
1020
1021fwknop-0.3 (08/21/2004):
1022    - Bugfix for tracking knock sequences by source IP address.
1023    - Bugfix for knock sequence timeouts.
1024    - Removed old passive OS fingerprinting code in favor of the p0f
1025      strategy.
1026    - Added support for taking encryption keys from a file specified on
1027      the command line.
1028    - Update to send "sequence decrypt failed" email message only if
1029      decryption failed for all encrypt sequence SOURCE blocks.
1030
1031fwknop-0.2 (07/31/2004):
1032    - Implemented remote username checking in encrypted sequences.
1033    - Added support for icmp in knock sequences.
1034    - Added protocol rotation option for encrypted sequences.
1035    - Added code for multiple SOURCE access blocks with the same source
1036      net/IP.
1037    - Added KNOCK_LIMIT access control variable to limit the number of
1038      times a particular knock sequence is honored.
1039    - Added email alerts.
1040
1041fwknop-0.1 (07/08/2004):
1042    - Initial release.
Note: See TracBrowser for help on using the browser.