1 fwsnort-1.6.2 (04/28/2012):
2 - Switched --no-ipt-sync to default to not syncing with the iptables policy.
3 By default fwsnort attempts to match translated Snort rules to the
4 running iptables policy, but this is tough to do well because iptables
5 policies can be complex. And, before fwsnort switched to the
6 iptables-save format for instantiating the policy, a large set of
7 translated rules could take a really long time to make active within the
8 kernel. Finally, many Snort rules restrict themselves to established TCP
9 connections anyway, and if a restrictive policy doesn't allow connections
10 to get into the established state for some port let's say, then there is
11 little harm in having translated Snort rules for this port. Some kernel
12 memory would be wasted (small), but no performance would be lost since
13 packets won't be processed against these rules anyway. The end result is
14 that the default behavior is now to not sync with the local iptables
15 policy in favor of translating and instantiating as many rules as
17 - Replaced Net::IPv4Addr with the excellent NetAddr::IP module which has
18 comprehensive support for IPv6 address network parsing and comparisons.
19 - Moved the fwsnort.sh script and associated files into the
20 /var/lib/fwsnort/ directory. This was suggested by Peter Vrabec.
21 - Removed the ExtUtils::MakeMaker RPM build requirement from the
22 fwsnort.spec file. This is a compromise which will allow the fwsnort RPM
23 to be built even if RPM dosen't or can't see that ExtUtils::MakeMaker is
24 installed - most likely it will build anyway. If it doesn't, there are
25 bigger problems since fwsnort is written in perl. If you want to build
26 the fwsnort RPM with a .spec file that requires ExtUtils::MakeMaker, then
27 use the "fwsnort-require-makemaker.spec" file that is bundled in the
30 fwsnort-1.6.1 (11/01/2011):
31 - (Kim Hagen) submitted a patch for a bug in fwsnort-1.6 where the fwsnort
32 policy in iptables-save format could not be loaded whenever iptables-save
33 put the nat table output after the filter table output. In this case,
34 fwsnort would fail with an error like the following:
37 `FWSNORT_FORWARD_ESTAB':/lib/xtables/libipt_FWSNORT_FORWARD_ESTAB.so:
38 cannot open shared object file: No such file or directory
40 fwsnort now invokes 'iptables-save -t filter' in order to ensure that
41 ordering issues do not affect how fwsnort builds its translated rule set.
42 - Bug fix to ensure that fwsnort does not attempt to re-order pattern
43 matches for patterns that have a relative match requirement. For non-
44 relative matches fwsnort re-orders pattern matches based on the pattern
45 length, reasoning that the longest pattern should be processed first for
46 better performance. The usage of the fast_pattern keyword give the user
47 explicit control over this. Here is a Snort rule that is now properly
48 handled by fwsnort (references removed):
50 alert tcp $EXTERNAL_NET $HTTP_PORTS -> $HOME_NET any (msg:"ET WEB_CLIENT
51 Possible Adobe Reader and Acrobat Forms Data Format Remote Security
52 Bypass Attempt"; flow:established,to_client; file_data; content:"%FDF-";
53 depth:300; content:"/F(JavaScript|3a|"; nocase; distance:0;
54 classtype:attempted-user; sid:2010664; rev:8;)
56 Before this change, fwsnort translated this rule as:
58 $IPTABLES -A FWSNORT_FORWARD_ESTAB -p tcp -m tcp --sport 80 -m string
59 --hex-string "/F(JavaScript|3a|" --algo bm --from 69 --icase -m string
60 --hex-string "%FDF|2d|" --algo bm --to 364 -m comment --comment
61 "sid:2010664; msg:ET WEB_CLIENT Possible Adobe Reader and Acrobat Forms
62 Data Format Remote Security Bypass Attempt; classtype:attempted-user;
63 rev:8; FWS:1.6;" -j LOG --log-ip-options --log-tcp-options --log-prefix
66 Note that in the above rule, the "/F(JavaScript|3a|" pattern was switched
67 to be evaluated first even though it is a relative match to the previous
68 pattern in the original Snort rule. After this change, fwsnort translates
71 $IPTABLES -A FWSNORT_FORWARD_ESTAB -p tcp -m tcp --sport 80 -m string
72 --hex-string "%FDF|2d|" --algo bm --to 364 -m string --hex-string
73 "/F(JavaScript|3a|" --algo bm --from 69 --icase -m comment --comment
74 "sid:2010664; msg:ET WEB_CLIENT Possible Adobe Reader and Acrobat Forms
75 Data Format Remote Security Bypass Attempt; classtype:attempted-user;
76 rev:8; FWS:1.6;" -j LOG --log-ip-options --log-tcp-options --log-prefix
79 - Updated to the latest Emerging Threats rule set.
81 fwsnort-1.6 (07/28/2011):
82 - Fixed the --ipt-apply functionality - the variable that held the
83 fwsnort.sh path was not initialized properly prior to this change.
84 - Added the --Conntrack-state argument to specify a conntrack state
85 in place of the "established" state that commonly accompanies the Snort
86 "flow" keyword. By default, fwsnort uses the conntrack state of
87 "ESTABLISHED" for this. In certain corner cases, it might be useful to
88 use "ESTABLISHED,RELATED" instead to apply application layer inspection
89 to things like ICMP port unreachable messages that are responses to real
90 attempted communications. (Need to add UDP tracking for the _ESTAB
91 chains for this too - coming soon.)
92 - Recent releases of iptables and the Linux kernel support matching on
93 connection state via the conntrack modules and the --ctstate switch.
94 Added a capabilities test for this, and will fall back to using the state
95 match if the conntrack module is not available.
96 - Bugfix to ensure the iptables log prefixes built by fwsnort are not
97 longer than those allowed by the running iptables firewall. This is
98 usually a total of 29 characters, but fwsnort now dynamically figures out
100 - Bugfix for --ipt-list and --ipt-flush to ensure that the proper iptables
101 binary path is chosen. These args failed without this because the
102 iptables binary was not set.
104 fwsnort-1.5 (01/08/2011):
105 - Major update to use the iptables-save format instead of the older
106 strategy of always just executing iptables commands directly (which was
107 very flow for large fwsnort policies). The /etc/fwsnort/fwsnort.sh
108 script now just executes:
110 /sbin/iptables-restore < /etc/fwsnort/fwsnort.save
112 All fwsnort rules are now placed in the /etc/fwsnort/fwsnort.save file,
113 but the older fwsnort.sh output (for the individual commands version)
114 is still available at /etc/fwsnort/fwsnort_iptcmds.sh. This
115 functionality extends to ip6tables policies as well. The fwsnort man
116 page explain this in better detail:
118 "As of fwsnort-1.5 all iptables rules built by fwsnort are written out
119 to the /etc/fwsnort/fwsnort.save file in iptables-save format. This
120 allows a long fwsnort policy (which may contain thousands of iptables
121 rules translated from a large Snort signature set) to be quickly
122 instantiated via the "iptables-restore" command. A wrapper script
123 /etc/fwsnort/fwsnort.sh is also written out to make this easy. Hence,
124 the typical work flow for fwsnort is to: 1) run fwsnort, 2) note the
125 Snort rules that fwsnort was able to successfully translate (the number
126 of such rules is printed to stdout), and then 3) execute the
127 /etc/fwsnort/fwsnort.sh wrapper script to instantiate the policy in the
130 - Added the --rules-url argument so that the URL for updating the
131 Emerging Threats rule set can be specified from the command line. The
134 http://rules.emergingthreats.net/open/snort-2.9.0/emerging-all.rules
136 - Updated to automatically check for the maximum length string that the
137 string match supports, and this is used to through out any Snort rules
138 with content matches longer than this length.
139 - Updated the iptables capabilities testing routines to add and delete
140 testing rules to/from the custom chain 'FWS_CAP_TEST'. This maintains a
141 a cleaner separation between fwsnort and any existing iptables policy
142 even during the capabilities testing phase.
143 - Added the --ipt-check-capabilities argument to have fwsnort test the
144 capabilities of the local iptables firewall and exit.
145 - Added the --string-match-alg argument to allow the string matching
146 algorithm used by fwsnort to be specified from the command line. The
147 default algorithm is 'bm' for 'Boyer-Moore', but 'kmp' may also be
148 specified (short for the 'Knuth–Morris–Pratt' algorithm).
149 - Updated to the latest complete rule set from Emerging Threats (see
150 http://www.emergingthreats.net/).
152 fwsnort-1.1 (01/05/2010):
153 - Added the ability to build an fwsnort policy that utilizes ip6tables
154 instead of iptables. This allows fwsnort filtering and altering
155 capabilities to apply to IPv6 traffic instead of just IPv4 traffic. To
156 enable ip6tables usage, use the "-6" or "--ip6tables" command line
158 - Added the --include-perl-triggers command line argument so that
159 translated Snort rules can easily be tested. This argument instructs
160 fwsnort to include 'perl -e print ... ' commands as comments in the
161 /etc/fwsnort/fwsnort.sh script, and these commands can be combined
162 with netcat to send payloads across the wire that match Snort rules.
163 - Updated fwsnort to create logs in the /var/log/fwsnort/ directory
164 instead of directly in the /var/log/ directory. The path is controlled
165 by a new variable 'LOG_FILE' in the /etc/fwsnort/fwsnort.conf file.
166 - Added several variables in /etc/fwsnort/fwsnort.conf to control paths
167 to everything from the config file to the snort rules path. Coupled
168 with this is the ability to create variables within path components and
169 fwsnort will expand them (e.g. 'CONF_DIR /etc/fwsnort;
170 CONF_FILE $CONF_DIR/fwsnort.conf').
171 - Added --Last-cmd arg so that it is easy to rebuild the fwsnort.sh script
172 with the same command line args as the previous execution.
174 fwsnort-1.0.6 (05/30/2009):
175 - (Franck Joncourt) Updated fwsnort to use the "! <option> <arg>" syntax
176 instead of the older "<option> ! <arg>" for the iptables command line.
177 - (Franck Joncourt) For the --hex-string and --string matches, if the
178 argument exceeds 128 bytes (iptables 1.4.2) then iptables fails with an
179 error "iptables v1.4.2: STRING too long". Fixes this with a patch that
180 adds a new variable in fwsnort.conf "MAX_STRING_LEN", so that the size of
181 the content can be limited. If the content (null terminated string) is
182 more than MAX_STRING_LEN chars, fwsnort throws the rule away.
183 - Bug fix to allow fwsnort to properly translate snort rules that have
184 "content" fields with embedded escaped semicolons (e.g. "\;"). This
185 allows fwsnort to translate about 58 additional rules from the Emerging
187 - Bug fix to allow case insensitive matches to work properly with the
188 --include-re-caseless and --exclude-re-caseless arguments.
189 - Bug fix to move the 'rawbytes' keyword to the list of keywords that are
190 ignored since iptables does a raw match anyway as it doesn't run any
191 preprocessors in the Snort sense.
192 - Added the --snort-rfile argument so that a specific Snort rules file (or
193 list of files separated by commas) is parsed.
194 - Added a small hack to choose the first port from a port list until the
195 iptables 'multiport' match is supported.
196 - Updated to consolidate spaces in hex matches in the fwsnort.sh script
197 since the spaces are not part of patterns to be searched anyway.
198 - Updated to the latest complete rule set from Emerging Threats (see
199 http://www.emergingthreats.net/).
200 - Added the "fwsnort-nobuildreqs.spec" file for building fwsnort on
201 systems (such as Debian) that do not install/upgrade software via RPM.
202 This file omits the "BuildRequires: perl-ExtUtils-MakeMaker" directive,
203 and this fixes errors like the following on an Ubuntu system when
204 building fwsnort with rpmbuild:
206 rpm: To install rpm packages on Debian systems, use alien. See README.Debian.
207 error: cannot open Packages index using db3 - No such file or directory (2)
208 error: cannot open Packages database in /var/lib/rpm
210 fwsnort-1.0.5 (08/21/2008):
211 - Replaced the bleeding-all.rules file with the emerging-all.rules file.
212 This is because Matt Jonkman now releases his rule sets at
213 http://www.emergingthreats.net/
214 - Restructured perl module paths to make it easy to introduce a "nodeps"
215 distribution of fwsnort that does not contain any perl modules. This
216 allows better integration with systems that already have all necessary
217 modules installed (including the IPTables::ChainMgr and IPTables::Parse
218 modules). The main driver for this work is to make all cipherdyne.org
219 projects easily integrated with distributions based on Debian, and
220 Franck Joncourt has been instrumental in making this process a reality.
221 All perl modules are now placed within the "deps" directory, and the
222 install.pl script checks to see if this directory exists - a separate
223 fwsnort-nodeps-<ver> tarball will be distributed without this directory.
224 The Debian package for fwsnort can then reference the -nodeps tarball,
225 and a new "fwsnort-nodeps.spec" file has been added to build an RPM from
226 the fwsnort sources that does not install any perl modules.
227 - Updated to import perl modules from /usr/lib/fwsnort, but only if this
228 path actually exists in the filesystem. This is similar to the strategy
229 implemented by psad. A new variable FWSNORT_LIBS_DIR was added to the
230 fwsnort.conf to support this.
231 - Added support for multiple Snort rule directories as a comma-separated
232 list for the argument to --snort-rdir.
233 - Moved 'threshold' to the unsupported list since there will be several
234 signatures that use this feature to detect the Dan Kaminsky DNS attack,
235 and fwsnort does not yet support the usage of the iptables --limit
238 fwsnort-1.0.4 (01/22/2008):
239 - (Grant Ferley) Submitted patch to exclude loopback interfaces from
240 iptables allow rules parsing. This behavior can be reversed with the
241 existing --no-exclude-loopback command line argument.
242 - (Grant Ferley) Submitted patch to IPTables::Parse to take into account
243 iptables policy output that contains "0" instead of "all" to represent
245 - (Grant Ferley) Submitted patch to IPTables::Parse to set sport and dport
246 to '0:0' if the protocol is 'all'.
247 - Bugfix to allow negated networks to be specified within iptables allow
248 rules or within the fwsnort.conf file.
249 - Updated install.pl to set the LC_ALL environmental variable to "C". This
250 should fix potential locale problems (this fix was borrowed from the
253 fwsnort-1.0.3 (11/22/2007):
254 - Added --include-re-caseless and --exclude-re-caseless options to have
255 --include-regex and --exclude-regex options match case insensitively.
256 - Major signature update from Bleeding Threats. This update includes a
257 large number of new signatures with PCRE statements, with an emphasis on
258 detecting SQL injection attacks directed at internal webservers from
260 - Added the ability to interpret PCRE statements that include simple
261 string matches separated by ".*" and ".+" as multiple iptables string
262 matches. The only negative consequence in terms of signature detection
263 is that ordering is not preserved; that is, the PCRE "/UNION.+SELECT/"
264 would only match a packet that contains "UNION" followed by "SELECT",
265 whereas an iptables rule that uses a string match for UNION and a
266 separate string match for SELECT would match a packet that contains both
267 strings but in reverse. Typically this is not a huge concern, and the
268 PCRE translation can be disabled with a new option --no-pcre.
269 - Added asn1 keyword to unsupported list.
271 fwsnort-1.0.2 (08/26/2007):
272 - Bugfix to make sure to add in header lengths for depth and offset values
273 since the string match extension compares bytes from the start of the
276 fwsnort-1.0.1 (08/26/2007):
277 - Bugfix for ipt_rule_test() function name.
278 - Added the ability to automatically resolve command paths if any commands
279 cannot be found at the locations specified in the fwsnort.conf file.
281 fwsnort-1.0 (04/19/2007):
282 - Major update to include support for the NFQUEUE and QUEUE targets with
283 new command line options --NFQUEUE and --QUEUE. This changes the
284 default LOG target to the NFQUEUE or QUEUE targets instead, and at the
285 same time builds a parallel Snort rule set in the
286 /etc/fwsnort/snort_rules_queue directory. Every Snort rule in this
287 directory has at least one "content" keyword, which fwsnort uses in the
288 resulting iptables policy. This policy only sends those packets to
289 snort_inline via the NFQUEUE or QUEUE target that match a content field
290 within some Snort rule. The end result is that snort_inline should run
291 faster because the vast majority of packets (which are not malicious)
292 are processed via the Linux kernel without ever having to be sent to
293 userspace for analysis. There is a tradeoff here in terms of attack
294 detection; snort_inline does not receive all packets associated with a
295 stream, so it cannot detect attacks quite as effectively (snort_inline
296 does not have an opportunity to look at reassembled buffers). However,
297 this trade off may be acceptable for large sites where performance is
299 - Bug fix to remove any existing jump rules from the built-in INPUT,
300 OUTPUT, and FORWARD chains before creating a new jump rules. This
301 allows the fwsnort.sh script to be executed multiple times without
302 creating a new jump rule into the fwsnort chains for each execution.
303 - Added the -X command line argument to allow fwsnort to delete all of
304 the fwsnort chains; this emulates the iptables command line argument
306 - Minor output enhancements and bugfixes to give more insight into the
307 translation process. For example, if fwsnort is run in --snort-sid
308 mode but is unable to translate the specified signatures, the user is
309 notified. Also, any existing /etc/fwsnort/fwsnort.sh script is not
310 archived and erased until fwsnort is actually going to write a new one.
311 - Added sid values to iptables comment match string.
312 - Bugfix for iptables string match --from and --to values to skip past
313 packet headers. This is an approximation until a new --payload option
314 can be added to the string match extension.
315 - Added a single iptables rule testing API internally within fwsnort;
316 this adds a measure of consistency and removes some duplicate code.
317 - Added fwsnort mailing list at SourceForge.
319 fwsnort-0.9.0 (03/22/2007):
320 - Added support for multiple content matches since this is supported by
321 iptables. This made a 10% increase in the fwsnort translation rate -
322 about 60% of all Snort-2.3.3 rules can be translated now.
323 - Added emulation for distance and within from previous content match
324 based on --from and --to (string match extension) and the length of
325 the previous pattern.
326 - Added the ability to include the Snort "msg", "classtype", "reference",
327 "priority", and "rev" fields in each iptables rule with the comment
328 match. This can be disabled with a new command line argument
329 --no-ipt-comments. The fwsnort version is also included within this
331 - Added the ability to include the iptables rule number for each rule in
332 the fwsnort chains. This is useful to easily know which iptables rule
333 is being triggered by network traffic (so it can be disabled if
334 necessary). This can be disabled with --no-ipt-rule-nums.
335 - Added the --include-regex and --exclude-regex command line arguments.
336 These arguments allow rules to be included/excluded based on a regular
337 expression supplied on the command line.
338 - Updated to include the original Snort rule as a comment within the
339 fwsnort.sh script without having to use --verbose.
340 - Bugfix to force install of IPTables::Parse since it had been updated in
341 the fwsnort-0.8.2 release.
342 - Changed the IGNORE_ADDR variable to WHITELIST since this name better
343 describes the actual function of this var. Updated to allow multiple
345 - Added the BLACKLIST variable to allow a true blacklist to be
346 instantiated with either the DROP or REJECT targets. The syntax for the
347 BLACKLIST variable is "BLACKLIST <ip or network> <target>", where
348 "target" is either "DROP" or "REJECT".
349 - Added -F and -L command line arguments to flush and list iptables rules.
350 This is similar to the iptables command line args of the same names.
351 - Bugfix to ensure that traffic directed into the INPUT or coming from the
352 OUTPUT chains is treated as going toward or originating from the
353 HOME_NET. After all the HOME_NET variable may contain an internal
354 network but omit the IP assigned to an external interface on the
356 - Added "--log-ip-options" and "--log-tcp-options" to fwsnort LOG rules by
357 default (in the generated fwsnort.sh script). This can be disabled with
358 --no-log-ip-opts and --no-log-tcp-opts arguments on the fwsnort command
360 - Added the ability to include --log-tcp-sequence to LOG rules in
361 fwsnort.sh with a new argument --ipt-log-tcp-seq on the fwsnort command
363 - Updated to handle negative string matches with "--string ! <string>".
364 - Updated to output all unsupported options of the /var/log/fwsnort.log
365 file to assist in the development of addition keyword emulation.
367 fwsnort-0.8.2 (02/17/2007):
368 - Updated to newer IPTables::Parse module that uses the array of hash
369 references method of returning iptables policy data.
370 - Added --Dump-ipt and --Dump-snort rules to allow iptables policy and
371 Snort rules to be dumped to STDOUT.
372 - Added bleeding-all.rules file from http://www.bleedingsnort.com/
373 - Added patches/bm_goodshift_fix.patch patch file that fixes an
374 initialization bug in the Boyer-Moore text search implementation in the
375 kernel (linux-2.6.x/lib/ts_bm.c) which caused slightly repetitive
376 patterns to only match at specific offsets with the string match
378 - Bugfix to ensure that a depth cannot be less that an offset (these
379 translate to the --to and --from command line arguments to iptables).
380 - Bugfix to escape '$' chars in iptables search strings.
381 - Added cd_rpmbuilder to make it easy to automatically build RPM files of
383 - Added support for the iptables OUTPUT chain.
384 - Added the ChangeLog.svn file so that all of the changed files and
385 corresponding svn commit messages can be viewed (this file is built from
388 fwsnort-0.8.1 (11/11/2005):
389 - Updated to use the string match extension "--algo bm" argument if
390 fwsnort is being run on a 2.6.14 (or greater) kernel.
391 - Updated to handle the Snort "offset" and "depth" keywords via the
392 --from and --to options to the string match extension in the 2.6.14
394 - Created RPM package of fwsnort.
395 - Minor man page updates.
397 fwsnort-0.8.0 (07/11/2005):
398 - Completely re-structured fwsnort w.r.t. how it creates Netfilter
399 chains. There are no longer any per-interface chains (this
400 greatly simplifies the Netfilter chains).
401 - Added three new chains "FWSNORT_INPUT_ESTAB", "FWSNORT_OUTPUT_ESTAB"
402 and "FWSNORT_FORWARD_ESTAB" to which tcp connections in the
403 ESTABLISHED state are jumped. This allows fwsnort to use the
404 Netfilter tcp connection tracking mechanism to ignore Stick and Snot
405 style attacks (similar to the flow:established Snort rule option).
406 - Added true variable resolution (i.e. HTTP_SERVERS -> HOME_NET -> any)
407 for the Snort rule header. This directly emulates the behavior of
409 - Added IP protocol support in the translation of the Snort rule
410 header. The Snort rule translation rate is now at about 53% for
412 - Bugfix for ipopts Snort option (several arguments are not supported
413 by the ipv4options extension).
414 - Better tests for Netfiler TTL, TOS, and ipv4options matches.
415 - Replaced IGNORE_IP and IGNORE_NET keywords with single IGNORE_ADDR
416 keywork in fwsnort.conf.
417 - Updated to correctly handle ICMP type and code rules (itype and
418 icode Snort options) via the "--icmp-types type/code" convention.
419 - Added support for emulating the dsize Snort option through the use
420 of the Netfilter length match.
421 - Changed --type argument to --include-types and added list support
422 so it accepts things like "chat,ddos". Also added --exclude-types
423 command line argument.
424 - Added support for multiple sid's (as a comma separated list) in
425 --snort-sids argument. Also added --exclude-sids argument to remove
426 a list of sids from translation.
427 - Added support for the replace Snort option (originally from the
428 Snort_inline project). The requires the replace string patch.
429 - Added support for restricting jump rules to a list of interfaces
430 via the --restrict-intf argument.
431 - Added kernel patch to extend the maximum packet length that the
432 string match extension will attempt to search from 1024 bytes to
433 2048 bytes (requires a kernel re-compile of course).
434 - Added DRP and REJ strings to logging prefix if --ipt-drop or
435 --ipt-reject is specified.
436 - Added snortspoof.pl, which is a simple perl script that emulates
437 the Stick and Snot tools.
439 fwsnort-0.7.0 (06/05/2005):
440 - Added support for the Snort pass action by using the ACCEPT target.
441 - Added support for the Snort log action by using the ULOG target
442 (which can then log the packet via the pcap writer).
443 - Added support for all fwsnort alerts to be logged via the ULOG
444 target instead of the LOG target.
445 - Added support for the "resp" keyword to allow it to drive the
446 Netfilter argument to the REJECT target.
447 - Added "pcre" to the unsupported list... this knocks the fwsnort
448 translation rate down to about 50% for Snort-2.3 rules (pcre is
450 - Added "priority" and "rev" to comment lines.
452 fwsnort-0.6.5 (03/20/2005):
453 - Updated to not attempt to download Snort rules from snort.org
454 because the rules are no longer available for automatic downloads
455 - Changed the install.pl script and the --update-rules mode for
456 fwsnort to download the latest signature set from
457 http://www.bleedingsnort.com/.
458 (Snort.org is now offering pay-service around their rule sets).
459 - Added signature test for the "flowbits" keyword.
461 fwsnort-0.6.4 (12/18/2004):
462 - Updated to Snort-2.3 rules. FWSnort can convert a total of 1710
463 out of 2559 total Snort-2.3 rules.
464 - Updated to new Snort rules download link for --update-rules mode:
465 http://www.snort.org/dl/rules/snortrules-snapshot-CURRENT.tar.gz
466 - Updated to standard [+], [-], and [*] prefixes for info, warning
467 and die logging messages.
468 - Added --replace-string patches.
470 fwsnort-0.6.3 (04/04/2004):
471 - Added ignore functionality for both IPs and networks
472 - Split --ipt-block into --ipt-drop and --ipt-reject to add DROP
473 or REJECT rules respectively.
474 - Added --add-deleted option to allow rules in the "deleted.rules"
477 fwsnort-0.6.2 (03/19/2004):
478 - Added --internal-net and --dmz-net options so that internal and
479 dmz networks can be manually specified without having to parse
480 the output of ifconfig. This is most useful for running fwsnort
481 on a linux system that is acting as a bridge where no ip addresses
482 are assigned to the interfaces.
483 - Bugfix for missing icmp-port-unreachable rejects for UDP packets.
485 fwsnort-0.6.1 (02/01/2004):
486 - Bugfix for not adding dmz interface rules to INPUT chain.
487 - Bugfix for not getting the DMZ interface network.
489 fwsnort-0.6 (01/04/2004):
490 - Speed increase and disk access decrease by writing iptables
491 commands to the iptables script only after all lines have been
493 - Bugfix for DMZ interface.
494 - Bugfix for multiple ip_proto fields.
495 - Removed the ip protocol as an allowed protocol for translation.
496 - Bugfix for negated port numbers.
497 - Removed "<-" rule direction since not even snort supports this.
498 - Fixed snort rule updates from snort.org.
500 fwsnort-0.5 (12/21/2003):
501 - Added "-j REJECT --reject-with tcp-reset" for tcp sessions
502 if the --ipt-block option is specified.
503 - Added ability to download latest snort rules from snort.org.
504 - Added --no-ipt-jumps.
505 - Added better checking for iptables build characteristics such
506 as the LOG target and wether or not the ipv4options extension
508 - Added config preservation code from psad in install.pl.