| 1 |
fwknop-1.9.3 (04/05/2008): |
|---|
| 2 |
- Added MASQUERADE and SNAT support to complement inbound DNAT connections |
|---|
| 3 |
for SPA packets that request --Forward-access to internal systems. This |
|---|
| 4 |
functionality is only enabled when both ENABLE_IPT_FORWARDING and |
|---|
| 5 |
ENABLE_IPT_SNAT are set, and is configured by two new variables |
|---|
| 6 |
IPT_MASQUERADE_ACCESS and IPT_SNAT_ACCESS which define the iptables |
|---|
| 7 |
interface to creating SNAT rules. The SNAT supplements of DNAT rules |
|---|
| 8 |
are not usually necessary because internal systems usually have a route |
|---|
| 9 |
back out to the Internet, but this feature accommodates those systems |
|---|
| 10 |
that do not have such a route. By default, the MASQUERADE target is |
|---|
| 11 |
used if ENABLE_IPT_SNAT is enabled because this means that the external |
|---|
| 12 |
IP does not have to be manually defined. However, the external IP can |
|---|
| 13 |
be defined by the SNAT_TRANSLATE_IP variable. |
|---|
| 14 |
- Added hex_dump() feature for fwknop client so that raw encrypted SPA |
|---|
| 15 |
packet data can be displayed in --verbose mode. |
|---|
| 16 |
- When ENABLE_IPT_FORWARDING is set, added a check for the value of the |
|---|
| 17 |
/proc/sys/net/ipv4/ip_forward file to ensure that the local system |
|---|
| 18 |
allows packets to be forwarded. Unless ENABLE_PROC_IP_FORWARD is |
|---|
| 19 |
disabled, then fwknopd will automatically set the ip_forward file to "1" |
|---|
| 20 |
if it is set to "0" (again, only if ENABLE_IPT_FORWARDING is enabled). |
|---|
| 21 |
- Minor bugfix to remove sys_log() call in legacy port knocking mode. |
|---|
| 22 |
- Minor bugfix to expand both the Id and Revision tags via the |
|---|
| 23 |
svn:keywords directive. |
|---|
| 24 |
|
|---|
| 25 |
fwknop-1.9.2 (03/12/2008): |
|---|
| 26 |
- Crypt::CBC adds the string "Salted__" to the beginning of the encrypted |
|---|
| 27 |
text (at least for how fwknop interfaces with Crypt::CBC), so the fwknop |
|---|
| 28 |
client was updated to delete the encoded version of this string |
|---|
| 29 |
"U2FsdGVkX1" before sending a Rijndael-encrypted SPA packet on the wire. |
|---|
| 30 |
The fwknopd server will add this string back in before decrypting. This |
|---|
| 31 |
makes it harder to write an IDS signature that looks for fwknop traffic; |
|---|
| 32 |
e.g. look for the default prefix string "U2FsdGVkX1" over UDP port 62201, |
|---|
| 33 |
which would work for fwknop clients < 1.9.2 (as long as the port number |
|---|
| 34 |
is not changed with --Server-port). |
|---|
| 35 |
- Added more granular source IP and allowed IP tests so that access to |
|---|
| 36 |
particular internal IP addresses can be excluded in --Forward-access |
|---|
| 37 |
mode. A new keyword "INTERNAL_NET_ACCESS" is now parsed from the |
|---|
| 38 |
access.conf file in order to implemented these restrictions. |
|---|
| 39 |
- (SPAPICT Group) Added BLACKLIST functionality to allow source IP |
|---|
| 40 |
addresses to easily be excluded from the authentication process. |
|---|
| 41 |
- (Grant Ferley) Submitted patch to handle SIGCHLD in IPTables::ChainMgr. |
|---|
| 42 |
- (Grant Ferley) Submitted patch to handle Linux "cooked" interfaces for |
|---|
| 43 |
packet capture (e.g. PPPoE interfaces). |
|---|
| 44 |
- (SPAPICT Group) Applied modified version of the client-defined access |
|---|
| 45 |
timeout patches submitted by the PICT SPA Group. There are two new |
|---|
| 46 |
message types to facilitate client timeouts; one for normal access mode, |
|---|
| 47 |
and the other for the FORWARD access mode. In the access.conf file, |
|---|
| 48 |
there is also a new variable "PERMIT_CLIENT_TIMEOUT" to allow each |
|---|
| 49 |
SOURCE stanza to allow client-defined timeouts or not. |
|---|
| 50 |
- (SPAPICT Group) Submitted patches to include support for the SHA1 digest |
|---|
| 51 |
algorithm for SPA packet replay attack detection. I modified these |
|---|
| 52 |
patches for maximum configurability (see the --digest-alg argument on |
|---|
| 53 |
the fwknop command line), and the ability to use the SHA256 algorithm as |
|---|
| 54 |
well. The default path to the /var/log/fwknop/md5sums file has been |
|---|
| 55 |
changed to /var/log/fwknop/digest.cache, and the default digest |
|---|
| 56 |
algorithm is now SHA256 (but this is tunable via the DIGEST_TYPE |
|---|
| 57 |
variable in the fwknop.conf file). |
|---|
| 58 |
- Added the Digest::SHA perl module in support of the SHA1 and SHA256 |
|---|
| 59 |
digest algorithms for replay attack detection and SPA message integrity. |
|---|
| 60 |
- Added full packet hex dumps (including packet headers) to fwknopd in |
|---|
| 61 |
--debug --verbose mode. This is to help diagnose packet sniffing issues |
|---|
| 62 |
over the loopback interface on Mac OS X (first reported by Sebastien |
|---|
| 63 |
Jeanquier). |
|---|
| 64 |
- (Test suite) Bugfix to ensure that the FWKNOP_DIR variable is set to the |
|---|
| 65 |
local output/ directory in several of the test config files in the |
|---|
| 66 |
test/conf/ directory. |
|---|
| 67 |
- (Test suite) Added several tests for configurable digest algorithms in |
|---|
| 68 |
support for the SHA256, SHA1, and MD5 digest changes made by the SPAPICT |
|---|
| 69 |
Group. |
|---|
| 70 |
- Updated the fwknop client to always call encode_base64() with the string |
|---|
| 71 |
to encode along with a second null-string argument to force all encoded |
|---|
| 72 |
data to not include line breaks. |
|---|
| 73 |
- Bugfix in install.pl to not test for the iptable command on non-Linux |
|---|
| 74 |
systems, and to not test for the ipfw command on systems that are Linux. |
|---|
| 75 |
- (Test suite) Updated to include the /proc/config.gz file so that the |
|---|
| 76 |
kernel config can be reviewed (not all Netfilter hooks are necessarily |
|---|
| 77 |
compiled in). |
|---|
| 78 |
|
|---|
| 79 |
fwknop-1.9.1 (01/26/2008): |
|---|
| 80 |
- Added ENABLE_OUTPUT_ACCESS keyword to access.conf file parsing. This |
|---|
| 81 |
provides a similar configuration gate for the iptables OUTPUT chain to |
|---|
| 82 |
the ENABLE_FORWARD_ACCESS keyword, and adds the abiliy to control which |
|---|
| 83 |
access.conf SOURCE blocks interface to the OUTPUT chain. |
|---|
| 84 |
- Better installation support for various Linux distributions including |
|---|
| 85 |
Fedora 8 and Ubuntu. The current runlevel is now acquired via the |
|---|
| 86 |
"runlevel" command instead of attempting to read /etc/inittab (which |
|---|
| 87 |
does not even exist on Ubuntu 7.10), and there are new command line |
|---|
| 88 |
arguments --init-dir, --init-name, and --runlevel to allow the init |
|---|
| 89 |
directory, init script name, and the runlevel to be manually specified |
|---|
| 90 |
on the install.pl command line. |
|---|
| 91 |
- Added command line argument display to fwknop client --verbose mode. |
|---|
| 92 |
- Updated the test suite to include OUTPUT chain tests, reference |
|---|
| 93 |
access.conf files in the test/conf/ directory, and perform SPA packet |
|---|
| 94 |
format validation tests by parsing fwknopd output. |
|---|
| 95 |
- Updated fwknopd to use always use the -c argument on the knoptm command |
|---|
| 96 |
line (this makes sure that the test suite usage of fwknopd causes knoptm |
|---|
| 97 |
to reference the correct configuration). |
|---|
| 98 |
- Updated IPTables::ChainMgr to print iptables command output to stdout or |
|---|
| 99 |
stderr if running in debug or verbose mode. |
|---|
| 100 |
- Added --Exclude-mod-regex to install.pl so that the installation of |
|---|
| 101 |
particular perl modules that match the supplied regex can be skipped. |
|---|
| 102 |
- Added SIGALRM wrapper to the test suite since some libpcap and system |
|---|
| 103 |
combinations break the ability of fwknopd to sniff packets. |
|---|
| 104 |
- Added srand() call to the fwknop client (this is useful for older |
|---|
| 105 |
versions of perl which do not automatically call srand() at the first |
|---|
| 106 |
rand() call if srand() was not already called). |
|---|
| 107 |
- Added a test to the test suite for sniffing packets over the loopback |
|---|
| 108 |
interface. |
|---|
| 109 |
- Added SPA packet aging test to the test suite to ensure that packet |
|---|
| 110 |
expirations work properly (this feature protects against MITM attacks |
|---|
| 111 |
where a valid SPA packet is stopped by an inline attacker and |
|---|
| 112 |
retransmitted at a later time to acquire access). |
|---|
| 113 |
- Added a file (test.log) to collect test suite console output. |
|---|
| 114 |
- Added --Prepare-results argument to test suite to anonymize test results |
|---|
| 115 |
and create a tarball that can be emailed to a third party to assist in |
|---|
| 116 |
- Added full firewall policy dumps and the collection of system specifics |
|---|
| 117 |
to the test suite. This makes it easy to send the output directory and |
|---|
| 118 |
the test.log file to developers to assist in debugging (no information |
|---|
| 119 |
is sent anywhere except as part of a manual process of course, and |
|---|
| 120 |
addresses can be anonymized with --Prepare-results - loopback addresses |
|---|
| 121 |
are not modified). |
|---|
| 122 |
- Added --fw-del-ip <IP> argument to fwknopd so that a specific IP address |
|---|
| 123 |
can be removed from the local firewall policy (this is used by the test |
|---|
| 124 |
suite to ensure that if a test for removed firewall rules fails then |
|---|
| 125 |
subsequent tests will not also fail because they are no longer tracked |
|---|
| 126 |
by a running knoptm instance). |
|---|
| 127 |
- Added a test to the test suite to collect fwknopd syslog output. This |
|---|
| 128 |
is useful to see if a mechanism such as SELinux is deployed in a manner |
|---|
| 129 |
that prevents normal fwknop communications. |
|---|
| 130 |
- Bugfix to track MD5 digest for SPA command mode packets. |
|---|
| 131 |
- Bugfix in fwknopd to not open ports listed in OPEN_PORTS in the absence |
|---|
| 132 |
of the PERMIT_CLIENT_PORTS directive when an SPA packet contains a |
|---|
| 133 |
request for access to a port not listed in OPEN_PORTS. |
|---|
| 134 |
debugging fwknop if there are any issues. |
|---|
| 135 |
- Added --verbose flag to fwknopd commands issued by the test suite so |
|---|
| 136 |
that more data is collected for debugging analysis. |
|---|
| 137 |
- Added GnuPG tests to the test suite with dedicated keys (for use only |
|---|
| 138 |
with the test suite) in the test/conf/client-gpg and |
|---|
| 139 |
test/conf/server-gpg directories. |
|---|
| 140 |
- Added digest file validation to test suite to make sure that fwknopd |
|---|
| 141 |
correctly tracks SPA packet MD5 digests. |
|---|
| 142 |
- Updated to search state tracking rule in any iptables chain (many |
|---|
| 143 |
iptables policies have user-defined chains that can be a bit complicated |
|---|
| 144 |
to parse). |
|---|
| 145 |
- Updated install.pl to be more strict in stopping any running fwknopd |
|---|
| 146 |
processes. |
|---|
| 147 |
|
|---|
| 148 |
fwknop-1.9.0 (12/15/2007): |
|---|
| 149 |
- Added a test suite so that fwknop and fwknopd functionality can be |
|---|
| 150 |
automatically tested over the loopback interface (see the fwknop_test.pl |
|---|
| 151 |
script in the test/ directory). |
|---|
| 152 |
- Major update to allow SPA packets to create DNAT connections to internal |
|---|
| 153 |
systems through the FORWARD chain (iptables only). This is useful to |
|---|
| 154 |
connect through to internal systems (that may be running on non-routable |
|---|
| 155 |
IP addresses) via a border firewall or router that is running fwknopd to |
|---|
| 156 |
create inbound DNAT rules. |
|---|
| 157 |
- Added support for the iptables OUTPUT chain via two new variable in the |
|---|
| 158 |
fwknop.conf file: ENABLE_IPT_OUTPUT and IPT_OUTPUT_ACCESS. This is |
|---|
| 159 |
useful for iptables firewalls that are not running the conntrack modules |
|---|
| 160 |
and that have a restrictive OUTPUT chain (so SYN/ACK responses are not |
|---|
| 161 |
allowed out without an explicit ACCEPT rule). |
|---|
| 162 |
- Added the ability to force the fwknopd and knoptm daemons to restart |
|---|
| 163 |
themselves (via knopwatchd) after a configurable timeout (see the |
|---|
| 164 |
ENABLE_VOLUNTARY_EXITS and EXIT_INTERVAL variables in the |
|---|
| 165 |
/etc/fwknop/fwknop.conf file). This feature is for those that want |
|---|
| 166 |
fwknopd to go through its initialization routine periodically just in |
|---|
| 167 |
case there is a logic (or other) bug that might result in fwknopd not |
|---|
| 168 |
accepting a valid SPA packet. NOTE: This feature is disabled by default, |
|---|
| 169 |
and is not normally needed since fwknopd is quite stable in most |
|---|
| 170 |
deployments. |
|---|
| 171 |
- Major update to perform all firewall rule expirations with knoptm, which |
|---|
| 172 |
is now started in all data collection modes. Older versions of fwknopd |
|---|
| 173 |
maintained its own firewall rule expiration code for the FILE_PCAP, |
|---|
| 174 |
ULOG_PCAP, and KNOCK modes, so two mechanisms were being maintained for |
|---|
| 175 |
the same purpose. The 1.9.0 release fixes this oversight. |
|---|
| 176 |
- Minor bugfix to have knopwatchd generate syslog messages whenever an |
|---|
| 177 |
fwknop daemon needs to be restarted. |
|---|
| 178 |
- Added --interface command line argument to install.pl to allow the |
|---|
| 179 |
sniffing interface to be specified from the command line. Also updated |
|---|
| 180 |
install.pl to enforce a 10-try maximum for attempting to accept a valid |
|---|
| 181 |
interface name from the command line (LANG env issues can exist |
|---|
| 182 |
sometimes). |
|---|
| 183 |
- Updated SPA packet format for server_auth and forward_info elements; |
|---|
| 184 |
the internal MD5 sum is now always the last field in an SPA packet. This |
|---|
| 185 |
makes extensions of the SPA protocol much easier, and the generation of |
|---|
| 186 |
SPA packets more elegant. Also, SPA packet validation has been improved |
|---|
| 187 |
to ensure that fields that are supposed to be digits really only contain |
|---|
| 188 |
integer data. |
|---|
| 189 |
- Added ENABLE_FORWARD_ACCESS variable to the access.conf file, and added |
|---|
| 190 |
ENABLE_IPT_FORWARDING to the fwknop.conf file. These variables provide |
|---|
| 191 |
the per-SOURCE ability to create DNAT connnections through the FORWARD |
|---|
| 192 |
chain.. |
|---|
| 193 |
- Replaced the IPT_AUTO_CHAIN1 variable with IPT_INPUT_ACCESS and |
|---|
| 194 |
IPT_FORWARD_ACCESS in fwknop.conf. |
|---|
| 195 |
- Added --Forward-access argument to the fwknop client. |
|---|
| 196 |
- Added client version number to syslog messages generated by fwknopd when |
|---|
| 197 |
a valid SPA packet is received. |
|---|
| 198 |
- Added human readable timestamp to MD5 cache. Here is an example of the |
|---|
| 199 |
update format: |
|---|
| 200 |
127.0.0.1 X6WF2C29kEgAv4aDJ8TDeQ [Wed Nov 28 09:24:46 2007] |
|---|
| 201 |
- Added --Count argument to fwknopd so that it calls exit() when the |
|---|
| 202 |
specified number of packets is monitored. |
|---|
| 203 |
- Added --no-logs argument to knoptm in support of the test suite so that |
|---|
| 204 |
no emails are generated. |
|---|
| 205 |
- Bugfix in fwknopd to account for non-Ethernet link layer header over |
|---|
| 206 |
*BSD loopback interfaces. |
|---|
| 207 |
- Added --Save-dst argument to the fwknop client to add a priority file to |
|---|
| 208 |
store client command line arguments (~/.fwknop.save). This file is only |
|---|
| 209 |
overwritten when --Save-dst is used. |
|---|
| 210 |
- Added fwknopd --fw-del-chains to allow the fwknopd iptables chains to |
|---|
| 211 |
easily be deleted. |
|---|
| 212 |
- Minor fwknopd bugfix to set process exit status to 0 when --Kill is |
|---|
| 213 |
used. |
|---|
| 214 |
|
|---|
| 215 |
fwknop-1.8.3 (11/17/2007): |
|---|
| 216 |
- Updated external IP resolution to point to http://www.whatismyip.org, |
|---|
| 217 |
and added http://www.cipherdyne.org/cgi/clientip.cgi as a backup site |
|---|
| 218 |
for fwknop IP resolution. |
|---|
| 219 |
- Added storage of source IP along with SPA MD5 sum. This allows the user |
|---|
| 220 |
to infer which networks are more hostile if an SPA packet is replayed. |
|---|
| 221 |
- Added SPA packet hex dumps in 'fwknopd --debug' mode so that the |
|---|
| 222 |
integration of third-party encryption algorithms is easier to |
|---|
| 223 |
troubleshoot. Sean Greven contributed a patch for this. |
|---|
| 224 |
- Reinstated the legacy port knocking mode. It appears that all encrypted |
|---|
| 225 |
output from the updated Crypt::Rijndael module is at least 32 bytes |
|---|
| 226 |
long, so port knocking sequences are now 32 bytes long as well (they |
|---|
| 227 |
were previously 16 bytes long in old versions of fwknop). |
|---|
| 228 |
- Bugfix to ensure the key length is at least 8 chars in --get-key mode. |
|---|
| 229 |
- Minor update to remove init message on OS X install. |
|---|
| 230 |
- Updated install.pl to set the LANG environmental variable to |
|---|
| 231 |
"en_US.UTF-8". This should fix the problem where the output of ifconfig |
|---|
| 232 |
was not interpreted correctly if the locale LANG setting is not English. |
|---|
| 233 |
- Implemented verbose email alerting by setting the ALERTING_METHODS |
|---|
| 234 |
variable to "verbose". This instructs fwknopd to generate a new email |
|---|
| 235 |
message for each message that it normally logs vis syslog (this feature |
|---|
| 236 |
is not the default, and must be manually enabled). |
|---|
| 237 |
|
|---|
| 238 |
fwknop-1.8.2 (09/15/2007): |
|---|
| 239 |
- Added fwknopd server support for Mac OS X. The Darwin uname return |
|---|
| 240 |
string is detected and this enables Darwin-specific installation code in |
|---|
| 241 |
install.pl. |
|---|
| 242 |
- Updated to not print sensitive key/password information in --debug mode |
|---|
| 243 |
with fwknopd. |
|---|
| 244 |
- Bugfix for install.pl on Windows 2003 Server running under Cygwin where |
|---|
| 245 |
'uname -o' output is reported 'Gygwin' for some reason. |
|---|
| 246 |
- Added --Cygwin-install command line argument to install.pl to force |
|---|
| 247 |
client-only fwknop install on Cygwin systems. |
|---|
| 248 |
- Added --OS-type command line argument to install.pl to allow the user to |
|---|
| 249 |
force the installation type. |
|---|
| 250 |
- Updated to version 1.04 of Crypt::Rijndael. This fixes incompatibilities |
|---|
| 251 |
between SPA packets between 64-bit and 32-bit platorms. |
|---|
| 252 |
- Bugfix to enforce a maximum of 20 tries to read a password from stdin. |
|---|
| 253 |
- Applied TCP options parsing fix from psad for invalid zero or one length |
|---|
| 254 |
fields that break TLV encoding (this is for fwknopd, and only applies to |
|---|
| 255 |
the legacy port knocking mode). |
|---|
| 256 |
- Added code to fwknopd to check to see if there are any state tracking |
|---|
| 257 |
rules in place within the local iptables or ipfw policy. |
|---|
| 258 |
- Made syslog identity, facility, and priority configurable (applied code |
|---|
| 259 |
from the psad project). |
|---|
| 260 |
- Implemented --fw-list for ipfw firewalls. |
|---|
| 261 |
- Bugfix for knoptm removing ipfw rules too quickly after not timing out |
|---|
| 262 |
previously instantiated rules properly. |
|---|
| 263 |
- Implemented smarter cache removal strategy in knoptm so that rules that |
|---|
| 264 |
are manually removed from the running iptables or ipfw policy are also |
|---|
| 265 |
removed from the cache. |
|---|
| 266 |
- Added /var/log/fwknop/errs/fwknopd.{warn,die} tracking to the fwknopd |
|---|
| 267 |
daemon for the PCAP modes of collecting packet data. Added |
|---|
| 268 |
knoptm{warn,die} files for knoptm as well. |
|---|
| 269 |
- Bugfix to import the GnuPG::Interface module in --get-key mode. |
|---|
| 270 |
- Bugfix to send source IP as a part of the command message in command |
|---|
| 271 |
mode so that REQUIRE_SOURCE_ADDRESS controls can be applied. |
|---|
| 272 |
- Added --Test-mode to fwknop client so that SPA packets can be built but |
|---|
| 273 |
never sent over the network. |
|---|
| 274 |
|
|---|
| 275 |
fwknop-1.8.1 (06/06/2007): |
|---|
| 276 |
- Bugfix to ensure that the "keep-state" directive is added to firewall |
|---|
| 277 |
rules on systems running the ipfw firewall. |
|---|
| 278 |
- Added the --Save-packet and --Save-packet-file command line arguments |
|---|
| 279 |
to the fwknop client. These options instruct fwknop to save a copy of |
|---|
| 280 |
an encrypted SPA packet before it is sent across the network. |
|---|
| 281 |
- Bugfix to find minimal unused ipfw rule number for ipfw firewalls. This |
|---|
| 282 |
fixes an issue where ipfw rules added by fwknopd could be inserted at |
|---|
| 283 |
the same position as rules from an existing ipfw policy. While ipfw |
|---|
| 284 |
allows duplicate rules, whenever such a rule is deleted by its rule |
|---|
| 285 |
number all matching rules are deleted. |
|---|
| 286 |
|
|---|
| 287 |
fwknop-1.8 (06/03/2007): |
|---|
| 288 |
- Added support for ipfw firewalls (found on *BSD systems). The |
|---|
| 289 |
IPTables::Parse and IPTables::ChainMgr modules are not installed on |
|---|
| 290 |
such systems. |
|---|
| 291 |
- Added gpg-agent support for both the fwknop client and fwknopd SPA |
|---|
| 292 |
server. |
|---|
| 293 |
- Updated client-only installation mode to restrict perl module |
|---|
| 294 |
installation to those module that are actually required by the fwknop |
|---|
| 295 |
client. This results in clean installs of the fwknop client on Windows |
|---|
| 296 |
systems running Cygwin. |
|---|
| 297 |
- Added --Defaults to install.pl so that fwknop can be installed without |
|---|
| 298 |
prompting the user to answer any questions. This is to make it easier |
|---|
| 299 |
to install fwknop on the Source Mage Linux distro. |
|---|
| 300 |
- Consolidated daemon config files into the fwknop.conf file (except for |
|---|
| 301 |
the access.conf file). This simplifies the configuration of fwknop. |
|---|
| 302 |
- Added recursive variable resolution in the parsing routines for the |
|---|
| 303 |
fwknop.conf file. This allows variable values to contain embedded |
|---|
| 304 |
variables. |
|---|
| 305 |
- Added init script for FreeBSD systems. |
|---|
| 306 |
- Added --BSD-install command line argument to install.pl. This is not |
|---|
| 307 |
normally necessary since the installer should detect installations on |
|---|
| 308 |
*BSD systems, but this option can force this behavior. |
|---|
| 309 |
- Updated knopmd and knopwatchd to use safe_malloc() instead of malloc(). |
|---|
| 310 |
- Bugfix to never time out rules from SOURCE blocks with FW_ACCESS_TIMEOUT |
|---|
| 311 |
set to zero |
|---|
| 312 |
|
|---|
| 313 |
fwknop-1.0.1 (01/09/2007): |
|---|
| 314 |
- Updated fwknopd to allow the GPG_REMOTE_ID variable to have the value |
|---|
| 315 |
"ANY" to allow a SOURCE block to match on arbitrary remote gpg signing |
|---|
| 316 |
keys (Leland Weathers). |
|---|
| 317 |
- Bugfix to allow OPEN_PORTS to be omitted in access.conf in favor of |
|---|
| 318 |
having only PERMIT_CLIENT_PORTS enabled (reported by Raul Siles). |
|---|
| 319 |
- Added the cd_rpmbuilder script to make it easy to build RPM's out of |
|---|
| 320 |
CipherDyne projects by automatically downloading the project .tar.gz and |
|---|
| 321 |
.spec files from http://www.cipherdyne.org/. |
|---|
| 322 |
|
|---|
| 323 |
fwknop-1.0 (11/05/2006): |
|---|
| 324 |
- Bugfix for OpenSSH-4.3p2 patch to make sure to include the spa.h header |
|---|
| 325 |
file. |
|---|
| 326 |
- Bugfix for access hashes accumluating when multiple ports are requested |
|---|
| 327 |
to be opened by a client. |
|---|
| 328 |
- Better validation of IPT_AUTO_CHAIN variable so that the from_chain |
|---|
| 329 |
cannot be identical to the to_chain. |
|---|
| 330 |
- Bugfix in RPM to install List::MoreUtils. |
|---|
| 331 |
- Bugfix so that the MD5 sum for an SPA packet is not examined for each |
|---|
| 332 |
SOURCE block. This fixes a problem where an SPA packet could appear to |
|---|
| 333 |
be replayed if multiple SOURCE blocks are defined in |
|---|
| 334 |
/etc/fwknop/access.conf. |
|---|
| 335 |
- Refactored main SPA access loop so that it is clearer how and when SPA |
|---|
| 336 |
clients are granted access. |
|---|
| 337 |
- Better handling of GnuPG key identifier strings (they can now contain |
|---|
| 338 |
spaces, and syslog messages wrap the identifiers with double quotes). |
|---|
| 339 |
- Added source IP address to command string in the SPA packet so that |
|---|
| 340 |
the REQUIRE_SOURCE_ADDRESS criteria can be applied by the fwknopd |
|---|
| 341 |
server. |
|---|
| 342 |
- Added --Show-last-cmd and --Show-host-cmd args to fwknop so that the |
|---|
| 343 |
last fwknop command and the last fwknop host commands can be viewed. |
|---|
| 344 |
- Added the svn revision number to --Version and --help output. |
|---|
| 345 |
|
|---|
| 346 |
fwknop-0.9.9 (10/15/2006): |
|---|
| 347 |
- Added REQUIRE_SOURCE_ADDRESS (disabled by default) to force fwknop |
|---|
| 348 |
clients to know their source IP address (i.e. -s cannot be used). So, |
|---|
| 349 |
either fwknop clients have to use -R to resolve their externally |
|---|
| 350 |
routable address, or they must just know what it is. |
|---|
| 351 |
- Updated to Net-RawIP-0.21_03 for compatibility with gcc-4.x compilers. |
|---|
| 352 |
- Added List-MoreUtils-0.22 which is a dependency of the new Net::RawIP |
|---|
| 353 |
module. |
|---|
| 354 |
- Bugfix to restore "start" functionality in Gentoo init script. |
|---|
| 355 |
- Bugfix to use the IPT_OUTPUT_FILE and IPT_ERROR_FILE configuration |
|---|
| 356 |
variables in fwknopd. |
|---|
| 357 |
- Added KNOPTM_IPT_OUTPUT_FILE and KNOPTM_IPT_ERROR_FILE variables |
|---|
| 358 |
specifically for the knoptm daemon so that it can use IPTables::ChainMgr |
|---|
| 359 |
completely independently of fwknopd (this removes a potential race |
|---|
| 360 |
condition between fwknopd and knoptm). |
|---|
| 361 |
|
|---|
| 362 |
fwknop-0.9.8 (09/17/2006): |
|---|
| 363 |
- Added the ability to ignore old SPA packets through use of the |
|---|
| 364 |
client-side time stamp. This means that an attacker cannot intercept an |
|---|
| 365 |
SPA packet, prevent it from being forwarded to its intended destination, |
|---|
| 366 |
and then put the packet on the wire at some time outside of the allowed |
|---|
| 367 |
time window. There are two new configuration options in fwknop.conf |
|---|
| 368 |
"ENABLE_SPA_PACKET_AGING" and "MAX_SPA_PACKET_AGE" that control the |
|---|
| 369 |
length of the acceptable time window (2 minutes by default). This |
|---|
| 370 |
requires some level of synchronization between the fwknop client and the |
|---|
| 371 |
fwknopd server, but this is not onerous through the use of NTP. This |
|---|
| 372 |
feature is enabled by default, and the idea for it was contributed by |
|---|
| 373 |
Sebastien J. |
|---|
| 374 |
- Completely re-worked IPTables::ChainMgr to support the return of |
|---|
| 375 |
iptables error messages that are collected via stderr. This is critical |
|---|
| 376 |
to fixing any bugs where fwknopd could die as a result of a poorly |
|---|
| 377 |
crafted iptables command. |
|---|
| 378 |
but no information would be returned to the user. |
|---|
| 379 |
- Added the ability to specify the position for both the jump rule into |
|---|
| 380 |
the fwknopd chains as well as the position for new rules within the |
|---|
| 381 |
fwknopd chains via the -I argument to iptables. This fixes a bug where |
|---|
| 382 |
the user was given the impression that the IPTABLES_AUTO_RULENUM would |
|---|
| 383 |
accomplish this (IPTABLES_AUTO_RULENUM has been removed). |
|---|
| 384 |
- Updated fwknopd to require < 1500 byte payload length before attempting |
|---|
| 385 |
to decrypt. Also, GnuPG decrypts are not attempted unless the encrypted |
|---|
| 386 |
payload is at least 400 bytes long (this is conservative since even |
|---|
| 387 |
encrypting a single byte with a 1024-bit key will result in about 340 |
|---|
| 388 |
bytes of encrypted data). |
|---|
| 389 |
- Added the --gpg-default-key option to have fwknop use the default GnuPG |
|---|
| 390 |
key that is defined in the ~/.gnupg/options file. |
|---|
| 391 |
- Added the --URL command line argument so that a URL other than the |
|---|
| 392 |
default http://www.whatismyip.com/ can be provided by the user for |
|---|
| 393 |
external IP resolution (suggested by Sebastien J.). |
|---|
| 394 |
- Updated to be more rigorous with md5 sums; we now require that the |
|---|
| 395 |
md5_base64() function actually returns a non-null result. |
|---|
| 396 |
- Bugfix to make sure that only the users associated with the a specific |
|---|
| 397 |
REQUIRE_USERNAME value (in a specific SOURCE block in access.conf) are |
|---|
| 398 |
granted the appropriate access even if a valid encrypted packet is |
|---|
| 399 |
constructed from a different user name (by an fwknop client). |
|---|
| 400 |
- Populated the _debug option in the IPTables::ChainMgr module, and also |
|---|
| 401 |
added a _verbose option so that the specific iptables commands can |
|---|
| 402 |
actually be seen as IPTables::ChainMgr functions are called. |
|---|
| 403 |
- Added code to install.pl to update command paths in fwknop.conf and |
|---|
| 404 |
knopwatchd.conf if any of the paths are broken (i.e. the local system |
|---|
| 405 |
does not conform to the default paths). By default this only happens if |
|---|
| 406 |
the user does not want old configs to be merged, but to override this |
|---|
| 407 |
use the new --path-update command line argument to install.pl. |
|---|
| 408 |
- Added the --Skip-mod-install command line argument to install.pl to |
|---|
| 409 |
allow all perl module installs to be skipped. |
|---|
| 410 |
- Added the --force-mod-regex command line argument to install.pl to allow |
|---|
| 411 |
a regex match on perl module names to force matching modules to be |
|---|
| 412 |
installed. |
|---|
| 413 |
- Minor bugfix to generate better (i.e. closer to those that Firefox |
|---|
| 414 |
generates) http requests to http://www.whatismyip.com/). |
|---|
| 415 |
- Adapted Mate Wierdl's RPM patch from the psad project so that the fwknop |
|---|
| 416 |
RPM builds on x86_64 systems. |
|---|
| 417 |
- Removed iptables requirement in RPM spec file because fwknop may be |
|---|
| 418 |
installed on a system just to run the fwknop client. |
|---|
| 419 |
- Updated to email username mismatch errors. |
|---|
| 420 |
|
|---|
| 421 |
fwknop-0.9.7 (08/04/2006): |
|---|
| 422 |
- Added fwknop_serv to function as minimal TCP server over which SPA |
|---|
| 423 |
packets can be sent. This allows SPA to be compatible with the Tor |
|---|
| 424 |
network, which requires that a virtual circuit is established before |
|---|
| 425 |
traffic can be sent. |
|---|
| 426 |
- Updated to Crypt::CBC-2.18 after a vulnerability was discovered in |
|---|
| 427 |
previous versions of Crypt::CBC that caused weak ciphertext to be |
|---|
| 428 |
generated for algorithms that have blocksizes greater than 8 bytes (such |
|---|
| 429 |
as Rijndael used by fwknop). Manually specifying initialization vectors |
|---|
| 430 |
is not necessary now. |
|---|
| 431 |
- Updated SSH patch to support OpenSSH-4.3p2. |
|---|
| 432 |
- Bugfix to make sure to create /var/* directories if they don't exist |
|---|
| 433 |
(such as when /var is a tmpfs). |
|---|
| 434 |
- Bugfix (Dwayne Rightler) to restore -w IP lookup functionality after |
|---|
| 435 |
format change on data returned by whatismyip.com. |
|---|
| 436 |
- Bugfix to wrap SPA Rijndael decryption with eval{} so that fwknopd does |
|---|
| 437 |
not die if there are problems trying to decrypt data. This is necessary |
|---|
| 438 |
because of the security vulnerability fix in Crypt::CBC that creates |
|---|
| 439 |
some incompatibilities in different versions of Crypt::CBC. |
|---|
| 440 |
- Added "--L-host" command line argument so that the arguments used for |
|---|
| 441 |
multiple hosts are preserved and can be recalled. |
|---|
| 442 |
- Changed default user-agent setting for whatismyip.com lookups to |
|---|
| 443 |
Firefox/1.0.5.4; there is no need to gratuitously advertise fwknop |
|---|
| 444 |
traffic. |
|---|
| 445 |
- Updated GunPG HOWTO to provide a step-by-step guide to getting fwknop |
|---|
| 446 |
Single Packet Authorization working with GnuPG. |
|---|
| 447 |
- Updated to derive perl module versions from the VERSION files within |
|---|
| 448 |
each of the perl module source directories. |
|---|
| 449 |
|
|---|
| 450 |
fwknop-0.9.6 (01/13/2006): |
|---|
| 451 |
- Added GPG based authentication capability for SPA packets. This new |
|---|
| 452 |
mode can be configured to require that a GPG message be signed with a |
|---|
| 453 |
particular key or set of keys. |
|---|
| 454 |
- In GPG mode, the fwknop client now prints GPG errors to stdout if not |
|---|
| 455 |
running with --gpg-no-batch-mode. |
|---|
| 456 |
- Added the ability to require that the client know the UNIX crypt() |
|---|
| 457 |
password associated with a username on the server side. This |
|---|
| 458 |
functionality is enabled on the fwknop client with the "--Server-auth |
|---|
| 459 |
crypt" command line argument, and the REQUIRE_AUTH_METHOD variable in |
|---|
| 460 |
/etc/fwknop/access.conf on the fwknopd server. |
|---|
| 461 |
- Added patch against OpenSSH-4.2p1 to integrate SPA mode. This patch |
|---|
| 462 |
adds a "-K <fwknop cmd line>" argument to the SSH client so that |
|---|
| 463 |
fwknop can be executed directly before an SSH connection is made. |
|---|
| 464 |
- Separated server and client portions of fwknop into "fwknopd" and |
|---|
| 465 |
fwknop repectively. This will allow better portability to be |
|---|
| 466 |
developed since the client and server pieces can be developed more |
|---|
| 467 |
independently. NOTE: With so many changes, it is probably a good idea |
|---|
| 468 |
to not preserve old fwknop configs via install.pl. |
|---|
| 469 |
- Renamed all relevant fwknopd command and file paths to support new |
|---|
| 470 |
fwknopd server component. |
|---|
| 471 |
- Added --quiet mode (this is used by default in the OpenSSH patch). |
|---|
| 472 |
- Removed legacy port knocking installation in install.pl (fwknopfifo, |
|---|
| 473 |
and fwdata file) unless the data collection mode is set to syslog or |
|---|
| 474 |
syslog-ng for legacy iptables log messages. |
|---|
| 475 |
- Added inode checking for PCAP_PKT_FILE. This helps to ensure that log |
|---|
| 476 |
rotation schemes don't interfere with reading packets out of the file |
|---|
| 477 |
since this check is size independent. |
|---|
| 478 |
- Bugfix for Makefile debug mode. |
|---|
| 479 |
- Added compilation check for perl programs in install.pl before |
|---|
| 480 |
installation into the filesystem. |
|---|
| 481 |
- Bugfix for knopwatchd to make sure it can actually restart all running |
|---|
| 482 |
daemons properly. |
|---|
| 483 |
- Added --force-mod command line argument to install.pl to allow the user |
|---|
| 484 |
to force all perl modules to be be installed regardless of whether a |
|---|
| 485 |
module exists in the system perl lib tree. |
|---|
| 486 |
- Added --no-save-args to fwknop so that existing .fwknop.run file can |
|---|
| 487 |
be preserved (helps to testing new features of fwknop client). |
|---|
| 488 |
- Removed useless --encrypt command line argument (only the old shared |
|---|
| 489 |
port knock sequences are not encrypted). |
|---|
| 490 |
|
|---|
| 491 |
fwknop-0.9.5 (10/02/2005): |
|---|
| 492 |
- Added the ability to resolve the external IP associated with the |
|---|
| 493 |
local network via http://www.whatismyip.com. This is a more secure |
|---|
| 494 |
method of accomplishing what the -s option performs. The new |
|---|
| 495 |
command line option is --whatismyip (or just -w). |
|---|
| 496 |
- Updated fwknop to communicate with knoptm via a UNIX domain socket |
|---|
| 497 |
instead of the previous file-based communication. |
|---|
| 498 |
- Updated to flush the fwknop iptables chains at start time. |
|---|
| 499 |
- Bugfix for removing the wrong hash key in the knoptm IP cache. |
|---|
| 500 |
|
|---|
| 501 |
fwknop-0.9.4 (09/17/2005): |
|---|
| 502 |
- Bugfix for knoptm timing out new entries based on old time values |
|---|
| 503 |
(this caused new rules to timed out too quickly). |
|---|
| 504 |
- Added support for multiple users in REQUIRE_USERNAME keyword in |
|---|
| 505 |
access.conf. |
|---|
| 506 |
- Added the ability to display raw encrypted packet data in client |
|---|
| 507 |
mode with --verbose. |
|---|
| 508 |
- Created fwknop RPM for RPM-based Linux distributions. |
|---|
| 509 |
- Bugfix for inappropriate redirects in command mode where the command |
|---|
| 510 |
already contained a redirect. |
|---|
| 511 |
|
|---|
| 512 |
fwknop-0.9.3 (08/27/2005): |
|---|
| 513 |
- Added an on-disk cache of md5 sums so that the md5 sum check can |
|---|
| 514 |
survive restarts of fwknop. |
|---|
| 515 |
- Updated install.pl to be more friendly to Mac OS X (Blair Zajac). |
|---|
| 516 |
- Updated to allow access.conf variables to have values instead of just |
|---|
| 517 |
being defined. |
|---|
| 518 |
- Started on additional server authentication mode code (re-worked MD5 |
|---|
| 519 |
sum calculation to allow packet format to be extended by taking into |
|---|
| 520 |
account the fwknop version number). |
|---|
| 521 |
|
|---|
| 522 |
fwknop-0.9.2 (08/06/2005): |
|---|
| 523 |
- Added FILE_PCAP data collection method when running in server mode. |
|---|
| 524 |
This is a more general way of getting packets than the ULOG_PCAP |
|---|
| 525 |
mode since then a normal ethernet sniffer can be used to build the |
|---|
| 526 |
file. |
|---|
| 527 |
- Added the ability to re-open a pcap file if its size shrinks (i.e. |
|---|
| 528 |
it gets rotated out or something). |
|---|
| 529 |
- Bugfix for multiple rules with the same timestamp not being timed out |
|---|
| 530 |
by knoptm. |
|---|
| 531 |
- Integrated spoofing capability directly within fwknop (instead of |
|---|
| 532 |
using the knopspoof command) through the use of "require Net::RawIP". |
|---|
| 533 |
- Better multi-protocol support in server mode. Tcp and icmp packets |
|---|
| 534 |
are properly decoded now. |
|---|
| 535 |
|
|---|
| 536 |
fwknop-0.9.1 (07/29/2005): |
|---|
| 537 |
- Added the ability to specify multiple ports/protocols to access on a |
|---|
| 538 |
server with the --Access command line option. |
|---|
| 539 |
- Added the ability to spoof SPA packets over icmp and tcp protocols. |
|---|
| 540 |
- Added the ability to restrict access at the server to only those |
|---|
| 541 |
ports defined in the OPEN_PORTS keyword. This option is controled by |
|---|
| 542 |
a new keyword "PERMIT_CLIENT_PORTS". |
|---|
| 543 |
- Bugfix for MD5 sum not being properly calculated over decrypted data. |
|---|
| 544 |
This allowed old packets that contained additional garbage data to |
|---|
| 545 |
be replayed against an fwknop server. |
|---|
| 546 |
- Updated to fall back to getpwuid() if getlogin() fails (Blair Zajac). |
|---|
| 547 |
- Added --ipt-list to list all current rules in the FWKNOP iptables |
|---|
| 548 |
chains. |
|---|
| 549 |
- Added --ipt-flush to flush all current rules in the FWKNOP iptables |
|---|
| 550 |
chains. |
|---|
| 551 |
- Bugfix for the installer dying if ~/lib already exists (Blair Zajac). |
|---|
| 552 |
- Updated to delay the loading of server perl modules (Net::Pcap, etc.) |
|---|
| 553 |
only if we are running in server mode. |
|---|
| 554 |
- Bugfix for module directory paths in install.pl. |
|---|
| 555 |
|
|---|
| 556 |
fwknop-0.9.0 (05/29/2005): |
|---|
| 557 |
- Added new authorization mode that uses Net::Pcap to read packets |
|---|
| 558 |
out of a file that is written to by the ulogd pcap writer (also |
|---|
| 559 |
stubbed in code to sniff packets directly off the wire). This |
|---|
| 560 |
authorization mode only requires single packets, and has many |
|---|
| 561 |
characteristics that are better than simple port knocking, including |
|---|
| 562 |
being non-replayable, and much more data can be sent. This mode |
|---|
| 563 |
is now the default for both the server and the client. |
|---|
| 564 |
- Made the execution of knopmd optional depending on whether AUTH_MODE |
|---|
| 565 |
is a pcap mode (e.g. ULOG_PCAP or PCAP). |
|---|
| 566 |
- Added --Spoof-src argument so that encrypted packets can be spoofed |
|---|
| 567 |
via /usr/sbin/knopspoof. |
|---|
| 568 |
- Added /usr/sbin/knoptm so that firewall rules can be timed-out when |
|---|
| 569 |
the server is running in PCAP mode even if new packets don't appear |
|---|
| 570 |
on the wire. |
|---|
| 571 |
- Updated fwknop man page to talk about the new pcap-based |
|---|
| 572 |
authorization mode. |
|---|
| 573 |
|
|---|
| 574 |
fwknop-0.5.0 (03/19/2005): |
|---|
| 575 |
- Added ALERTING_METHOD to allow syslog and/or email reporting to be |
|---|
| 576 |
disabled (there is a dedicated file /etc/fwknop/alert.conf that |
|---|
| 577 |
governs this behavior, and both fwknop and knopwatchd reference this |
|---|
| 578 |
file). |
|---|
| 579 |
- Bugfix for distinguishing OPT field associated with --log-tcp-options |
|---|
| 580 |
vs. --log-ip-options. |
|---|
| 581 |
- Added install_perl_module() install.pl from psad to provide a |
|---|
| 582 |
consistent installation interface. |
|---|
| 583 |
- Applied patch to only install perl modules that are not already |
|---|
| 584 |
installed (Blair Zajac). |
|---|
| 585 |
- Added --last-cmd option to allow fwknop to be executed with command |
|---|
| 586 |
line arguments from the previous execution (they are saved in |
|---|
| 587 |
~/.fwknop.run). |
|---|
| 588 |
- Added --Home-dir option to allow the home directory to be manually |
|---|
| 589 |
specified. |
|---|
| 590 |
- Re-worked get_homedir() to be more friendly to systems that do not |
|---|
| 591 |
necessarily have /etc/passwd (e.g. OS X). |
|---|
| 592 |
- Added configuration preservation and querying for which syslog |
|---|
| 593 |
daemon is running to install.pl. These features were adapted from the |
|---|
| 594 |
psad installer (http://www.cipherdyne.org/psad). |
|---|
| 595 |
- Added IPTables::ChainMgr. Fwknop uses this module to maintain |
|---|
| 596 |
dedicated chains to which access rules are added. |
|---|
| 597 |
- Added IPTables::Parse, which is used internally by IPTables::ChainMgr. |
|---|
| 598 |
- Added __WARN__ and __DIE__ handlers so errors can easily be collected. |
|---|
| 599 |
|
|---|
| 600 |
fwknop-0.4.2 (09/27/2004): |
|---|
| 601 |
- Added init script for Fedora systems. |
|---|
| 602 |
- Added --Kill, --Restart, and --Status modes (this fixes the generic |
|---|
| 603 |
init script which depends on these arguments). |
|---|
| 604 |
|
|---|
| 605 |
fwknop-0.4.1 (09/14/2004): |
|---|
| 606 |
- Bugfix for legacy posf code in fwknop and variable in fwknop.conf. |
|---|
| 607 |
|
|---|
| 608 |
fwknop-0.4 (09/10/2004): |
|---|
| 609 |
- Added ability to specify multiple IPs/networks in a single SOURCE |
|---|
| 610 |
definition. |
|---|
| 611 |
- Better examples section in the fwknop manpage. |
|---|
| 612 |
- Bugfix to make sure EMAIL_ADDRESSES variable does not contain commas |
|---|
| 613 |
(any commas are translated into spaces). |
|---|
| 614 |
- Added LICENSE file. |
|---|
| 615 |
|
|---|
| 616 |
fwknop-0.3 (08/21/2004): |
|---|
| 617 |
- Bugfix for tracking knock sequences by source IP address. |
|---|
| 618 |
- Bugfix for knock sequence timeouts. |
|---|
| 619 |
- Removed old passive OS fingerprinting code in favor of the p0f |
|---|
| 620 |
strategy. |
|---|
| 621 |
- Added support for taking encryption keys from a file specified on |
|---|
| 622 |
the command line. |
|---|
| 623 |
- Update to send "sequence decrypt failed" email message only if |
|---|
| 624 |
decryption failed for all encrypt sequence SOURCE blocks. |
|---|
| 625 |
|
|---|
| 626 |
fwknop-0.2 (07/31/2004): |
|---|
| 627 |
- Implemented remote username checking in encrypted sequences. |
|---|
| 628 |
- Added support for icmp in knock sequences. |
|---|
| 629 |
- Added protocol rotation option for encrypted sequences. |
|---|
| 630 |
- Added code for multiple SOURCE access blocks with the same source |
|---|
| 631 |
net/IP. |
|---|
| 632 |
- Added KNOCK_LIMIT access control variable to limit the number of |
|---|
| 633 |
times a particular knock sequence is honored. |
|---|
| 634 |
- Added email alerts. |
|---|
| 635 |
|
|---|
| 636 |
fwknop-0.1 (07/08/2004): |
|---|
| 637 |
- Initial release. |
|---|