releasenotes.txt (shorewall6-lite-5.2.3.6.tar.bz2) | : | releasenotes.txt (shorewall6-lite-5.2.6.tar.bz2) | ||
---|---|---|---|---|
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | |||
S H O R E W A L L 5 . 2 . 3 . 6 | S H O R E W A L L 5 . 2 . 6 | |||
------------------------------- | ------------------------------- | |||
F E B R U A R Y 1 6 , 2 0 2 0 | J U L Y 0 4 , 2 0 2 0 | |||
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | |||
I. PROBLEMS CORRECTED IN THIS RELEASE | I. PROBLEMS CORRECTED IN THIS RELEASE | |||
II. KNOWN PROBLEMS REMAINING | II. KNOWN PROBLEMS REMAINING | |||
III. NEW FEATURES IN THIS RELEASE | III. NEW FEATURES IN THIS RELEASE | |||
IV. MIGRATION ISSUES | IV. MIGRATION ISSUES | |||
V. PROBLEMS CORRECTED AND NEW FEATURES IN PRIOR RELEASES | V. PROBLEMS CORRECTED AND NEW FEATURES IN PRIOR RELEASES | |||
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | |||
I. P R O B L E M S C O R R E C T E D I N T H I S R E L E A S E | I. P R O B L E M S C O R R E C T E D I N T H I S R E L E A S E | |||
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | |||
5.2.3.6 | 1) This release includes defect repair up through Shorewall version | |||
5.2.5.2. | ||||
1) When both Docker containers and Libvirt VMs were in use, 'shorewall | 2) When compiling for export, the compiler generates a firewall.conf | |||
start' could fail as follows: | file which is later installed on the remote firewall system as | |||
${VARDIR}/firewall.conf. Previously, the CLI on that firewall was | ||||
not processing the file, resulting in some features not being | ||||
available: | ||||
- Default values for VERBOSITY, LOGFILE, LOGFORMAT, PATH, | ||||
SHOREWALL_SHELL, SUBSYSLOCK, RESTOREFILE, RESTART, | ||||
DYNAMIC_BLACKLIST and PAGER are not supplied. | ||||
Running /sbin/iptables-restore --wait 60... | - scfilter file supplied at compile time. | |||
iptables-restore v1.8.3 (legacy): Couldn't load target | ||||
`LIBVIRT_PRT':No such file or directory | ||||
Error occurred at line: 19 | ||||
Try `iptables-restore -h' or 'iptables-restore --help' for more informatio | ||||
n. | ||||
ERROR: /sbin/iptables-restore --wait 60 Failed. | ||||
That has been corrected. | ||||
5.2.3.5 | - dumpfilter file supplied at compile time. | |||
1) A typo in the FTP documentation has been corrected. | ||||
2) The recommended mss setting when using IPSec with ipcomp has been | ||||
corrected. | ||||
3) A number of incorrect links in the manpages have been corrected. | ||||
4) The 'bypass' option is now allowed when specifying an NFQUEUE | ||||
policy. Previously, specifying that option resulted in an error. | ||||
5) Corrected IPv6 Address Range parsing. | ||||
Previously, such ranges were required to be of the form [<addr1>-<addr2>] | ||||
rather than the more standard form [<addr1>]-[<addr2>]. In the snat file | ||||
(and in nat actions), the latter form was actually flagged as an error | ||||
while in other contexts, it resulted in a less obvious error being | ||||
raised. | ||||
6) The manpages have been updated to refer to https://shorewall.org | ||||
rather than http://www.shorewall.org. | ||||
5.2.3.4 | ||||
1) If multi-queue NFQUEUE (e.g., NFQUEUE(0:1) ) WAS used as a policy, | ||||
an error such as the following was previously incorrectly raised. | ||||
ERROR: Invalid policy (NFQUEUE(0) /etc/shorewall/policy (line | ||||
15) | ||||
That has been corrected such that no error is raised. | ||||
2) If multi-queue NFQUEUE( e.g., NFQUEUE(0:1,bypass) ) was passed to a | ||||
macro, an error such as the following was previously incorrectly | ||||
raised: | ||||
ERROR: Invalid ACTION (PARAM:1c,bypass))) | ||||
/usr/share/shorewall/macro.BitTorrent (line 12) | ||||
from /etc/shorewall/rules (line 40) | ||||
Now, the NFQUEUE action is correctly substituted for PARAM in | ||||
the Macro body. | ||||
3) If shorewall[6].conf didn't set AUTOMAKE, the 'update' command | ||||
previously produced a new file with 'AUTOMAKE=Yes'. This resulted | ||||
in an unexpected change of behavior. Now, the new file contains | ||||
'AUTOMAKE=No', which preserves the pre-update behavior. | ||||
4) Shorewall-rules(5) incorrectly stated that the 'bypass' option to | ||||
NFQUEUE causes the rule to be silently bypassed if there is no | ||||
application attached to the queue. The actual behavior is that the | ||||
rule acts like ACCEPT in that case. Shorewall-rules(5) has been | ||||
corrected. | ||||
5.2.3.3 | ||||
1) Previously, if an ipset was specified in an SPORT column, the | ||||
compiler would raise an error similar to: | ||||
ERROR: Invalid ipset name () /etc/shorewall/rules (line 44) | ||||
That has been corrected. | That has been corrected. | |||
5.2.3.2 | 3) A bug in iptables (see | |||
https://git.netfilter.org/iptables/commit/?id=d1555a0906e35ba8d170613d5a43da | ||||
1) Shorewall 5.2 automatically converts and existing 'masq' file to an | 64e527dbe1) | |||
equivalent 'snat' file. Regrettably, Shorewall 5.2.3 broke that | prevents the '--queue-cpu-fanout' option from being applied unless | |||
automatic update, such that the following error message was issued: | that option is the last one specified. Unfortunately, Shorewall | |||
places the '--queue-bypass' option last if that option is also | ||||
Use of uninitialized value $Shorewall::Nat::raw::currentline in | specified. | |||
pattern match (m//) at /usr/share/shorewall/Shorewall/Nat.pm | ||||
line 511, <$currentfile> line nnn. | This release works around this issue by ensuring that the | |||
'--queue-cpu-fanout' option appears last. | ||||
and the generted 'masq' file contains only initial comments. | ||||
4) The -D 'compile', 'check', 'reload' and 'Restart' option was | ||||
That has been corrected. | previously omitted from the output of 'shorewall help'. It is now | |||
included. As part of this change, an incorrect and conflicting | ||||
5.2.3.1 | description of the -D option was removed from the 'remote-restart' | |||
section of shorewall(8). | ||||
1) An issue in the implementation of policy file zone exclusion, | ||||
released in 5.2.3 has been resolved. In the original release, | 5) Previously, when EXPAND_POLICIES=No, chains that enforced ACCEPT | |||
if more than one zone was excluded, then the following error was | policies were not completely optimized by optimize level 2 (ACCEPT | |||
raised: | rules preceding the final unconditional ACCEPT were not | |||
deleted). That has been corrected such that these rules are now | ||||
ERROR: 'all' is not allowed in a source zone list | optimized. | |||
etc/shorewall/policy (line ...) | ||||
5.2.3 | ||||
1) To prevent a helper kernel module from being loaded, it was | ||||
previously necessary to list both its current name and its | ||||
pre-kernel-2.6.20 name in the DONT_LOAD option in | ||||
/etc/shorewall[6].conf. For example, to prevent nf_conntrack_sip | ||||
from being loaded, it was necessary to also list ip_conntrack_sip | ||||
in DONT_LOAD. That is no longer necessary. | ||||
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | |||
I I. K N O W N P R O B L E M S R E M A I N I N G | I I. K N O W N P R O B L E M S R E M A I N I N G | |||
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | |||
1) On systems running Upstart, shorewall-init cannot reliably secure | 1) On systems running Upstart, shorewall-init cannot reliably secure | |||
the firewall before interfaces are brought up. | the firewall before interfaces are brought up. | |||
2) The 'enable', 'reenable' and 'disable' commands do not work | 2) The 'enable', 'reenable' and 'disable' commands do not work | |||
correctly in configurations with USE_DEFAULT_RT=No and optional | correctly in configurations with USE_DEFAULT_RT=No and optional | |||
providers listed in the DUPLICATE column. | providers listed in the DUPLICATE column. | |||
3) While the 'ip' utility now accepts IPv6 routes with multiple | 3) While the 'ip' utility now accepts IPv6 routes with multiple | |||
'nexthop' destinations, these routes are not balanced. They are | 'nexthop' destinations, these routes are not balanced. They are | |||
rather instantiated as a sequence of single routes with different | rather instantiated as a sequence of single routes with different | |||
metrics. Furthermore, the 'ip route replace' command fails on | metrics. Furthermore, the 'ip route replace' command fails on | |||
such routes. Beginning with Shorewall6 5.0.15, the generated script | such routes. Beginning with Shorewall6 5.0.15, the generated script | |||
uses a "delete..add.." sequence on these routes rather than a | uses a "delete..add.." sequence on these routes rather than a | |||
single "replace" command. | single "replace" command. | |||
4) On Debian-derived systems, when DOCKER=Yes, the 'systemctl restart | ||||
shorewall' command looses Docker rules. | ||||
Workaround (courtesy of J Cliff Armstrong): | ||||
Type (as root): | ||||
`systemctl edit shorewall.service`. | ||||
This will open the default terminal editor to a blank file in | ||||
which you can paste the following: | ||||
[Service] | ||||
# reset ExecStop | ||||
ExecStop= | ||||
# set ExecStop to "stop" instead of "clear" | ||||
ExecStop=/sbin/shorewall $OPTIONS stop | ||||
Then type `systemctl daemon-reload` to activate the changes. This | ||||
change will survive future updates of the shorewall package from apt | ||||
repositories. The override file itself will be saved to | ||||
`/etc/systemd/system/shorewall.service.d/`. | ||||
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | |||
I I I. N E W F E A T U R E S I N T H I S R E L E A S E | I I I. N E W F E A T U R E S I N T H I S R E L E A S E | |||
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | |||
1) Zone exclusion (e.g., "all!z2,z2,...") is now supported in the | 1) The 'actions' file now supports a 'dport' option to go along with | |||
policy file. | the 'proto' option. Using these two options can now restrict an | |||
action to a particular service. See shorewall-actions(5) for | ||||
details. | ||||
2) With the availability of zone exclusion in the rules file, 'all[+]-' | Example limiting net->all SSH connections to 3/min per source IP: | |||
and 'any[+]-' are equivalent to 'all[+]!$FW' and 'any[+]!$FW' | ||||
respectively. Beginning with this release, the former are | ||||
deprecated in favor of the latter and will result in a warning | ||||
message, if used. | ||||
3) Internal documentaton of the undocumented 'test' parameter to | /etc/shorewall/actions: | |||
compiler.pl has been added (it is used by the regression test | ||||
library to suppress versions and date/times from the generated | ||||
script). | ||||
4) The LOAD_HELPERS_ONLY option has been removed from | SSHLIMIT proto=tcp,\ # Blacklist overzealous SSHers | |||
shorewall[6].conf. Hereafter, Shorewall[6] will behave as if | dport=ssh | |||
LOAD_HELPERS_ONLY=Yes had been specified. | ||||
/etc/shorewall/action.SSLHIMIT | ||||
ACCEPT { RATE=s:3/min:3 } | ||||
BLACKLIST:$LOG_LEVEL:net_SSHLIMIT | ||||
/etc/shorewall/rules: | ||||
SSHLIMIT net all | ||||
2) The change to 'show actions' implemented in 5.2.5.1 (see below) | ||||
has been further extended. | ||||
- "?IF...?ELSE...?ENDIF" sequences are now shown in the output | ||||
- Continuation lines are now shown in the output so that all | ||||
action options are now displayed | ||||
- If an action appears in both /usr/share/shorewall[6]/actions.std | ||||
and in /etc/shorewall[6]/actions, then the entry in the actions | ||||
file is shown followed by the entry in the actions.std file. | ||||
3) To emphasize that it specifies destination ports, the PORT column | ||||
in the snat file has been renamed DPORT. Beginning with this | ||||
release, both 'port' and 'dport' are accepted in the alternative | ||||
input format. | ||||
4) The snat file now supports ?FORMAT 2, which adds an SPORT (source | ||||
port) column immediately to the right of the DPORT (destination | ||||
port) column. | ||||
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | |||
I V. M I G R A T I O N I S S U E S | I V. M I G R A T I O N I S S U E S | |||
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | |||
If you are migrating from Shorewall 4.6.x or earlier, please see | If you are migrating from Shorewall 4.6.x or earlier, please see | |||
http://www.shorewall.org/pub/shorewall/5.0/shorewall-5.0.15/releasenotes.txt | http://www.shorewall.org/pub/shorewall/5.0/shorewall-5.0.15/releasenotes.txt | |||
Immediately after installing Shorewall 5.2.x, we recommend that you run | Immediately after installing Shorewall 5.2.x, we recommend that you run | |||
'shorewall[6] update'. This command will handle many of the migration | 'shorewall[6] update'. This command will handle many of the migration | |||
skipping to change at line 279 | skipping to change at line 254 | |||
http://www.shorewall.org/Shorewall-5.html#idp41228128. | http://www.shorewall.org/Shorewall-5.html#idp41228128. | |||
This issue is not handled by 'shorewall update' and must be | This issue is not handled by 'shorewall update' and must be | |||
corrected manually. | corrected manually. | |||
4) The Netfilter team have removed support for the rawpost table, so | 4) The Netfilter team have removed support for the rawpost table, so | |||
Shorewall no longer supports features requiring that table | Shorewall no longer supports features requiring that table | |||
(stateless netmapping in the netmap file). The good news is that, | (stateless netmapping in the netmap file). The good news is that, | |||
since kernel 3.7, Netfilter supports stateful IPv6 network mapping | since kernel 3.7, Netfilter supports stateful IPv6 network mapping | |||
which is now also supported in Shorewall6 (see | which is now also supported in Shorewall6 (see | |||
shorewall6-netmap(5)). | shorewall-netmap(5)). | |||
This issue is not handled by 'shorewall update' and must be | This issue is not handled by 'shorewall update' and must be | |||
corrected manually. | corrected manually. | |||
5) The (undocumented) Makefiles haven't been maintained for many | 5) The (undocumented) Makefiles haven't been maintained for many | |||
releases and have been removed. | releases and have been removed. | |||
6) Beginning with Shorewall 5.1.2, The DROP_DEFAULT, REJECT_DEFAULT, | 6) Beginning with Shorewall 5.1.2, The DROP_DEFAULT, REJECT_DEFAULT, | |||
etc. options may now specify a comma-separated list of actions | etc. options may now specify a comma-separated list of actions | |||
rather than just a single action. The actions are invoked in the | rather than just a single action. The actions are invoked in the | |||
skipping to change at line 567 | skipping to change at line 542 | |||
message, if used. | message, if used. | |||
9) Beginning with Shorewall 5.2.3, the LOAD_HELPERS_ONLY option in | 9) Beginning with Shorewall 5.2.3, the LOAD_HELPERS_ONLY option in | |||
shorewall[6].conf has been removed, and the behavior is as if | shorewall[6].conf has been removed, and the behavior is as if | |||
LOAD_HELPERS_ONLY=Yes had been specified. 'shorewall[6] update' | LOAD_HELPERS_ONLY=Yes had been specified. 'shorewall[6] update' | |||
will remove the option from shorewall[6].conf. | will remove the option from shorewall[6].conf. | |||
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | |||
V. N O T E S F R O M O T H E R 5 . 2 R E L E A S E S | V. N O T E S F R O M O T H E R 5 . 2 R E L E A S E S | |||
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | |||
N E W F E A T U R E S I N 5 . 2 . 5 | ||||
---------------------------------------------------------------------------- | ||||
1) Prior to this release, when a 'timeout' value was specified in the | ||||
DYNAMIC_BLACKLIST setting, the dynamic-blacklisting ipset was | ||||
created with this default timeout. This had the unfortunate | ||||
disadvantage that it was not possible to add permanent entries | ||||
into the ipset. Even if 'timeout 0' was specified in a 'blacklist' | ||||
command, the entry would still age out of the ipset after the | ||||
default timeout had elapsed. | ||||
Beginning with this release, the dynamic-blacklisting ipset is | ||||
created with 'timeout 0'. When an address is added to the set, | ||||
either by BLACKLIST policy enforcement, by the BLACKLIST action, | ||||
or by the CLI 'blacklist' command (where no 'timeout' is | ||||
specified), the default timeout is applied to the new entry. | ||||
Once you have upgraded to this version of Shorewall, you can | ||||
convert your existing dynamic-blacklisting ipset (with a non-zero | ||||
default timeout) to have a default timeout of zero as follows: | ||||
a) If RESTART=restart in shorewall[6].conf, then simply | ||||
'shorewall[6] restart'. | ||||
b) Otherwise, 'shorewall[6] stop && shorewall[6] start'. | ||||
2) Previously, when an ADD or DEL rule specified logging, the entire | ||||
action (e.g. 'ADD(+NET_BL:src:7200)') was included in the log | ||||
message. This could easily lead to a "Log prefix shortened..." | ||||
warning during compilation. | ||||
Beginning with this release, such log messages will contain only | ||||
the basic action ('ADD' or 'DEL') and the set name (e.g., | ||||
'ADD(NET_BL)') to reduce the liklihood of producing the warning. | ||||
3) Traditionally, Shorewall has logged state change messages using | ||||
the 'user' syslog facility. Beginning with this release, these | ||||
messages will be logged using the 'daemon' facility to more | ||||
accurately reflect that these messages relate to a service. | ||||
4) The DYNAMIC_BLACKLIST setting now allows a 'log' option to be | ||||
specified for ipset-based blacklisting. When this option is given, | ||||
successful 'blacklist' and 'allow' commands generate a 'daemon.info' | ||||
log message. | ||||
5) When ipset-based dynamic blacklisting is enabled, the generated | ||||
ruleset has traditionally refreshed the 'timeout' of an ipset | ||||
entry when a packet from blacklisted host is received. This has | ||||
the unfortunate side effect that it can change a permanent entry | ||||
(timeout 0) to a temporary (one with non-zero timeout). Beginning | ||||
with this release, this timeout refresh can be avoided by | ||||
specifying the 'noupdate' option in the DYNAMIC_BLACKLIST | ||||
setting. | ||||
6) To allow Shorewall's ipset-based blacklisting to play nicely with | ||||
fail2ban, the 'blacklist!' CLI command has been added. | ||||
The command | ||||
blacklist! <ip> | ||||
is equivalent to | ||||
blacklist <ip> timeout 0 | ||||
thus allowing 'blacklist!' to be specified as the 'blocktype' in | ||||
/etc/fail2ban/actions.d/shorewall.conf. | ||||
See https://shorewall.org/blacklisting_support.htm#fail2ban for | ||||
further information about using Shorewall dynamic blacklisting | ||||
with fail2ban. | ||||
7) Previously, when a zone name was too long, the resulting error | ||||
message was "Invalid zone name (<name>)". To make the cause of | ||||
the failure clearer, the message is now "Zone name (<name>) too | ||||
long". | ||||
---------------------------------------------------------------------------- | ||||
P R O B L E M S C O R R E C T E D I N 5 . 2 . 5 | ||||
---------------------------------------------------------------------------- | ||||
5.2.5.1 | ||||
1) The change in 5.2.5 base which changed the 'user' facility to the | ||||
'daemon' facility in Shorewall syslog messages did not change the | ||||
messages with severity 'err'. That has been corrected such that | ||||
all syslog messages now use the 'daemon' facility. | ||||
2) The actions.std file contains "?IF...?ELSE...?ENDIF" sequences | ||||
that provide different action options depending on the availabilty | ||||
of certain capabilities. This has resulted in the Broadcast and | ||||
Multicast options being listed twice in the output of | ||||
"shorewall[6] show actions". Beginning with this release, this | ||||
duplication is eliminated. Note, however, that the options shown | ||||
will be incomplete if they were continued onto another line, and | ||||
may be incorrect for Broadcast and Multicast. | ||||
3) A typo in shorewall-providers(5) has been corrected. | ||||
5.2.5 Base | ||||
1) Previously, Shorewall-init installed a 'shorewall' script in | ||||
/etc/network/if-down.d on Debian and derivatives. This script was | ||||
unnecessary and required Debian-specific code in the generated | ||||
firewall script. The Shorewall-init script is no longer installed | ||||
and the generated firewall script is now free of | ||||
distribution-specific code. | ||||
2) Also on Debian and derivatives, Shorewall-init installed | ||||
/etc//NetworkManager/dispatcher.d/01-shorewall which was also | ||||
unnecessary. Beginning with this release, that file is no longer | ||||
installed. | ||||
3) Previously, if the dynamic-blacklisting default timeout was set in | ||||
a variable in the params file and the variable was used in setting | ||||
DYNAMIC_BLACKLIST, then the 'allow' command would fail with | ||||
the message: | ||||
ERROR: Invalid value (ipset-only,disconnect,timeout=) for | ||||
DYNAMIC_BLACKLIST | ||||
That has been corrected. | ||||
4) When EXPAND_POLICIES=No in shorewall[6].conf, policies in complex | ||||
rulesets are enforced in chains such as 'net-all' and | ||||
'all-all'. Previously, these chains included redundant | ||||
state-oriented rules. In addition to being redundant. these rules | ||||
could actually break complex IPv6 configurations. The extra rules are | ||||
now omitted. | ||||
---------------------------------------------------------------------------- | ||||
N E W F E A T U R E S I N 5 . 2 . 4 | ||||
---------------------------------------------------------------------------- | ||||
1) Previously, Shorewall's Docker support assumed that the default | ||||
Docker Bridge (docker0) was being used. Beginning with this | ||||
release, the DOCKER_BRIDGE option in Shorewall.conf allows an | ||||
arbitrary name to be assigned to the bridge. In particular, when | ||||
CNI is being used, DOCKER_BRIDGE=cni0 is the appropriate setting. | ||||
2) The CLI keywords 'debug' and 'trace' have been replaced by -D and | ||||
-T options respectively (e.g., 'shorewall trace reload' is now | ||||
'shorewall -T reload'). Like the keywords, only one of these | ||||
options can be active at a time; if both are entered, only the | ||||
last one is activated. A similar change has been made to the | ||||
generated script. | ||||
The -T option (formerly 'trace') now applies only to shell-level | ||||
tracing in the CLI and generated script. Those commands that | ||||
invoke the rules compiler now accept a -D command option which | ||||
causes the compiler to generate debugging information (e.g., | ||||
'shorewall check -D'). | ||||
The 'nolock' keyword is now deprecated in favor of the -N | ||||
option (e.g., 'shorewall nolock reload' becomes 'shorewall -N | ||||
reload'). | ||||
See shorewall(8) for details. | ||||
3) Within the source code and documentation, 'shorewall.net' has been | ||||
replaced by 'shorewall.org'. | ||||
---------------------------------------------------------------------------- | ||||
P R O B L E M S C O R R E C T E D I N 5 . 2 . 4 | ||||
---------------------------------------------------------------------------- | ||||
5.2.4.4 | ||||
1) When DYNAMIC_BLACKLIST=ipset... or when SAVE_IPSETS=Yes in | ||||
shorewall[6].conf, 'shorewall[6] start' could hang when 5.2.4.3 | ||||
was installed. That has been corrected. | ||||
2) When 5.2.4.3 was installed, 'shorewall[6] start' would not | ||||
automatically create dynamic blacklisting ipsets. That has been | ||||
corrected. | ||||
5.2.4.3 | ||||
1) When interfaces was managed by Network Manager and IFUPDOWN=1 was | ||||
specified in the Shorewall-init configuration file, when an optional | ||||
interface was brought up, enabling the interface in | ||||
Shorewall6[-lite] could fail. | ||||
Correcting this issue involves corrected code in this release of | ||||
Shorewall, but also may require a configuration change in | ||||
/etc/shorewall6/interfaces. The change in Shorewall makes the | ||||
generated script honor the 'wait=<seconds>' specification in | ||||
/etc/shorewall6/interfaces when executing the 'enable' command. | ||||
If there are optional interfaces that do not specify 'wait=...', | ||||
then the interfaces file must be altered to include such | ||||
specifications. | ||||
2) An unnecessary test during command initialization in the generated | ||||
script has been eliminated. | ||||
3) Previously, 'shorewall[6] stop' or 'shorewall[6] clear' would | ||||
create the dynamic blacklist ipset if it did not exist. Creation | ||||
of the ipset is now defered until the next 'start'. | ||||
4) Previously, 'shorewall[6] start' would delete all corresponding | ||||
ipsets before restoring. It now deletes only those sets that will | ||||
be restored, thus allowing SAVE_IPSETS to be specified in the | ||||
Shorewall-init configuration when ipset-based dynamic blacklisting | ||||
is also enabled. Previously, if any additional ipsets were used, | ||||
it was necessary to set SAVE_IPSETS=Yes in shorewall[6].conf as | ||||
well. | ||||
5) Previously, 'Shorewall-init start' restored ipsets after stopping | ||||
the firewalls, precluding use of ipsets in the stoppedrules file. | ||||
Shorewall-init now restores the ipsets before stopping the | ||||
firewalls. | ||||
6) Optimize level 16 has been speeded up by an order of magnitude. | ||||
Tests using a large user-supplied configuration showed compilation | ||||
time with OPTIMIZE=all was reduced from 22min 40 seconds to 21.5 | ||||
seconds. | ||||
5.2.4.2 | ||||
1) This release corrects two problems associated with Debian | ||||
Shorewall-init when IFUPDOWN=1 in the Shorewall-init | ||||
configuration file (/etc/default/shorewall-init): | ||||
a) Down events were ignored when Network Manager was being used. | ||||
b) Up events were processed twice when a dual-stack interface | ||||
was brought up. | ||||
Both problems have been corrected. To make the fixes effective, | ||||
it is necessary to recompile the firewall script (shorewall[6] | ||||
compile, start, restart or reload). | ||||
5.2.4.1 | ||||
1) The web site and documentation have been improved to correct some | ||||
invalid links in the manpages (including the manpages released | ||||
in Shorewall components) and to link directly to the current | ||||
website at https://shorewall.org. (Tuomo Soini) | ||||
2) Cautions regarding SAVE_IPSETS have been added to the ipsets | ||||
article. | ||||
3) OpenSuSE users running systemd have complained that the firewalls | ||||
are stopped after a Shorewall product upgrade. The problem is that | ||||
OpenSuSE restarts all running products that have been | ||||
upgraded. Recall that 'systemctl restart' is equivalent to | ||||
'systemctl stop && systemctl start'. But starting Shorewall-init | ||||
results in the firewall products specified in the Shorewall-init | ||||
config file to be stopped. To address this issue, Shorewall-init | ||||
will now ignore 'start' and 'stop' commands, for running firewalls | ||||
(Tuomo Soini). | ||||
4) On Redhat-based system and on OpenSuSE, extraneous Shorewall-init | ||||
log messages regarding invalid commands were being issued. These | ||||
harmless messages are now suppressed (Tuomo Soini). | ||||
5.2.4 Final | ||||
1) Previously, when a Shorewall6 firewall was placed into the | ||||
'stopped' state, ICMP6 packets required by RFC 4890 were not | ||||
automatically accepted by the generated ruleset. | ||||
Beginning with this release, those packets are automatically | ||||
accepted. | ||||
2) Previously, the output of 'shorewall[6] help' displayed the | ||||
superseded 'load' command. That text has been deleted. | ||||
3) The QOSExample.html file in the documentation and on the web site | ||||
previously showed tcrules content for the /etc/shorewall/mangle | ||||
file (recall that 'mangle' superseded 'tcrules'). That page has | ||||
been corrected. | ||||
4) The 'Starting and Stopping' and 'Configuration file basics' | ||||
documents have been updated to align them with the current product | ||||
behavior. | ||||
5) The 'ipsets' document has been updated to clarify the use of | ||||
ipsets in the stoppedrules file. | ||||
---------------------------------------------------------------------------- | ||||
N E W F E A T U R E S I N 5 . 2 . 3 | ||||
---------------------------------------------------------------------------- | ||||
1) Zone exclusion (e.g., "all!z2,z2,...") is now supported in the | ||||
policy file. | ||||
2) With the availability of zone exclusion in the rules file, 'all[+]-' | ||||
and 'any[+]-' are equivalent to 'all[+]!$FW' and 'any[+]!$FW' | ||||
respectively. Beginning with this release, the former are | ||||
deprecated in favor of the latter and will result in a warning | ||||
message, if used. | ||||
3) Internal documentaton of the undocumented 'test' parameter to | ||||
compiler.pl has been added (it is used by the regression test | ||||
library to suppress versions and date/times from the generated | ||||
script). | ||||
4) The LOAD_HELPERS_ONLY option has been removed from | ||||
shorewall[6].conf. Hereafter, Shorewall[6] will behave as if | ||||
LOAD_HELPERS_ONLY=Yes had been specified. | ||||
---------------------------------------------------------------------------- | ||||
P R O B L E M S C O R R E C T E D I N 5 . 2 . 3 | ||||
---------------------------------------------------------------------------- | ||||
5.2.3.7 | ||||
1) When DOCKER=Yes, if both the DOCKER-ISOLATE and | ||||
DOCKER-ISOLATE-STAGE-1 existed then the DOCKER-ISOLATE-STAGE-* | ||||
chains were not preserved through shorewall state changes. | ||||
That has been corrected so that both chains are preserved if | ||||
present. | ||||
2) Previously, the compiler always detected the OLD_CONNTRACK_MATCH | ||||
capability as being available in IPv6. When OLD_CONNTRACK_MATCH | ||||
was available, the compiler also mishandled inversion ('!') in the | ||||
ORIGDEST columns, leading to an assertion failure: | ||||
Shorewall::Config::fatal_error("Internal error in | ||||
Shorewall::Chains::set_rule_option at /usr/"...) called at | ||||
/usr/share/shorewall/Shorewall/Config.pm line 1619 | ||||
Both the incorrect capability detection and the mishandled | ||||
inversion have been corrected. | ||||
3) During 'enable' processing, if address variables associated with | ||||
the interface have values different than those when the firewall | ||||
was last started/restarted/reloaded, then a 'reload' is performed | ||||
rather than a simple 'enable'. The logic that checks for those | ||||
changes was incorrect in some configurations, leading to unneeded | ||||
reload operations. That has been corrected. | ||||
4) When MANGLE_ENABLED=No in shorewall[6].conf, some features | ||||
requiring use of the mangle table can be allowed, even though the | ||||
mangle table is not updated. That has been corrected such that use | ||||
of such features will raise an error. | ||||
5) When an invocation of the IfEvent(...,reset) action was invoked, | ||||
the compiler previously emitted a spurious "Resetting..." message. | ||||
That message has been suppressed. | ||||
5.2.3.6 | ||||
1) When both Docker containers and Libvirt VMs were in use, 'shorewall | ||||
start' could fail as follows: | ||||
Running /sbin/iptables-restore --wait 60... | ||||
iptables-restore v1.8.3 (legacy): Couldn't load target | ||||
`LIBVIRT_PRT':No such file or directory | ||||
Error occurred at line: 19 | ||||
Try `iptables-restore -h' or 'iptables-restore --help' for more informatio | ||||
n. | ||||
ERROR: /sbin/iptables-restore --wait 60 Failed. | ||||
That has been corrected. | ||||
5.2.3.5 | ||||
1) A typo in the FTP documentation has been corrected. | ||||
2) The recommended mss setting when using IPSec with ipcomp has been | ||||
corrected. | ||||
3) A number of incorrect links in the manpages have been corrected. | ||||
4) The 'bypass' option is now allowed when specifying an NFQUEUE | ||||
policy. Previously, specifying that option resulted in an error. | ||||
5) Corrected IPv6 Address Range parsing. | ||||
Previously, such ranges were required to be of the form [<addr1>-<addr2>] | ||||
rather than the more standard form [<addr1>]-[<addr2>]. In the snat file | ||||
(and in nat actions), the latter form was actually flagged as an error | ||||
while in other contexts, it resulted in a less obvious error being | ||||
raised. | ||||
6) The manpages have been updated to refer to https://shorewall.org | ||||
rather than http://www.shorewall.org. | ||||
5.2.3.4 | ||||
1) If multi-queue NFQUEUE (e.g., NFQUEUE(0:1) ) WAS used as a policy, | ||||
an error such as the following was previously incorrectly raised. | ||||
ERROR: Invalid policy (NFQUEUE(0) /etc/shorewall/policy (line | ||||
15) | ||||
That has been corrected such that no error is raised. | ||||
2) If multi-queue NFQUEUE( e.g., NFQUEUE(0:1,bypass) ) was passed to a | ||||
macro, an error such as the following was previously incorrectly | ||||
raised: | ||||
ERROR: Invalid ACTION (PARAM:1c,bypass))) | ||||
/usr/share/shorewall/macro.BitTorrent (line 12) | ||||
from /etc/shorewall/rules (line 40) | ||||
Now, the NFQUEUE action is correctly substituted for PARAM in | ||||
the Macro body. | ||||
3) If shorewall[6].conf didn't set AUTOMAKE, the 'update' command | ||||
previously produced a new file with 'AUTOMAKE=Yes'. This resulted | ||||
in an unexpected change of behavior. Now, the new file contains | ||||
'AUTOMAKE=No', which preserves the pre-update behavior. | ||||
4) Shorewall-rules(5) incorrectly stated that the 'bypass' option to | ||||
NFQUEUE causes the rule to be silently bypassed if there is no | ||||
application attached to the queue. The actual behavior is that the | ||||
rule acts like ACCEPT in that case. Shorewall-rules(5) has been | ||||
corrected. | ||||
5.2.3.3 | ||||
1) Previously, if an ipset was specified in an SPORT column, the | ||||
compiler would raise an error similar to: | ||||
ERROR: Invalid ipset name () /etc/shorewall/rules (line 44) | ||||
That has been corrected. | ||||
5.2.3.2 | ||||
1) Shorewall 5.2 automatically converts and existing 'masq' file to an | ||||
equivalent 'snat' file. Regrettably, Shorewall 5.2.3 broke that | ||||
automatic update, such that the following error message was issued: | ||||
Use of uninitialized value $Shorewall::Nat::raw::currentline in | ||||
pattern match (m//) at /usr/share/shorewall/Shorewall/Nat.pm | ||||
line 511, <$currentfile> line nnn. | ||||
and the generted 'masq' file contains only initial comments. | ||||
That has been corrected. | ||||
5.2.3.1 | ||||
1) An issue in the implementation of policy file zone exclusion, | ||||
released in 5.2.3 has been resolved. In the original release, | ||||
if more than one zone was excluded, then the following error was | ||||
raised: | ||||
ERROR: 'all' is not allowed in a source zone list | ||||
etc/shorewall/policy (line ...) | ||||
5.2.3 | ||||
1) To prevent a helper kernel module from being loaded, it was | ||||
previously necessary to list both its current name and its | ||||
pre-kernel-2.6.20 name in the DONT_LOAD option in | ||||
/etc/shorewall[6].conf. For example, to prevent nf_conntrack_sip | ||||
from being loaded, it was necessary to also list ip_conntrack_sip | ||||
in DONT_LOAD. That is no longer necessary. | ||||
---------------------------------------------------------------------------- | ||||
N E W F E A T U R E S I N 5 . 2 . 2 | ||||
---------------------------------------------------------------------------- | ||||
1) New macros have been contributed by Vincas Dargis: | ||||
Bitcoin | ||||
Tor | ||||
ONCRPC | ||||
Additionally, Tuomo Soini has contributed a WUDO (Windows Update | ||||
Delivery Optimization) macro. | ||||
2) The Perl modules have undergone some cleanup/optimization. | ||||
3) Given that recent kernels have dropped ULOG support, use of ULOG in | ||||
Shorewall is now deprecated and results in a warning message. The | ||||
warning can be eliminated by switching to NFLOG and ulogd2. | ||||
4) Shorewall can now detect interface default gateways configured by | ||||
Network Manager. | ||||
5) Inline matches are now supported in the 'conntrack' file. | ||||
6) In the 'accounting' file, Inline matches in an INLINE(...) rule now | ||||
allow a leading '+' to cause the matches to be evaluated before | ||||
those generated by the column specifications. | ||||
7) If view of the fact that some modems take an eternity to recover | ||||
from a power failure, the limit of the 'wait' interface option | ||||
setting has been increased from 120 seconds (2 minutes) to 300 | ||||
seconds (5 minutes). | ||||
---------------------------------------------------------------------------- | ||||
P R O B L E M S C O R R E C T E D I N 5 . 2 . 2 | P R O B L E M S C O R R E C T E D I N 5 . 2 . 2 | |||
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | |||
5.2.2.1 | ||||
1) A typo has been corrected in shorewall-providers(5). The manpage | ||||
previously referred to RESTORE_DEFAULT_OPTION; that should have | ||||
been RESTORE_DEFAULT_GATEWAY. | ||||
1) This release includes defect repair through Shorewall 5.2.1.4. | 1) This release includes defect repair through Shorewall 5.2.1.4. | |||
2) When processing inline matches, the compiler previously inserted | 2) When processing inline matches, the compiler previously inserted | |||
the matches before the column-generated matches if there was a plus | the matches before the column-generated matches if there was a plus | |||
sign ("+") anywhere in the matches. Now, it only does so if the | sign ("+") anywhere in the matches. Now, it only does so if the | |||
first non-blank character in the matches is a plus sign. | first non-blank character in the matches is a plus sign. | |||
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | |||
N E W F E A T U R E S I N 5 . 2 . 1 | N E W F E A T U R E S I N 5 . 2 . 1 | |||
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | |||
End of changes. 15 change blocks. | ||||
122 lines changed or deleted | 590 lines changed or added |