root/fwknop/tags/fwknop-1.8.4-pre2/ChangeLog

Revision 821, 25.5 kB (checked in by mbr, 1 year ago)

Added stop_daemon() to knoptm so that fwknopd can be stopped if voluntary
exits are enabled.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1 fwknop-1.8.4 (11//2007):
2     - Added the ability to force the fwknopd and knoptm daemons to restart
3       themselves (via knopwatchd) after a configurable timeout (see the
4       ENABLE_VOLUNTARY_EXITS and EXIT_INTERVAL variables in the
5       /etc/fwknop/fwknop.conf file). This feature is for those that want
6       fwknopd to go through its initialization routine periodically just in
7       case there is a logic (or other) bug that might result in fwknopd not
8       accepting a valid SPA packet. NOTE: This feature is disabled by default,
9       and is not normally needed since fwknopd is quite stable in most
10       deployments.
11     - Minor bugfix to have knopwatchd generate syslog messages whenever an
12       fwknop daemon needs to be restarted.
13     - Added --interface command line argument to install.pl to allow the
14       sniffing interface to be specified from the command line. Also updated
15       install.pl to enforce a 10-try maximum for attempting to accept a valid
16       interface name from the command line (LANG env issues can exist
17       sometimes).
18     - Major update to start working on forwarding access through an iptables
19       policy in SPA mode.
20     - Updated SPA packet format for server_auth and forward_info elements;
21       the internal MD5 sum is now always the last field in an SPA packet. This
22       makes extensions of the SPA protocol much easier, and the generation of
23       SPA packets more elegant. Also, SPA packet validation has been improved
24       to ensure that fields that are supposed to be digits really only contain
25       integer data.
26     - Added FORWARD_ACCESS variable to the access.conf file, and added
27       ENABLE_IPT_FORWARDING to the fwknop.conf file.
28     - Replaced the IPT_AUTO_CHAIN1 variable with IPT_INPUT_ACCESS and
29       IPT_FORWARD_ACCESS in fwknop.conf.
30     - Added --Forward-access argument to the fwknop client.
31
32 fwknop-1.8.3 (11/17/2007):
33     - Updated external IP resolution to point to http://www.whatismyip.org,
34       and added http://www.cipherdyne.org/cgi/clientip.cgi as a backup site
35       for fwknop IP resolution.
36     - Added storage of source IP along with SPA MD5 sum. This allows the user
37       to infer which networks are more hostile if an SPA packet is replayed.
38     - Added SPA packet hex dumps in 'fwknopd --debug' mode so that the
39       integration of third-party encryption algorithms is easier to
40       troubleshoot. Sean Greven contributed a patch for this.
41     - Reinstated the legacy port knocking mode. It appears that all encrypted
42       output from the updated Crypt::Rijndael module is at least 32 bytes
43       long, so port knocking sequences are now 32 bytes long as well (they
44       were previously 16 bytes long in old versions of fwknop).
45     - Bugfix to ensure the key length is at least 8 chars in --get-key mode.
46     - Minor update to remove init message on OS X install.
47     - Updated install.pl to set the LANG environmental variable to
48       "en_US.UTF-8". This should fix the problem where the output of ifconfig
49       was not interpreted correctly if the locale LANG setting is not English.
50     - Implemented verbose email alerting by setting the ALERTING_METHODS
51       variable to "verbose". This instructs fwknopd to generate a new email
52       message for each message that it normally logs vis syslog (this feature
53       is not the default, and must be manually enabled).
54
55 fwknop-1.8.2 (09/15/2007):
56     - Added fwknopd server support for Mac OS X. The Darwin uname return
57       string is detected and this enables Darwin-specific installation code in
58       install.pl.
59     - Updated to not print sensitive key/password information in --debug mode
60       with fwknopd.
61     - Bugfix for install.pl on Windows 2003 Server running under Cygwin where
62       'uname -o' output is reported 'Gygwin' for some reason.
63     - Added --Cygwin-install command line argument to install.pl to force
64       client-only fwknop install on Cygwin systems.
65     - Added --OS-type command line argument to install.pl to allow the user to
66       force the installation type.
67     - Updated to version 1.04 of Crypt::Rijndael. This fixes incompatibilities
68       between SPA packets between 64-bit and 32-bit platorms.
69     - Bugfix to enforce a maximum of 20 tries to read a password from stdin.
70     - Applied TCP options parsing fix from psad for invalid zero or one length
71       fields that break TLV encoding (this is for fwknopd, and only applies to
72       the legacy port knocking mode).
73     - Added code to fwknopd to check to see if there are any state tracking
74       rules in place within the local iptables or ipfw policy.
75     - Made syslog identity, facility, and priority configurable (applied code
76       from the psad project).
77     - Implemented --fw-list for ipfw firewalls.
78     - Bugfix for knoptm removing ipfw rules too quickly after not timing out
79       previously instantiated rules properly.
80     - Implemented smarter cache removal strategy in knoptm so that rules that
81       are manually removed from the running iptables or ipfw policy are also
82       removed from the cache.
83     - Added /var/log/fwknop/errs/fwknopd.{warn,die} tracking to the fwknopd
84       daemon for the PCAP modes of collecting packet data. Added
85       knoptm{warn,die} files for knoptm as well.
86     - Bugfix to import the GnuPG::Interface module in --get-key mode.
87     - Bugfix to send source IP as a part of the command message in command
88       mode so that REQUIRE_SOURCE_ADDRESS controls can be applied.
89     - Added --Test-mode to fwknop client so that SPA packets can be built but
90       never sent over the network.
91
92 fwknop-1.8.1 (06/06/2007):
93     - Bugfix to ensure that the "keep-state" directive is added to firewall
94       rules on systems running the ipfw firewall.
95     - Added the --Save-packet and --Save-packet-file command line arguments
96       to the fwknop client. These options instruct fwknop to save a copy of
97       an encrypted SPA packet before it is sent across the network.
98     - Bugfix to find minimal unused ipfw rule number for ipfw firewalls. This
99       fixes an issue where ipfw rules added by fwknopd could be inserted at
100       the same position as rules from an existing ipfw policy. While ipfw
101       allows duplicate rules, whenever such a rule is deleted by its rule
102       number all matching rules are deleted.
103
104 fwknop-1.8 (06/03/2007):
105     - Added support for ipfw firewalls (found on *BSD systems).  The
106       IPTables::Parse and IPTables::ChainMgr modules are not installed on
107       such systems.
108     - Added gpg-agent support for both the fwknop client and fwknopd SPA
109       server.
110     - Updated client-only installation mode to restrict perl module
111       installation to those module that are actually required by the fwknop
112       client. This results in clean installs of the fwknop client on Windows
113       systems running Cygwin.
114     - Added --Defaults to install.pl so that fwknop can be installed without
115       prompting the user to answer any questions. This is to make it easier
116       to install fwknop on the Source Mage Linux distro.
117     - Consolidated daemon config files into the fwknop.conf file (except for
118       the access.conf file). This simplifies the configuration of fwknop.
119     - Added recursive variable resolution in the parsing routines for the
120       fwknop.conf file. This allows variable values to contain embedded
121       variables.
122     - Added init script for FreeBSD systems.
123     - Added --BSD-install command line argument to install.pl. This is not
124       normally necessary since the installer should detect installations on
125       *BSD systems, but this option can force this behavior.
126     - Updated knopmd and knopwatchd to use safe_malloc() instead of malloc().
127     - Bugfix to never time out rules from SOURCE blocks with FW_ACCESS_TIMEOUT
128       set to zero
129
130 fwknop-1.0.1 (01/09/2007):
131     - Updated fwknopd to allow the GPG_REMOTE_ID variable to have the value
132       "ANY" to allow a SOURCE block to match on arbitrary remote gpg signing
133       keys (Leland Weathers).
134     - Bugfix to allow OPEN_PORTS to be omitted in access.conf in favor of
135       having only PERMIT_CLIENT_PORTS enabled (reported by Raul Siles).
136     - Added the cd_rpmbuilder script to make it easy to build RPM's out of
137       CipherDyne projects by automatically downloading the project .tar.gz and
138       .spec files from http://www.cipherdyne.org/.
139
140 fwknop-1.0 (11/05/2006):
141     - Bugfix for OpenSSH-4.3p2 patch to make sure to include the spa.h header
142       file.
143     - Bugfix for access hashes accumluating when multiple ports are requested
144       to be opened by a client.
145     - Better validation of IPT_AUTO_CHAIN variable so that the from_chain
146       cannot be identical to the to_chain.
147     - Bugfix in RPM to install List::MoreUtils.
148     - Bugfix so that the MD5 sum for an SPA packet is not examined for each
149       SOURCE block.  This fixes a problem where an SPA packet could appear to
150       be replayed if multiple SOURCE blocks are defined in
151       /etc/fwknop/access.conf.
152     - Refactored main SPA access loop so that it is clearer how and when SPA
153       clients are granted access.
154     - Better handling of GnuPG key identifier strings (they can now contain
155       spaces, and syslog messages wrap the identifiers with double quotes).
156     - Added source IP address to command string in the SPA packet so that
157       the REQUIRE_SOURCE_ADDRESS criteria can be applied by the fwknopd
158       server.
159     - Added --Show-last-cmd and --Show-host-cmd args to fwknop so that the
160       last fwknop command and the last fwknop host commands can be viewed.
161     - Added the svn revision number to --Version and --help output.
162
163 fwknop-0.9.9 (10/15/2006):
164     - Added REQUIRE_SOURCE_ADDRESS (disabled by default) to force fwknop
165       clients to know their source IP address (i.e. -s cannot be used).  So,
166       either fwknop clients have to use -R to resolve their externally
167       routable address, or they must just know what it is.
168     - Updated to Net-RawIP-0.21_03 for compatibility with gcc-4.x compilers.
169     - Added List-MoreUtils-0.22 which is a dependency of the new Net::RawIP
170       module.
171     - Bugfix to restore "start" functionality in Gentoo init script.
172     - Bugfix to use the IPT_OUTPUT_FILE and IPT_ERROR_FILE configuration
173       variables in fwknopd.
174     - Added KNOPTM_IPT_OUTPUT_FILE and KNOPTM_IPT_ERROR_FILE variables
175       specifically for the knoptm daemon so that it can use IPTables::ChainMgr
176       completely independently of fwknopd (this removes a potential race
177       condition between fwknopd and knoptm).
178
179 fwknop-0.9.8 (09/17/2006):
180     - Added the ability to ignore old SPA packets through use of the
181       client-side time stamp.  This means that an attacker cannot intercept an
182       SPA packet, prevent it from being forwarded to its intended destination,
183       and then put the packet on the wire at some time outside of the allowed
184       time window.  There are two new configuration options in fwknop.conf
185       "ENABLE_SPA_PACKET_AGING" and "MAX_SPA_PACKET_AGE" that control the
186       length of the acceptable time window (2 minutes by default).  This
187       requires some level of synchronization between the fwknop client and the
188       fwknopd server, but this is not onerous through the use of NTP.  This
189       feature is enabled by default, and the idea for it was contributed by
190       Sebastien J.
191     - Completely re-worked IPTables::ChainMgr to support the return of
192       iptables error messages that are collected via stderr.  This is critical
193       to fixing any bugs where fwknopd could die as a result of a poorly
194       crafted iptables command.
195       but no information would be returned to the user.
196     - Added the ability to specify the position for both the jump rule into
197       the fwknopd chains as well as the position for new rules within the
198       fwknopd chains via the -I argument to iptables.  This fixes a bug where
199       the user was given the impression that the IPTABLES_AUTO_RULENUM would
200       accomplish this (IPTABLES_AUTO_RULENUM has been removed).
201     - Updated fwknopd to require < 1500 byte payload length before attempting
202       to decrypt.  Also, GnuPG decrypts are not attempted unless the encrypted
203       payload is at least 400 bytes long (this is conservative since even
204       encrypting a single byte with a 1024-bit key will result in about 340
205       bytes of encrypted data).
206     - Added the --gpg-default-key option to have fwknop use the default GnuPG
207       key that is defined in the ~/.gnupg/options file.
208     - Added the --URL command line argument so that a URL other than the
209       default http://www.whatismyip.com/ can be provided by the user for
210       external IP resolution (suggested by Sebastien J.).
211     - Updated to be more rigorous with md5 sums; we now require that the
212       md5_base64() function actually returns a non-null result.
213     - Bugfix to make sure that only the users associated with the a specific
214       REQUIRE_USERNAME value (in a specific SOURCE block in access.conf) are
215       granted the appropriate access even if a valid encrypted packet is
216       constructed from a different user name (by an fwknop client).
217     - Populated the _debug option in the IPTables::ChainMgr module, and also
218       added a _verbose option so that the specific iptables commands can
219       actually be seen as IPTables::ChainMgr functions are called.
220     - Added code to install.pl to update command paths in fwknop.conf and
221       knopwatchd.conf if any of the paths are broken (i.e. the local system
222       does not conform to the default paths).  By default this only happens if
223       the user does not want old configs to be merged, but to override this
224       use the new --path-update command line argument to install.pl.
225     - Added the --Skip-mod-install command line argument to install.pl to
226       allow all perl module installs to be skipped.
227     - Added the --force-mod-regex command line argument to install.pl to allow
228       a regex match on perl module names to force matching modules to be
229       installed.
230     - Minor bugfix to generate better (i.e. closer to those that Firefox
231       generates) http requests to http://www.whatismyip.com/).
232     - Adapted Mate Wierdl's RPM patch from the psad project so that the fwknop
233       RPM builds on x86_64 systems.
234     - Removed iptables requirement in RPM spec file because fwknop may be
235       installed on a system just to run the fwknop client.
236     - Updated to email username mismatch errors.
237
238 fwknop-0.9.7 (08/04/2006):
239     - Added fwknop_serv to function as minimal TCP server over which SPA
240       packets can be sent.  This allows SPA to be compatible with the Tor
241       network, which requires that a virtual circuit is established before
242       traffic can be sent.
243     - Updated to Crypt::CBC-2.18 after a vulnerability was discovered in
244       previous versions of Crypt::CBC that caused weak ciphertext to be
245       generated for algorithms that have blocksizes greater than 8 bytes (such
246       as Rijndael used by fwknop).  Manually specifying initialization vectors
247       is not necessary now.
248     - Updated SSH patch to support OpenSSH-4.3p2.
249     - Bugfix to make sure to create /var/* directories if they don't exist
250       (such as when /var is a tmpfs).
251     - Bugfix (Dwayne Rightler) to restore -w IP lookup functionality after
252       format change on data returned by whatismyip.com.
253     - Bugfix to wrap SPA Rijndael decryption with eval{} so that fwknopd does
254       not die if there are problems trying to decrypt data.  This is necessary
255       because of the security vulnerability fix in Crypt::CBC that creates
256       some incompatibilities in different versions of Crypt::CBC.
257     - Added "--L-host" command line argument so that the arguments used for
258       multiple hosts are preserved and can be recalled.
259     - Changed default user-agent setting for whatismyip.com lookups to
260       Firefox/1.0.5.4; there is no need to gratuitously advertise fwknop
261       traffic.
262     - Updated GunPG HOWTO to provide a step-by-step guide to getting fwknop
263       Single Packet Authorization working with GnuPG.
264     - Updated to derive perl module versions from the VERSION files within
265       each of the perl module source directories.
266
267 fwknop-0.9.6 (01/13/2006):
268     - Added GPG based authentication capability for SPA packets.  This new
269       mode can be configured to require that a GPG message be signed with a
270       particular key or set of keys.
271     - In GPG mode, the fwknop client now prints GPG errors to stdout if not
272       running with --gpg-no-batch-mode.
273     - Added the ability to require that the client know the UNIX crypt()
274       password associated with a username on the server side.  This
275       functionality is enabled on the fwknop client with the "--Server-auth
276       crypt" command line argument, and the REQUIRE_AUTH_METHOD variable in
277       /etc/fwknop/access.conf on the fwknopd server.
278     - Added patch against OpenSSH-4.2p1 to integrate SPA mode.  This patch
279       adds a "-K <fwknop cmd line>" argument to the SSH client so that
280       fwknop can be executed directly before an SSH connection is made.
281     - Separated server and client portions of fwknop into "fwknopd" and
282       fwknop repectively.  This will allow better portability to be
283       developed since the client and server pieces can be developed more
284       independently.  NOTE: With so many changes, it is probably a good idea
285       to not preserve old fwknop configs via install.pl.
286     - Renamed all relevant fwknopd command and file paths to support new
287       fwknopd server component.
288     - Added --quiet mode (this is used by default in the OpenSSH patch).
289     - Removed legacy port knocking installation in install.pl (fwknopfifo,
290       and fwdata file) unless the data collection mode is set to syslog or
291       syslog-ng for legacy iptables log messages.
292     - Added inode checking for PCAP_PKT_FILE. This helps to ensure that log
293       rotation schemes don't interfere with reading packets out of the file
294       since this check is size independent.
295     - Bugfix for Makefile debug mode.
296     - Added compilation check for perl programs in install.pl before
297       installation into the filesystem.
298     - Bugfix for knopwatchd to make sure it can actually restart all running
299       daemons properly.
300     - Added --force-mod command line argument to install.pl to allow the user
301       to force all perl modules to be be installed regardless of whether a
302       module exists in the system perl lib tree.
303     - Added --no-save-args to fwknop so that existing .fwknop.run file can
304       be preserved (helps to testing new features of fwknop client).
305     - Removed useless --encrypt command line argument (only the old shared
306       port knock sequences are not encrypted).
307
308 fwknop-0.9.5 (10/02/2005):
309     - Added the ability to resolve the external IP associated with the
310       local network via http://www.whatismyip.com.  This is a more secure
311       method of accomplishing what the -s option performs.  The new
312       command line option is --whatismyip (or just -w).
313     - Updated fwknop to communicate with knoptm via a UNIX domain socket
314       instead of the previous file-based communication.
315     - Updated to flush the fwknop iptables chains at start time.
316     - Bugfix for removing the wrong hash key in the knoptm IP cache.
317
318 fwknop-0.9.4 (09/17/2005):
319     - Bugfix for knoptm timing out new entries based on old time values
320       (this caused new rules to timed out too quickly).
321     - Added support for multiple users in REQUIRE_USERNAME keyword in
322       access.conf.
323     - Added the ability to display raw encrypted packet data in client
324       mode with --verbose.
325     - Created fwknop RPM for RPM-based Linux distributions.
326     - Bugfix for inappropriate redirects in command mode where the command
327       already contained a redirect.
328
329 fwknop-0.9.3 (08/27/2005):
330     - Added an on-disk cache of md5 sums so that the md5 sum check can
331       survive restarts of fwknop.
332     - Updated install.pl to be more friendly to Mac OS X (Blair Zajac).
333     - Updated to allow access.conf variables to have values instead of just
334       being defined.
335     - Started on additional server authentication mode code (re-worked MD5
336       sum calculation to allow packet format to be extended by taking into
337       account the fwknop version number).
338
339 fwknop-0.9.2 (08/06/2005):
340     - Added FILE_PCAP data collection method when running in server mode.
341       This is a more general way of getting packets than the ULOG_PCAP
342       mode since then a normal ethernet sniffer can be used to build the
343       file.
344     - Added the ability to re-open a pcap file if its size shrinks (i.e.
345       it gets rotated out or something).
346     - Bugfix for multiple rules with the same timestamp not being timed out
347       by knoptm.
348     - Integrated spoofing capability directly within fwknop (instead of
349       using the knopspoof command) through the use of "require Net::RawIP".
350     - Better multi-protocol support in server mode.  Tcp and icmp packets
351       are properly decoded now.
352
353 fwknop-0.9.1 (07/29/2005):
354     - Added the ability to specify multiple ports/protocols to access on a
355       server with the --Access command line option.
356     - Added the ability to spoof SPA packets over icmp and tcp protocols.
357     - Added the ability to restrict access at the server to only those
358       ports defined in the OPEN_PORTS keyword.  This option is controled by
359       a new keyword "PERMIT_CLIENT_PORTS".
360     - Bugfix for MD5 sum not being properly calculated over decrypted data.
361       This allowed old packets that contained additional garbage data to
362       be replayed against an fwknop server.
363     - Updated to fall back to getpwuid() if getlogin() fails (Blair Zajac).
364     - Added --ipt-list to list all current rules in the FWKNOP iptables
365       chains.
366     - Added --ipt-flush to flush all current rules in the FWKNOP iptables
367       chains.
368     - Bugfix for the installer dying if ~/lib already exists (Blair Zajac).
369     - Updated to delay the loading of server perl modules (Net::Pcap, etc.)
370       only if we are running in server mode.
371     - Bugfix for module directory paths in install.pl.
372
373 fwknop-0.9.0 (05/29/2005):
374     - Added new authorization mode that uses Net::Pcap to read packets
375       out of a file that is written to by the ulogd pcap writer (also
376       stubbed in code to sniff packets directly off the wire).  This
377       authorization mode only requires single packets, and has many
378       characteristics that are better than simple port knocking, including
379       being non-replayable, and much more data can be sent.  This mode
380       is now the default for both the server and the client.
381     - Made the execution of knopmd optional depending on whether AUTH_MODE
382       is a pcap mode (e.g. ULOG_PCAP or PCAP).
383     - Added --Spoof-src argument so that encrypted packets can be spoofed
384       via /usr/sbin/knopspoof.
385     - Added /usr/sbin/knoptm so that firewall rules can be timed-out when
386       the server is running in PCAP mode even if new packets don't appear
387       on the wire.
388     - Updated fwknop man page to talk about the new pcap-based
389       authorization mode.
390
391 fwknop-0.5.0 (03/19/2005):
392     - Added ALERTING_METHOD to allow syslog and/or email reporting to be
393       disabled (there is a dedicated file /etc/fwknop/alert.conf that
394       governs this behavior, and both fwknop and knopwatchd reference this
395       file).
396     - Bugfix for distinguishing OPT field associated with --log-tcp-options
397       vs. --log-ip-options.
398     - Added install_perl_module() install.pl from psad to provide a
399       consistent installation interface.
400     - Applied patch to only install perl modules that are not already
401       installed (Blair Zajac).
402     - Added --last-cmd option to allow fwknop to be executed with command
403       line arguments from the previous execution (they are saved in
404       ~/.fwknop.run).
405     - Added --Home-dir option to allow the home directory to be manually
406       specified.
407     - Re-worked get_homedir() to be more friendly to systems that do not
408       necessarily have /etc/passwd (e.g. OS X).
409     - Added configuration preservation and querying for which syslog
410       daemon is running to install.pl.  These features were adapted from the
411       psad installer (http://www.cipherdyne.org/psad).
412     - Added IPTables::ChainMgr.  Fwknop uses this module to maintain
413       dedicated chains to which access rules are added.
414     - Added IPTables::Parse, which is used internally by IPTables::ChainMgr.
415     - Added __WARN__ and __DIE__ handlers so errors can easily be collected.
416
417 fwknop-0.4.2 (09/27/2004):
418     - Added init script for Fedora systems.
419     - Added --Kill, --Restart, and --Status modes (this fixes the generic
420       init script which depends on these arguments).
421
422 fwknop-0.4.1 (09/14/2004):
423     - Bugfix for legacy posf code in fwknop and variable in fwknop.conf.
424
425 fwknop-0.4 (09/10/2004):
426     - Added ability to specify multiple IPs/networks in a single SOURCE
427       definition.
428     - Better examples section in the fwknop manpage.
429     - Bugfix to make sure EMAIL_ADDRESSES variable does not contain commas
430       (any commas are translated into spaces).
431     - Added LICENSE file.
432
433 fwknop-0.3 (08/21/2004):
434     - Bugfix for tracking knock sequences by source IP address.
435     - Bugfix for knock sequence timeouts.
436     - Removed old passive OS fingerprinting code in favor of the p0f
437       strategy.
438     - Added support for taking encryption keys from a file specified on
439       the command line.
440     - Update to send "sequence decrypt failed" email message only if
441       decryption failed for all encrypt sequence SOURCE blocks.
442
443 fwknop-0.2 (07/31/2004):
444     - Implemented remote username checking in encrypted sequences.
445     - Added support for icmp in knock sequences.
446     - Added protocol rotation option for encrypted sequences.
447     - Added code for multiple SOURCE access blocks with the same source
448       net/IP.
449     - Added KNOCK_LIMIT access control variable to limit the number of
450       times a particular knock sequence is honored.
451     - Added email alerts.
452
453 fwknop-0.1 (07/08/2004):
454     - Initial release.
Note: See TracBrowser for help on using the browser.