Shorewall News Archive

Tom Eastep

Copyright © 2001-2003 Thomas M. Eastep

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover, and with no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”.

2003-12-31


12/29/2003 - Shorewall 1.4.9 Beta 2

http://shorewall.net/pub/shorewall/Beta
ftp://shorewall.net/pub/shorewall/Beta

Problems Corrected since version 1.4.8:

  1. There has been a low continuing level of confusion over the terms "Source NAT" (SNAT) and "Static NAT". To avoid future confusion, all instances of "Static NAT" have been replaced with "One-to-one NAT" in the documentation and configuration files.
  2. The description of NEWNOTSYN in shorewall.conf has been reworded for clarity.
  3. Wild-card rules (those involving "all" as SOURCE or DEST) will no longer produce an error if they attempt to add a rule that would override a NONE policy. The logic for expanding these wild-card rules now simply skips those (SOURCE,DEST) pairs that have a NONE policy.
  4. DNAT rules that also specified SNAT now work reliably. Previously, there were cases where the SNAT specification was effectively ignored.

Migration Issues:

    None.

New Features:

  1. The documentation has been completely rebased to Docbook XML. The documentation is now released as separate HTML and XML packages.
  2. To cut down on the number of "Why are these ports closed rather than stealthed?" questions, the SMB-related rules in /etc/shorewall/common.def have been changed from 'reject' to 'DROP'.
  3. For easier identification, packets logged under the 'norfc1918' interface option are now logged out of chains named 'rfc1918'. Previously, such packets were logged under chains named 'logdrop'.
  4. Distributors and developers seem to be regularly inventing new naming conventions for kernel modules. To avoid the need to change Shorewall code for each new convention, the MODULE_SUFFIX option has been added to shorewall.conf. MODULE_SUFFIX may be set to the suffix for module names in your particular distribution. If MODULE_SUFFIX is not set in shorewall.conf, Shorewall will use the list "o gz ko o.gz".

    To see what suffix is used by your distribution:

    ls /lib/modules/$(uname -r)/kernel/net/ipv4/netfilter

    All of the files listed should have the same suffix (extension). Set MODULE_SUFFIX to that suffix.

    Examples:

         If all files end in ".kzo" then set MODULE_SUFFIX="kzo"
         If all files end in ".kz.o" then set MODULE_SUFFIX="kz.o"
  5. Support for user defined rule ACTIONS has been implemented through two new files:

    /etc/shorewall/actions - used to list the user-defined ACTIONS.
    /etc/shorewall/action.template - For each user defined <action>, copy this file to /etc/shorewall/action.<action> and add the appropriate rules for that <action>. Once an <action> has been defined, it may be used like any of the builtin ACTIONS (ACCEPT, DROP, etc.) in /etc/shorewall/rules.

    Example: You want an action that logs a packet at the 'info' level and accepts the connection.

    In /etc/shorewall/actions, you would add:

         LogAndAccept

    You would then copy /etc/shorewall/action.template to /etc/shorewall/LogAndAccept and in that file, you would add the two rules:
            LOG:info
            ACCEPT
  6. The default value for NEWNOTSYN in shorewall.conf is now "Yes" (non-syn TCP packets that are not part of an existing connection are filtered according to the rules and policies rather than being dropped). I have made this change for two reasons:

    a) NEWNOTSYN=No tends to result in lots of "stuck" connections since any timeout during TCP session tear down results in the firewall dropping all of the retries.

    b) The old default of NEWNOTSYN=No and LOGNEWNOTSYN=info resulted in lots of confusing messages when a connection got "stuck". While I could have changed the default value of LOGNEWNOTSYN to suppress logging, I dislike defaults that silently throw away packets.

12/28/2003 - www.shorewall.net/ftp.shorewall.net Back On-line

Our high-capacity server has been restored to service -- please let us know if you find any problems.

12/29/2003 - Shorewall 1.4.9 Beta 1

http://shorewall.net/pub/shorewall/Beta
ftp://shorewall.net/pub/shorewall/Beta

Problems Corrected since version 1.4.8:

  1. There has been a low continuing level of confusion over the terms "Source NAT" (SNAT) and "Static NAT". To avoid future confusion, all instances of "Static NAT" have been replaced with "One-to-one NAT" in the documentation and configuration files.
  2. The description of NEWNOTSYN in shorewall.conf has been reworded for clarity.
  3. Wild-card rules (those involving "all" as SOURCE or DEST) will no longer produce an error if they attempt to add a rule that would override a NONE policy. The logic for expanding these wild-card rules now simply skips those (SOURCE,DEST) pairs that have a NONE policy.

Migration Issues:

    None.

New Features:

  1. To cut down on the number of "Why are these ports closed rather than stealthed?" questions, the SMB-related rules in /etc/shorewall/common.def have been changed from 'reject' to 'DROP'.
  2. For easier identification, packets logged under the 'norfc1918' interface option are now logged out of chains named 'rfc1918'. Previously, such packets were logged under chains named 'logdrop'.
  3. Distributors and developers seem to be regularly inventing new naming conventions for kernel modules. To avoid the need to change Shorewall code for each new convention, the MODULE_SUFFIX option has been added to shorewall.conf. MODULE_SUFFIX may be set to the suffix for module names in your particular distribution. If MODULE_SUFFIX is not set in shorewall.conf, Shorewall will use the list "o gz ko o.gz".

    To see what suffix is used by your distribution:

    ls /lib/modules/$(uname -r)/kernel/net/ipv4/netfilter

    All of the files listed should have the same suffix (extension). Set MODULE_SUFFIX to that suffix.

    Examples:

         If all files end in ".kzo" then set MODULE_SUFFIX="kzo"
         If all files end in ".kz.o" then set MODULE_SUFFIX="kz.o"
  4. Support for user defined rule ACTIONS has been implemented through two new files:

    /etc/shorewall/actions - used to list the user-defined ACTIONS.
    /etc/shorewall/action.template - For each user defined <action>, copy this file to /etc/shorewall/action.<action> and add the appropriate rules for that <action>. Once an <action> has been defined, it may be used like any of the builtin ACTIONS (ACCEPT, DROP, etc.) in /etc/shorewall/rules.

    Example: You want an action that logs a packet at the 'info' level and accepts the connection.

    In /etc/shorewall/actions, you would add:

         LogAndAccept

    You would then copy /etc/shorewall/action.template to /etc/shorewall/LogAndAccept and in that file, you would add the two rules:
            LOG:info
            ACCEPT
  5. The default value for NEWNOTSYN in shorewall.conf is now "Yes" (non-syn TCP packets that are not part of an existing connection are filtered according to the rules and policies rather than being dropped). I have made this change for two reasons:

    a) NEWNOTSYN=No tends to result in lots of "stuck" connections since any timeout during TCP session tear down results in the firewall dropping all of the retries.

    b) The old default of NEWNOTSYN=No and LOGNEWNOTSYN=info resulted in lots of confusing messages when a connection got "stuck". While I could have changed the default value of LOGNEWNOTSYN to suppress logging, I dislike defaults that silently throw away packets.

12/03/2003 - Support Torch Passed

Effective today, I am reducing my participation in the day-to-day support of Shorewall. As part of this shift to community-based Shorewall support a new Shorewall Newbies mailing list has been established to field questions and problems from new users. I will not monitor that list personally. I will continue my active development of Shorewall and will be available via the development list to handle development issues -- Tom.

11/07/2003 - Shorewall 1.4.8

Problems Corrected since version 1.4.7:

  1. Tuomo Soini has supplied a correction to a problem that occurs using some versions of 'ash'. The symptom is that "shorewall start" fails with:
     
       local: --limit: bad variable name
       iptables v1.2.8: Couldn't load match `-j':/lib/iptables/libipt_-j.so:
       cannot open shared object file: No such file or directory
       Try `iptables -h' or 'iptables --help' for more information.
  2. Andres Zhoglo has supplied a correction that avoids trying to use the multiport match iptables facility on ICMP rules.
     
       Example of rule that previously caused "shorewall start" to fail:
     
               ACCEPT      loc  $FW  icmp    0,8,11,12

  3. Previously, if the following error message was issued, Shorewall was left in an inconsistent state.
     
       Error: Unable to determine the routes through interface xxx

  4. Handling of the LOGUNCLEAN option in shorewall.conf has been corrected.
  5. In Shorewall 1.4.2, an optimization was added. This optimization involved creating a chain named "<zone>_frwd" for most zones defined using the /etc/shorewall/hosts file. It has since been discovered that in many cases these new chains contain redundant rules and that the "optimization" turns out to be less than optimal. The implementation has now been corrected.
  6. When the MARK value in a tcrules entry is followed by ":F" or ":P", the ":F" or ":P" was previously only applied to the first Netfilter rule generated by the entry. It is now applied to all entries.
  7. An incorrect comment concerning Debian's use of the SUBSYSLOCK option has been removed from shorewall.conf.
  8. Previously, neither the 'routefilter' interface option nor the ROUTE_FILTER parameter were working properly. This has been corrected (thanks to Eric Bowles for his analysis and patch). The definition of the ROUTE_FILTER option has changed however. Previously, ROUTE_FILTER=Yes was documented as enabling route filtering on all interfaces (which didn't work). Beginning with this release, setting ROUTE_FILTER=Yes will enable route filtering of all interfaces brought up while Shorewall is started. As a consequence, ROUTE_FILTER=Yes can coexist with the use of the 'routefilter' option in the interfaces file.
  9. If MAC verification was enabled on an interface with a /32 address and a broadcast address then an error would occur during startup.
  10. The NONE policy's intended use is to suppress the generating of rules that can't possibly be traversed. This means that a policy of NONE is inappropriate where the source or destination zone is $FW or "all". Shorewall now generates an error message if such a policy is given in /etc/shorewall/policy. Previously such a policy caused "shorewall start" to fail.
  11. The 'routeback' option was broken for wildcard interfaces (e.g., "tun+"). This has been corrected so that 'routeback' now works as expected in this case.
Migration Issues:
  1. The definition of the ROUTE_FILTER option in shorewall.conf has changed as described in item 8) above.
New Features:
  1. A new QUEUE action has been introduced for rules. QUEUE allows you to pass connection requests to a user-space filter such as ftwall (http://p2pwall.sourceforge.net). The ftwall program allows for effective filtering of p2p applications such as Kazaa. For example, to use ftwall to filter P2P clients in the 'loc' zone, you would add the following rules:

       QUEUE   loc         net    tcp
       QUEUE   loc         net    udp
       QUEUE   loc         fw     udp

    You would normally want to place those three rules BEFORE any ACCEPT rules for loc->net udp or tcp.

    Note: When the protocol specified is TCP ("tcp", "TCP" or "6"), Shorewall will only pass connection requests (SYN packets) to user space. This is for compatibility with ftwall.
  2. A BLACKLISTNEWNONLY option has been added to shorewall.conf. When this option is set to "Yes", the blacklists (dynamic and static) are only consulted for new connection requests. When set to "No" (the default if the variable is not set), the blacklists are consulted on every packet.

    Setting this option to "No" allows blacklisting to stop existing connections from a newly blacklisted host but is more expensive in terms of packet processing time. This is especially true if the blacklists contain a large number of entries.
  3. Chain names used in the /etc/shorewall/accounting file may now begin with a digit ([0-9]) and may contain embedded dashes ("-").

10/30/2003 - Shorewall 1.4.8 RC1

Given the small number of new features and the relatively few lines of code that were changed, there will be no Beta for 1.4.8.

http://shorewall.net/pub/shorewall/Beta
ftp://shorewall.net/pub/shorewall/Beta

Problems Corrected since version 1.4.7:

  1. Tuomo Soini has supplied a correction to a problem that occurs using some versions of 'ash'. The symptom is that "shorewall start" fails with:
     
       local: --limit: bad variable name
       iptables v1.2.8: Couldn't load match `-j':/lib/iptables/libipt_-j.so:
       cannot open shared object file: No such file or directory
       Try `iptables -h' or 'iptables --help' for more information.
  2. Andres Zhoglo has supplied a correction that avoids trying to use the multiport match iptables facility on ICMP rules.
     
       Example of rule that previously caused "shorewall start" to fail:
     
               ACCEPT      loc  $FW  icmp    0,8,11,12

  3. Previously, if the following error message was issued, Shorewall was left in an inconsistent state.
     
       Error: Unable to determine the routes through interface xxx

  4. Handling of the LOGUNCLEAN option in shorewall.conf has been corrected.
  5. In Shorewall 1.4.2, an optimization was added. This optimization involved creating a chain named "<zone>_frwd" for most zones defined using the /etc/shorewall/hosts file. It has since been discovered that in many cases these new chains contain redundant rules and that the "optimization" turns out to be less than optimal. The implementation has now been corrected.
  6. When the MARK value in a tcrules entry is followed by ":F" or ":P", the ":F" or ":P" was previously only applied to the first Netfilter rule generated by the entry. It is now applied to all entries.
  7. An incorrect comment concerning Debian's use of the SYBSYSLOCK option has been removed from shorewall.conf.
  8. Previously, neither the 'routefilter' interface option nor the ROUTE_FILTER parameter were working properly. This has been corrected (thanks to Eric Bowles for his analysis and patch). The definition of the ROUTE_FILTER option has changed however. Previously, ROUTE_FILTER=Yes was documented as enabling route filtering on all interfaces (which didn't work). Beginning with this release, setting ROUTE_FILTER=Yes will enable route filtering of all interfaces brought up while Shorewall is started. As a consequence, ROUTE_FILTER=Yes can coexist with the use of the 'routefilter' option in the interfaces file.
Migration Issues:
  1. The definition of the ROUTE_FILTER option in shorewall.conf has changed as described in item 8) above.
New Features:
  1. A new QUEUE action has been introduced for rules. QUEUE allows you to pass connection requests to a user-space filter such as ftwall (http://p2pwall.sourceforge.net). The ftwall program allows for effective filtering of p2p applications such as Kazaa. For example, to use ftwall to filter P2P clients in the 'loc' zone, you would add the following rules:

       QUEUE   loc         net    tcp
       QUEUE   loc         net    udp
       QUEUE   loc         fw     udp

    You would normally want to place those three rules BEFORE any ACCEPT rules for loc->net udp or tcp.

    Note: When the protocol specified is TCP ("tcp", "TCP" or "6"), Shorewall will only pass connection requests (SYN packets) to user space. This is for compatibility with ftwall.
  2. A BLACKLISTNEWNONLY option has been added to shorewall.conf. When this option is set to "Yes", the blacklists (dynamic and static) are only consulted for new connection requests. When set to "No" (the default if the variable is not set), the blacklists are consulted on every packet.

    Setting this option to "No" allows blacklisting to stop existing connections from a newly blacklisted host but is more expensive in terms of packet processing time. This is especially true if the blacklists contain a large number of entries.
  3. Chain names used in the /etc/shorewall/accounting file may now begin with a digit ([0-9]) and may contain embedded dashes ("-").

10/26/2003 - Shorewall 1.4.7a and 1.4.7b win brown paper bag awards Shorewall 1.4.7c released.

  1. The saga with "<zone>_frwd" chains continues. The 1.4.7c script produces a ruleset that should work for everyone even if it is not quite optimal. My apologies for this ongoing mess.

10/24/2003 - Shorewall 1.4.7b

This is a bugfx rollup of the 1.4.7a fixes plus:
  1. The fix for problem 5 in 1.4.7a was wrong with the result that "<zone>_frwd" chains might contain too few rules. That wrong code is corrected in this release.

10/21/2003 - Shorewall 1.4.7a

This is a bugfix rollup of the following problem corrections:

  1. Tuomo Soini has supplied a correction to a problem that occurs using some versions of 'ash'. The symptom is that "shorewall start" fails with:
     
       local: --limit: bad variable name
       iptables v1.2.8: Couldn't load match `-j':/lib/iptables/libipt_-j.so:
       cannot open shared object file: No such file or directory
       Try `iptables -h' or 'iptables --help' for more information.

  2. Andres Zhoglo has supplied a correction that avoids trying to use the multiport match iptables facility on ICMP rules.
     
       Example of rule that previously caused "shorewall start" to fail:
     
               ACCEPT      loc  $FW  icmp    0,8,11,12

  3. Previously, if the following error message was issued, Shorewall was left in an inconsistent state.
     
       Error: Unable to determine the routes through interface xxx

  4. Handling of the LOGUNCLEAN option in shorewall.conf has been corrected.
  5. In Shorewall 1.4.2, an optimization was added. This optimization involved creating a chain named "<zone>_frwd" for most zones defined using the /etc/shorewall/hosts file. It has since been discovered that in many cases these new chains contain redundant rules and that the "optimization" turns out to be less than optimal. The implementation has now been corrected.
  6. When the MARK value in a tcrules entry is followed by ":F" or ":P", the ":F" or ":P" was previously only applied to the first Netfilter rule generated by the entry. It is now applied to all entries.

10/06/2003 - Shorewall 1.4.7

Problems Corrected since version 1.4.6 (Those in bold font were corrected since 1.4.7 RC2).
  1. Corrected problem in 1.4.6 where the MANGLE_ENABLED variable was being tested before it was set.
  2. Corrected handling of MAC addresses in the SOURCE column of the tcrules file. Previously, these addresses resulted in an invalid iptables command.
  3. The "shorewall stop" command is now disabled when /etc/shorewall/startup_disabled exists. This prevents people from shooting themselves in the foot prior to having configured Shorewall.
  4. A change introduced in version 1.4.6 caused error messages during "shorewall [re]start" when ADD_IP_ALIASES=Yes and ip addresses were being added to a PPP interface; the addresses were successfully added in spite of the messages.
       
    The firewall script has been modified to eliminate the error messages
  5. Interface-specific dynamic blacklisting chains are now displayed by "shorewall monitor" on the "Dynamic Chains" page (previously named "Dynamic Chain").
  6. Thanks to Henry Yang, LOGRATE and LOGBURST now work again.
  7. The 'shorewall reject' and 'shorewall drop' commands now delete any existing rules for the subject IP address before adding a new DROP or REJECT rule. Previously, there could be many rules for the same IP address in the dynamic chain so that multiple 'allow' commands were required to re-enable traffic to/from the address.
  8. When ADD_SNAT_ALIASES=Yes in shorewall.conf, the following entry in /etc/shorewall/masq resulted in a startup error:
     
       eth0 eth1     206.124.146.20-206.124.146.24

  9. Shorewall previously choked over IPV6 addresses configured on interfaces in contexts where Shorewall needed to detect something about the interface (such as when "detect" appears in the BROADCAST column of the /etc/shorewall/interfaces file).
  10. Shorewall will now load module files that are formed from the module name by appending ".o.gz".
  11. When Shorewall adds a route to a proxy ARP host and such a route already exists, two routes resulted previously. This has been corrected so that the existing route is replaced if it already exists.
  12. The rfc1918 file has been updated to reflect recent allocations.
  13. The documentation of the USER SET column in the rules file has been corrected.
  14. If there is no policy defined for the zones specified in a rule, the firewall script previously encountered a shell syntax error:
                                                                                                                                                                                       
            [: NONE: unexpected operator
                                                                                                                                                                                       
    Now, the absence of a policy generates an error message and the firewall is stopped:
                                                                                                                                                                                       
            No policy defined from zone <source> to zone <dest>

  15. Previously, if neither /etc/shorewall/common nor /etc/shorewall/common.def existed, Shorewall would fail to start and would not remove the lock file. Failure to remove the lock file resulted in the following during subsequent attempts to start:
                                                                                                                                                                                       
        Loading /usr/share/shorewall/functions...
        Processing /etc/shorewall/params ...
        Processing /etc/shorewall/shorewall.conf...
        Giving up on lock file /var/lib/shorewall/lock
        Shorewall Not Started

    Shorewall now reports a fatal error if neither of these two files exist and correctly removes the lock fille.
  16. The order of processing the various options has been changed such that blacklist entries now take precedence over the 'dhcp' interface setting.
  17. The log message generated from the 'logunclean' interface option has been changed to reflect a disposition of LOG rather than DROP.
  18. When a user name and/or a group name was specified in the USER SET column and the destination zone was qualified with a IP address, the user and/or group name was not being used to qualify the rule.
     
        Example:
     
        ACCEPT fw  net:192.0.2.12 tcp 23 - - - vladimir:

  19. The /etc/shorewall/masq file has had the spurious "/" character at the front removed.

Migration Issues:
  1. Shorewall IP Traffic Accounting has changed since snapshot 20030813 -- see the Accounting Page for details.
  2. The Uset Set capability introduced in SnapShot 20030821 has changed -- see the User Set page for details.
  3. The per-interface Dynamic Blacklisting facility introduced in the first post-1.4.6 Snapshot has been removed. The facility had too many idiosyncrasies for dial-up users to be a viable part of Shorewall.
New Features:
  1. Thanks to Steve Herber, the 'help' command can now give command-specific help (e.g., shorewall help <command>).
  2. A new option "ADMINISABSENTMINDED" has been added to /etc/shorewall/shorewall.conf. This option has a default value of "No" for existing users which causes Shorewall's 'stopped' state  to continue as it has been; namely, in the stopped state only traffic to/from hosts listed in /etc/shorewall/routestopped is accepted.

    With ADMINISABSENTMINDED=Yes (the default for new installs), in addition to traffic to/from the hosts listed in /etc/shorewall/routestopped, Shorewall will allow:

       a) All traffic originating from the firewall itself; and
       b) All traffic that is part of or related to an already-existing connection.

     In particular, with ADMINISABSENTMINDED=Yes, a "shorewall stop" entered through an ssh session will not kill the session.

     Note though that even with ADMINISABSENTMINDED=Yes, it is still possible for people to shoot themselves in the foot.

     Example:

     /etc/shorewall/nat:

         206.124.146.178    eth0:0    192.168.1.5   

     /etc/shorewall/rules:

       ACCEPT    net    loc:192.168.1.5    tcp    22
       ACCEPT    loc    fw        tcp    22

    From a remote system, I ssh to 206.124.146.178 which establishes an SSH connection with local system 192.168.1.5. I then create a second SSH connection from that computer to the firewall and confidently type "shorewall stop". As part of its stop processing, Shorewall removes eth0:0 which kills my SSH connection to 192.168.1.5!!!
  3. Given the wide range of VPN software, I can never hope to add specific support for all of it. I have therefore decided to add "generic" tunnel support.
     
    Generic tunnels work pretty much like any of the other tunnel types. You usually add a zone to represent the systems at the other end of the tunnel and you add the appropriate rules/policies to
    implement your security policy regarding traffic to/from those systems.
     
    In the /etc/shorewall/tunnels file, you can have entries of the form:

    generic:<protocol>[:<port>]  <zone>  <ip address>    <gateway zones>
     
    where:
     
           <protocol> is the protocol used by the tunnel
           <port>  if the protocol is 'udp' or 'tcp' then this is the destination port number used by the tunnel.
           <zone>  is the zone of the remote tunnel gateway
           <ip address> is the IP address of the remote tunnel gateway.
           <gateway zone>   Optional. A comma-separated list of zone names. If specified, the remote gateway is to be considered part of these zones.
  4. An 'arp_filter' option has been added to the /etc/shorewall/interfaces file. This option causes /proc/sys/net/ipv4/conf/<interface>/arp_filter to be set with the result that this interface will only answer ARP 'who-has' requests from hosts that are routed out through that interface. Setting this option facilitates testing of your firewall where multiple firewall interfaces are connected to the same HUB/Switch (all interfaces connected to the single HUB/Switch should have this option specified). Note that using such a configuration in a production environment is strongly recommended against.
  5. The ADDRESS column in /etc/shorewall/masq may now include a comma-separated list of addresses and/or address ranges. Netfilter will use all listed addresses/ranges in round-robin fashion. \
  6. An /etc/shorewall/accounting file has been added to allow for traffic accounting.  See the accounting documentation for a description of this facility.
  7. Bridge interfaces (br[0-9]) may now be used in /etc/shorewall/maclist.
  8. ACCEPT, DNAT[-], REDIRECT[-] and LOG rules defined in /etc/shorewall/rules may now be rate-limited. For DNAT and REDIRECT rules, rate limiting occurs in the nat table DNAT rule; the corresponding ACCEPT rule in the filter table is not rate limited. If you want to limit the filter table rule, you will need o create two rules; a DNAT- rule and an ACCEPT rule which can be rate-limited separately.
     
    Warning: When rate limiting is specified on a rule with "all" in the SOURCE or DEST fields, the limit will apply to each pair of zones individually rather than as a single limit for all pairs of covered by the rule.
     
    To specify a rate limit,

    a) Follow ACCEPT, DNAT[-], REDIRECT[-] or LOG with
     
          < <rate>/<interval>[:<burst>] >
     
      where
     
          <rate> is the sustained rate per <interval>
          <interval> is "sec" or "min"
          <burst> is the largest burst accepted within an <interval>. If not given, the default of 5 is assumed.
     
    There may be no white space between the ACTION and "<" nor there may be any white space within the burst specification. If you want to specify logging of a rate-limited rule, the ":" and log level comes after the ">" (e.g., ACCEPT<2/sec:4>:info ).

    b) A new RATE LIMIT column has been added to the /etc/shorewall/rules file. You may specify the rate limit there in the format:

          <rate>/<interval>[:<burst>]
     
    Let's take an example:
     
             ACCEPT<2/sec:4>        net     dmz     tcp     80
       
    The first time this rule is reached, the packet will be accepted; in fact, since the burst is 4, the first four packets will be accepted. After this, it will be 500ms (1 second divided by the rate
    of 2) before a packet will be accepted from this rule, regardless of how many packets reach it. Also, every 500ms which passes without matching a packet, one of the bursts will be regained; if no packets hit the rule for 2 second, the burst will be fully recharged; back where we started.
  9. Multiple chains may now be displayed in one "shorewall show" command (e.g., shorewall show INPUT FORWARD OUTPUT).
  10. Output rules (those with $FW as the SOURCE) may now be limited to a set of local users and/or groups. See http://shorewall.net/UserSets.html for details.

10/02/2003 - Shorewall 1.4.7 RC2

http://shorewall.net/pub/shorewall/Beta
ftp://shorewall.net/pub/shorewall/Beta

Problems Corrected since version 1.4.6 (Those in bold font were corrected since 1.4.7 RC 1).
  1. Corrected problem in 1.4.6 where the MANGLE_ENABLED variable was being tested before it was set.
  2. Corrected handling of MAC addresses in the SOURCE column of the tcrules file. Previously, these addresses resulted in an invalid iptables command.
  3. The "shorewall stop" command is now disabled when /etc/shorewall/startup_disabled exists. This prevents people from shooting themselves in the foot prior to having configured Shorewall.
  4. A change introduced in version 1.4.6 caused error messages during "shorewall [re]start" when ADD_IP_ALIASES=Yes and ip addresses were being added to a PPP interface; the addresses were successfully added in spite of the messages.
       
    The firewall script has been modified to eliminate the error messages
  5. Interface-specific dynamic blacklisting chains are now displayed by "shorewall monitor" on the "Dynamic Chains" page (previously named "Dynamic Chain").
  6. Thanks to Henry Yang, LOGRATE and LOGBURST now work again.
  7. The 'shorewall reject' and 'shorewall drop' commands now delete any existing rules for the subject IP address before adding a new DROP or REJECT rule. Previously, there could be many rules for the same IP address in the dynamic chain so that multiple 'allow' commands were required to re-enable traffic to/from the address.
  8. When ADD_SNAT_ALIASES=Yes in shorewall.conf, the following entry in /etc/shorewall/masq resulted in a startup error:
     
       eth0 eth1     206.124.146.20-206.124.146.24

  9. Shorewall previously choked over IPV6 addresses configured on interfaces in contexts where Shorewall needed to detect something about the interface (such as when "detect" appears in the BROADCAST column of the /etc/shorewall/interfaces file).
  10. Shorewall will now load module files that are formed from the module name by appending ".o.gz".
  11. When Shorewall adds a route to a proxy ARP host and such a route already exists, two routes resulted previously. This has been corrected so that the existing route is replaced if it already exists.
  12. The rfc1918 file has been updated to reflect recent allocations.
  13. The documentation of the USER SET column in the rules file has been corrected.
  14. If there is no policy defined for the zones specified in a rule, the firewall script previously encountered a shell syntax error:
                                                                                                                                                                                       
            [: NONE: unexpected operator
                                                                                                                                                                                       
    Now, the absence of a policy generates an error message and the firewall is stopped:
                                                                                                                                                                                       
            No policy defined from zone <source> to zone <dest>

  15. Previously, if neither /etc/shorewall/common nor /etc/shorewall/common.def existed, Shorewall would fail to start and would not remove the lock file. Failure to remove the lock file resulted in the following during subsequent attempts to start:
                                                                                                                                                                                       
        Loading /usr/share/shorewall/functions...
        Processing /etc/shorewall/params ...
        Processing /etc/shorewall/shorewall.conf...
        Giving up on lock file /var/lib/shorewall/lock
        Shorewall Not Started

    Shorewall now reports a fatal error if neither of these two files exist and correctly removes the lock fille.
  16. The order of processing the various options has been changed such that blacklist entries now take precedence over the 'dhcp' interface setting.
  17. The log message generated from the 'logunclean' interface option has been changed to reflect a disposition of LOG rather than DROP.
  18. The RFC1918 file has been updated to reflect recent IANA allocations.
Migration Issues:
  1. Shorewall IP Traffic Accounting has changed since snapshot 20030813 -- see the Accounting Page for details.
  2. The Uset Set capability introduced in SnapShot 20030821 has changed -- see the User Set page for details.
  3. The per-interface Dynamic Blacklisting facility introduced in the first post-1.4.6 Snapshot has been removed. The facility had too many idiosyncrasies for dial-up users to be a viable part of Shorewall.
New Features:
  1. Thanks to Steve Herber, the 'help' command can now give command-specific help (e.g., shorewall help <command>).
  2. A new option "ADMINISABSENTMINDED" has been added to /etc/shorewall/shorewall.conf. This option has a default value of "No" for existing users which causes Shorewall's 'stopped' state  to continue as it has been; namely, in the stopped state only traffic to/from hosts listed in /etc/shorewall/routestopped is accepted.

    With ADMINISABSENTMINDED=Yes (the default for new installs), in addition to traffic to/from the hosts listed in /etc/shorewall/routestopped, Shorewall will allow:

       a) All traffic originating from the firewall itself; and
       b) All traffic that is part of or related to an already-existing connection.

     In particular, with ADMINISABSENTMINDED=Yes, a "shorewall stop" entered through an ssh session will not kill the session.

     Note though that even with ADMINISABSENTMINDED=Yes, it is still possible for people to shoot themselves in the foot.

     Example:

     /etc/shorewall/nat:

         206.124.146.178    eth0:0    192.168.1.5   

     /etc/shorewall/rules:

       ACCEPT    net    loc:192.168.1.5    tcp    22
       ACCEPT    loc    fw        tcp    22

    From a remote system, I ssh to 206.124.146.178 which establishes an SSH connection with local system 192.168.1.5. I then create a second SSH connection from that computer to the firewall and confidently type "shorewall stop". As part of its stop processing, Shorewall removes eth0:0 which kills my SSH connection to 192.168.1.5!!!
  3. Given the wide range of VPN software, I can never hope to add specific support for all of it. I have therefore decided to add "generic" tunnel support.
     
    Generic tunnels work pretty much like any of the other tunnel types. You usually add a zone to represent the systems at the other end of the tunnel and you add the appropriate rules/policies to
    implement your security policy regarding traffic to/from those systems.
     
    In the /etc/shorewall/tunnels file, you can have entries of the form:

    generic:<protocol>[:<port>]  <zone>  <ip address>    <gateway zones>
     
    where:
     
           <protocol> is the protocol used by the tunnel
           <port>  if the protocol is 'udp' or 'tcp' then this is the destination port number used by the tunnel.
           <zone>  is the zone of the remote tunnel gateway
           <ip address> is the IP address of the remote tunnel gateway.
           <gateway zone>   Optional. A comma-separated list of zone names. If specified, the remote gateway is to be considered part of these zones.
  4. An 'arp_filter' option has been added to the /etc/shorewall/interfaces file. This option causes /proc/sys/net/ipv4/conf/<interface>/arp_filter to be set with the result that this interface will only answer ARP 'who-has' requests from hosts that are routed out through that interface. Setting this option facilitates testing of your firewall where multiple firewall interfaces are connected to the same HUB/Switch (all interfaces connected to the single HUB/Switch should have this option specified). Note that using such a configuration in a production environment is strongly recommended against.
  5. The ADDRESS column in /etc/shorewall/masq may now include a comma-separated list of addresses and/or address ranges. Netfilter will use all listed addresses/ranges in round-robin fashion. \
  6. An /etc/shorewall/accounting file has been added to allow for traffic accounting.  See the accounting documentation for a description of this facility.
  7. Bridge interfaces (br[0-9]) may now be used in /etc/shorewall/maclist.
  8. ACCEPT, DNAT[-], REDIRECT[-] and LOG rules defined in /etc/shorewall/rules may now be rate-limited. For DNAT and REDIRECT rules, rate limiting occurs in the nat table DNAT rule; the corresponding ACCEPT rule in the filter table is not rate limited. If you want to limit the filter table rule, you will need o create two rules; a DNAT- rule and an ACCEPT rule which can be rate-limited separately.
     
    Warning: When rate limiting is specified on a rule with "all" in the SOURCE or DEST fields, the limit will apply to each pair of zones individually rather than as a single limit for all pairs of covered by the rule.
     
    To specify a rate limit,

    a) Follow ACCEPT, DNAT[-], REDIRECT[-] or LOG with
     
          < <rate>/<interval>[:<burst>] >
     
      where
     
          <rate> is the sustained rate per <interval>
          <interval> is "sec" or "min"
          <burst> is the largest burst accepted within an <interval>. If not given, the default of 5 is assumed.
     
    There may be no white space between the ACTION and "<" nor there may be any white space within the burst specification. If you want to specify logging of a rate-limited rule, the ":" and log level comes after the ">" (e.g., ACCEPT<2/sec:4>:info ).

    b) A new RATE LIMIT column has been added to the /etc/shorewall/rules file. You may specify the rate limit there in the format:

          <rate>/<interval>[:<burst>]
     
    Let's take an example:
     
             ACCEPT<2/sec:4>        net     dmz     tcp     80
       
    The first time this rule is reached, the packet will be accepted; in fact, since the burst is 4, the first four packets will be accepted. After this, it will be 500ms (1 second divided by the rate
    of 2) before a packet will be accepted from this rule, regardless of how many packets reach it. Also, every 500ms which passes without matching a packet, one of the bursts will be regained; if no packets hit the rule for 2 second, the burst will be fully recharged; back where we started.
  9. Multiple chains may now be displayed in one "shorewall show" command (e.g., shorewall show INPUT FORWARD OUTPUT).
  10. Output rules (those with $FW as the SOURCE) may now be limited to a set of local users and/or groups. See http://shorewall.net/UserSets.html for details.

9/18/2003 - Shorewall 1.4.7 RC 1

http://shorewall.net/pub/shorewall/Beta
ftp://shorewall.net/pub/shorewall/Beta

Problems Corrected since version 1.4.6 (Those in bold font were corrected since 1.4.7 Beta 1).
  1. Corrected problem in 1.4.6 where the MANGLE_ENABLED variable was being tested before it was set.
  2. Corrected handling of MAC addresses in the SOURCE column of the tcrules file. Previously, these addresses resulted in an invalid iptables command.
  3. The "shorewall stop" command is now disabled when /etc/shorewall/startup_disabled exists. This prevents people from shooting themselves in the foot prior to having configured Shorewall.
  4. A change introduced in version 1.4.6 caused error messages during "shorewall [re]start" when ADD_IP_ALIASES=Yes and ip addresses were being added to a PPP interface; the addresses were successfully added in spite of the messages.
       
    The firewall script has been modified to eliminate the error messages
  5. Interface-specific dynamic blacklisting chains are now displayed by "shorewall monitor" on the "Dynamic Chains" page (previously named "Dynamic Chain").
  6. Thanks to Henry Yang, LOGRATE and LOGBURST now work again.
  7. The 'shorewall reject' and 'shorewall drop' commands now delete any existing rules for the subject IP address before adding a new DROP or REJECT rule. Previously, there could be many rules for the same IP address in the dynamic chain so that multiple 'allow' commands were required to re-enable traffic to/from the address.
  8. When ADD_SNAT_ALIASES=Yes in shorewall.conf, the following entry in /etc/shorewall/masq resulted in a startup error:
     
       eth0 eth1     206.124.146.20-206.124.146.24

  9. Shorewall previously choked over IPV6 addresses configured on interfaces in contexts where Shorewall needed to detect something about the interface (such as when "detect" appears in the BROADCAST column of the /etc/shorewall/interfaces file).
  10. Shorewall will now load module files that are formed from the module name by appending ".o.gz".
  11. When Shorewall adds a route to a proxy ARP host and such a route already exists, two routes resulted previously. This has been corrected so that the existing route is replaced if it already exists.
  12. The rfc1918 file has been updated to reflect recent allocations.
Migration Issues:
  1. Shorewall IP Traffic Accounting has changed since snapshot 20030813 -- see the Accounting Page for details.
  2. The Uset Set capability introduced in SnapShot 20030821 has changed -- see the User Set page for details.
  3. The per-interface Dynamic Blacklisting facility introduced in the first post-1.4.6 Snapshot has been removed. The facility had too many idiosyncrasies for dial-up users to be a viable part of Shorewall.
New Features:
  1. Thanks to Steve Herber, the 'help' command can now give command-specific help (e.g., shorewall help <command>).
  2. A new option "ADMINISABSENTMINDED" has been added to /etc/shorewall/shorewall.conf. This option has a default value of "No" for existing users which causes Shorewall's 'stopped' state  to continue as it has been; namely, in the stopped state only traffic to/from hosts listed in /etc/shorewall/routestopped is accepted.

    With ADMINISABSENTMINDED=Yes (the default for new installs), in addition to traffic to/from the hosts listed in /etc/shorewall/routestopped, Shorewall will allow:

       a) All traffic originating from the firewall itself; and
       b) All traffic that is part of or related to an already-existing connection.

     In particular, with ADMINISABSENTMINDED=Yes, a "shorewall stop" entered through an ssh session will not kill the session.

     Note though that even with ADMINISABSENTMINDED=Yes, it is still possible for people to shoot themselves in the foot.

     Example:

     /etc/shorewall/nat:

         206.124.146.178    eth0:0    192.168.1.5   

     /etc/shorewall/rules:

       ACCEPT    net    loc:192.168.1.5    tcp    22
       ACCEPT    loc    fw        tcp    22

    From a remote system, I ssh to 206.124.146.178 which establishes an SSH connection with local system 192.168.1.5. I then create a second SSH connection from that computer to the firewall and confidently type "shorewall stop". As part of its stop processing, Shorewall removes eth0:0 which kills my SSH connection to 192.168.1.5!!!
  3. Given the wide range of VPN software, I can never hope to add specific support for all of it. I have therefore decided to add "generic" tunnel support.
     
    Generic tunnels work pretty much like any of the other tunnel types. You usually add a zone to represent the systems at the other end of the tunnel and you add the appropriate rules/policies to
    implement your security policy regarding traffic to/from those systems.
     
    In the /etc/shorewall/tunnels file, you can have entries of the form:

    generic:<protocol>[:<port>]  <zone>  <ip address>    <gateway zones>
     
    where:
     
           <protocol> is the protocol used by the tunnel
           <port>  if the protocol is 'udp' or 'tcp' then this is the destination port number used by the tunnel.
           <zone>  is the zone of the remote tunnel gateway
           <ip address> is the IP address of the remote tunnel gateway.
           <gateway zone>   Optional. A comma-separated list of zone names. If specified, the remote gateway is to be considered part of these zones.
  4. An 'arp_filter' option has been added to the /etc/shorewall/interfaces file. This option causes /proc/sys/net/ipv4/conf/<interface>/arp_filter to be set with the result that this interface will only answer ARP 'who-has' requests from hosts that are routed out through that interface. Setting this option facilitates testing of your firewall where multiple firewall interfaces are connected to the same HUB/Switch (all interfaces connected to the single HUB/Switch should have this option specified). Note that using such a configuration in a production environment is strongly recommended against.
  5. The ADDRESS column in /etc/shorewall/masq may now include a comma-separated list of addresses and/or address ranges. Netfilter will use all listed addresses/ranges in round-robin fashion. \
  6. An /etc/shorewall/accounting file has been added to allow for traffic accounting.  See the accounting documentation for a description of this facility.
  7. Bridge interfaces (br[0-9]) may now be used in /etc/shorewall/maclist.
  8. ACCEPT, DNAT[-], REDIRECT[-] and LOG rules defined in /etc/shorewall/rules may now be rate-limited. For DNAT and REDIRECT rules, rate limiting occurs in the nat table DNAT rule; the corresponding ACCEPT rule in the filter table is not rate limited. If you want to limit the filter table rule, you will need o create two rules; a DNAT- rule and an ACCEPT rule which can be rate-limited separately.
     
    Warning: When rate limiting is specified on a rule with "all" in the SOURCE or DEST fields, the limit will apply to each pair of zones individually rather than as a single limit for all pairs of covered by the rule.
     
    To specify a rate limit,

    a) Follow ACCEPT, DNAT[-], REDIRECT[-] or LOG with
     
          < <rate>/<interval>[:<burst>] >
     
      where
     
          <rate> is the sustained rate per <interval>
          <interval> is "sec" or "min"
          <burst> is the largest burst accepted within an <interval>. If not given, the default of 5 is assumed.
     
    There may be no white space between the ACTION and "<" nor there may be any white space within the burst specification. If you want to specify logging of a rate-limited rule, the ":" and log level comes after the ">" (e.g., ACCEPT<2/sec:4>:info ).

    b) A new RATE LIMIT column has been added to the /etc/shorewall/rules file. You may specify the rate limit there in the format:

          <rate>/<interval>[:<burst>]
     
    Let's take an example:
     
             ACCEPT<2/sec:4>        net     dmz     tcp     80
       
    The first time this rule is reached, the packet will be accepted; in fact, since the burst is 4, the first four packets will be accepted. After this, it will be 500ms (1 second divided by the rate
    of 2) before a packet will be accepted from this rule, regardless of how many packets reach it. Also, every 500ms which passes without matching a packet, one of the bursts will be regained; if no packets hit the rule for 2 second, the burst will be fully recharged; back where we started.
  9. Multiple chains may now be displayed in one "shorewall show" command (e.g., shorewall show INPUT FORWARD OUTPUT).
  10. Output rules (those with $FW as the SOURCE) may now be limited to a set of local users and/or groups. See http://shorewall.net/UserSets.html for details.

9/15/2003 - Shorewall 1.4.7 Beta 2

http://shorewall.net/pub/shorewall/Beta
ftp://shorewall.net/pub/shorewall/Beta

Problems Corrected since version 1.4.6 (Those in bold font were corrected since 1.4.7 Beta 1).
  1. Corrected problem in 1.4.6 where the MANGLE_ENABLED variable was being tested before it was set.
  2. Corrected handling of MAC addresses in the SOURCE column of the tcrules file. Previously, these addresses resulted in an invalid iptables command.
  3. The "shorewall stop" command is now disabled when /etc/shorewall/startup_disabled exists. This prevents people from shooting themselves in the foot prior to having configured Shorewall.
  4. A change introduced in version 1.4.6 caused error messages during "shorewall [re]start" when ADD_IP_ALIASES=Yes and ip addresses were being added to a PPP interface; the addresses were successfully added in spite of the messages.
       
    The firewall script has been modified to eliminate the error messages
  5. Interface-specific dynamic blacklisting chains are now displayed by "shorewall monitor" on the "Dynamic Chains" page (previously named "Dynamic Chain").
  6. Thanks to Henry Yang, LOGRATE and LOGBURST now work again.
  7. The 'shorewall reject' and 'shorewall drop' commands now delete any existing rules for the subject IP address before adding a new DROP or REJECT rule. Previously, there could be many rules for the same IP address in the dynamic chain so that multiple 'allow' commands were required to re-enable traffic to/from the address.
  8. When ADD_SNAT_ALIASES=Yes in shorewall.conf, the following entry in /etc/shorewall/masq resulted in a startup error:
     
       eth0 eth1     206.124.146.20-206.124.146.24

  9. Shorewall previously choked over IPV6 addresses configured on interfaces in contexts where Shorewall needed to detect something about the interface (such as when "detect" appears in the BROADCAST column of the /etc/shorewall/interfaces file).
  10. Shorewall will now load module files that are formed from the module name by appending ".o.gz".
Migration Issues:
  1. Shorewall IP Traffic Accounting has changed since snapshot 20030813 -- see the Accounting Page for details.
  2. The Uset Set capability introduced in SnapShot 20030821 has changed -- see the User Set page for details.
  3. The per-interface Dynamic Blacklisting facility introduced in the first post-1.4.6 Snapshot has been removed. The facility had too many idiosyncrasies for dial-up users to be a viable part of Shorewall.
New Features:
  1. Thanks to Steve Herber, the 'help' command can now give command-specific help (e.g., shorewall help <command>).
  2. A new option "ADMINISABSENTMINDED" has been added to /etc/shorewall/shorewall.conf. This option has a default value of "No" for existing users which causes Shorewall's 'stopped' state  to continue as it has been; namely, in the stopped state only traffic to/from hosts listed in /etc/shorewall/routestopped is accepted.

    With ADMINISABSENTMINDED=Yes (the default for new installs), in addition to traffic to/from the hosts listed in /etc/shorewall/routestopped, Shorewall will allow:

       a) All traffic originating from the firewall itself; and
       b) All traffic that is part of or related to an already-existing connection.

     In particular, with ADMINISABSENTMINDED=Yes, a "shorewall stop" entered through an ssh session will not kill the session.

     Note though that even with ADMINISABSENTMINDED=Yes, it is still possible for people to shoot themselves in the foot.

     Example:

     /etc/shorewall/nat:

         206.124.146.178    eth0:0    192.168.1.5   

     /etc/shorewall/rules:

       ACCEPT    net    loc:192.168.1.5    tcp    22
       ACCEPT    loc    fw        tcp    22

    From a remote system, I ssh to 206.124.146.178 which establishes an SSH connection with local system 192.168.1.5. I then create a second SSH connection from that computer to the firewall and confidently type "shorewall stop". As part of its stop processing, Shorewall removes eth0:0 which kills my SSH connection to 192.168.1.5!!!
  3. Given the wide range of VPN software, I can never hope to add specific support for all of it. I have therefore decided to add "generic" tunnel support.
     
    Generic tunnels work pretty much like any of the other tunnel types. You usually add a zone to represent the systems at the other end of the tunnel and you add the appropriate rules/policies to
    implement your security policy regarding traffic to/from those systems.
     
    In the /etc/shorewall/tunnels file, you can have entries of the form:

    generic:<protocol>[:<port>]  <zone>  <ip address>    <gateway zones>
     
    where:
     
           <protocol> is the protocol used by the tunnel
           <port>  if the protocol is 'udp' or 'tcp' then this is the destination port number used by the tunnel.
           <zone>  is the zone of the remote tunnel gateway
           <ip address> is the IP address of the remote tunnel gateway.
           <gateway zone>   Optional. A comma-separated list of zone names. If specified, the remote gateway is to be considered part of these zones.
  4. An 'arp_filter' option has been added to the /etc/shorewall/interfaces file. This option causes /proc/sys/net/ipv4/conf/<interface>/arp_filter to be set with the result that this interface will only answer ARP 'who-has' requests from hosts that are routed out through that interface. Setting this option facilitates testing of your firewall where multiple firewall interfaces are connected to the same HUB/Switch (all interfaces connected to the single HUB/Switch should have this option specified). Note that using such a configuration in a production environment is strongly recommended against.
  5. The ADDRESS column in /etc/shorewall/masq may now include a comma-separated list of addresses and/or address ranges. Netfilter will use all listed addresses/ranges in round-robin fashion. \
  6. An /etc/shorewall/accounting file has been added to allow for traffic accounting.  See the accounting documentation for a description of this facility.
  7. Bridge interfaces (br[0-9]) may now be used in /etc/shorewall/maclist.
  8. ACCEPT, DNAT[-], REDIRECT[-] and LOG rules defined in /etc/shorewall/rules may now be rate-limited. For DNAT and REDIRECT rules, rate limiting occurs in the nat table DNAT rule; the corresponding ACCEPT rule in the filter table is not rate limited. If you want to limit the filter table rule, you will need o create two rules; a DNAT- rule and an ACCEPT rule which can be rate-limited separately.
     
    Warning: When rate limiting is specified on a rule with "all" in the SOURCE or DEST fields, the limit will apply to each pair of zones individually rather than as a single limit for all pairs of covered by the rule.
     
    To specify a rate limit,

    a) Follow ACCEPT, DNAT[-], REDIRECT[-] or LOG with
     
          < <rate>/<interval>[:<burst>] >
     
      where
     
          <rate> is the sustained rate per <interval>
          <interval> is "sec" or "min"
          <burst> is the largest burst accepted within an <interval>. If not given, the default of 5 is assumed.
     
    There may be no white space between the ACTION and "<" nor there may be any white space within the burst specification. If you want to specify logging of a rate-limited rule, the ":" and log level comes after the ">" (e.g., ACCEPT<2/sec:4>:info ).

    b) A new RATE LIMIT column has been added to the /etc/shorewall/rules file. You may specify the rate limit there in the format:

          <rate>/<interval>[:<burst>]
     
    Let's take an example:
     
             ACCEPT<2/sec:4>        net     dmz     tcp     80
       
    The first time this rule is reached, the packet will be accepted; in fact, since the burst is 4, the first four packets will be accepted. After this, it will be 500ms (1 second divided by the rate
    of 2) before a packet will be accepted from this rule, regardless of how many packets reach it. Also, every 500ms which passes without matching a packet, one of the bursts will be regained; if no packets hit the rule for 2 second, the burst will be fully recharged; back where we started.
  9. Multiple chains may now be displayed in one "shorewall show" command (e.g., shorewall show INPUT FORWARD OUTPUT).
  10. Output rules (those with $FW as the SOURCE) may now be limited to a set of local users and/or groups. See http://shorewall.net/UserSets.html for details.

8/27/2003 - Shorewall Mirror in Australia

Thanks to Dave Kempe and Solutions First (http://www.solutionsfirst.com.au), there is now a Shorewall Mirror in Australia:

http://www.shorewall.com.au
ftp://ftp.shorewall.com.au

8/26/2003 - French Version of the Shorewall Setup Guide 

Thanks to Fabien Demassieux, there is now a French translation of the Shorewall Setup Guide. Merci Beacoup, Fabien!

8/25/2003 - Shorewall 1.4.7 Beta 1

http://shorewall.net/pub/shorewall/Beta
ftp://shorewall.net/pub/shorewall/Beta

Problems Corrected since version 1.4.6
  1. Corrected problem in 1.4.6 where the MANGLE_ENABLED variable was being tested before it was set.
  2. Corrected handling of MAC addresses in the SOURCE column of the tcrules file. Previously, these addresses resulted in an invalid iptables command.
  3. The "shorewall stop" command is now disabled when /etc/shorewall/startup_disabled exists. This prevents people from shooting themselves in the foot prior to having configured Shorewall.
  4. A change introduced in version 1.4.6 caused error messages during "shorewall [re]start" when ADD_IP_ALIASES=Yes and ip addresses were being added to a PPP interface; the addresses were successfully added in spite of the messages.
       
    The firewall script has been modified to eliminate the error messages
  5. Interface-specific dynamic blacklisting chains are now displayed by "shorewall monitor" on the "Dynamic Chains" page (previously named "Dynamic Chain").
  6. Thanks to Henry Yang, LOGRATE and LOGBURST now work again.

Migration Issues:
  1. Shorewall IP Traffic Accounting has changed since snapshot 20030813 -- see the Accounting Page for details.
  2. The Uset Set capability introduced in SnapShot 20030821 has changed -- see the User Set page for details.
  3. The per-interface Dynamic Blacklisting facility introduced in the first post-1.4.6 Snapshot has been removed. The facility had too many idiosyncrasies for dial-up users to be a viable part of Shorewall.
New Features:
  1. Thanks to Steve Herber, the 'help' command can now give command-specific help (e.g., shorewall help <command>).
  2. A new option "ADMINISABSENTMINDED" has been added to /etc/shorewall/shorewall.conf. This option has a default value of "No" for existing users which causes Shorewall's 'stopped' state  to continue as it has been; namely, in the stopped state only traffic to/from hosts listed in /etc/shorewall/routestopped is accepted.

    With ADMINISABSENTMINDED=Yes (the default for new installs), in addition to traffic to/from the hosts listed in /etc/shorewall/routestopped, Shorewall will allow:

       a) All traffic originating from the firewall itself; and
       b) All traffic that is part of or related to an already-existing connection.

     In particular, with ADMINISABSENTMINDED=Yes, a "shorewall stop" entered through an ssh session will not kill the session.

     Note though that even with ADMINISABSENTMINDED=Yes, it is still possible for people to shoot themselves in the foot.

     Example:

     /etc/shorewall/nat:

         206.124.146.178    eth0:0    192.168.1.5   

     /etc/shorewall/rules:

       ACCEPT    net    loc:192.168.1.5    tcp    22
       ACCEPT    loc    fw        tcp    22

    From a remote system, I ssh to 206.124.146.178 which establishes an SSH connection with local system 192.168.1.5. I then create a second SSH connection from that computer to the firewall and confidently type "shorewall stop". As part of its stop processing, Shorewall removes eth0:0 which kills my SSH connection to 192.168.1.5!!!
  3. Given the wide range of VPN software, I can never hope to add specific support for all of it. I have therefore decided to add "generic" tunnel support.
     
    Generic tunnels work pretty much like any of the other tunnel types. You usually add a zone to represent the systems at the other end of the tunnel and you add the appropriate rules/policies to
    implement your security policy regarding traffic to/from those systems.
     
    In the /etc/shorewall/tunnels file, you can have entries of the form:

    generic:<protocol>[:<port>]  <zone>  <ip address>    <gateway zones>
     
    where:
     
           <protocol> is the protocol used by the tunnel
           <port>  if the protocol is 'udp' or 'tcp' then this is the destination port number used by the tunnel.
           <zone>  is the zone of the remote tunnel gateway
           <ip address> is the IP address of the remote tunnel gateway.
           <gateway zone>   Optional. A comma-separated list of zone names. If specified, the remote gateway is to be considered part of these zones.
  4. An 'arp_filter' option has been added to the /etc/shorewall/interfaces file. This option causes /proc/sys/net/ipv4/conf/<interface>/arp_filter to be set with the result that this interface will only answer ARP 'who-has' requests from hosts that are routed out through that interface. Setting this option facilitates testing of your firewall where multiple firewall interfaces are connected to the same HUB/Switch (all interfaces connected to the single HUB/Switch should have this option specified). Note that using such a configuration in a production environment is strongly recommended against.
  5. The ADDRESS column in /etc/shorewall/masq may now include a comma-separated list of addresses and/or address ranges. Netfilter will use all listed addresses/ranges in round-robin fashion. \
  6. An /etc/shorewall/accounting file has been added to allow for traffic accounting.  See the accounting documentation for a description of this facility.
  7. Bridge interfaces (br[0-9]) may now be used in /etc/shorewall/maclist.
  8. ACCEPT, DNAT[-], REDIRECT[-] and LOG rules defined in /etc/shorewall/rules may now be rate-limited. For DNAT and REDIRECT rules, rate limiting occurs in the nat table DNAT rule; the corresponding ACCEPT rule in the filter table is not rate limited. If you want to limit the filter table rule, you will need o create two rules; a DNAT- rule and an ACCEPT rule which can be rate-limited separately.
     
    Warning: When rate limiting is specified on a rule with "all" in the SOURCE or DEST fields, the limit will apply to each pair of zones individually rather than as a single limit for all pairs of covered by the rule.
     
    To specify a rate limit,

    a) Follow ACCEPT, DNAT[-], REDIRECT[-] or LOG with
     
          < <rate>/<interval>[:<burst>] >
     
      where
     
          <rate> is the sustained rate per <interval>
          <interval> is "sec" or "min"
          <burst> is the largest burst accepted within an <interval>. If not given, the default of 5 is assumed.
     
    There may be no white space between the ACTION and "<" nor there may be any white space within the burst specification. If you want to specify logging of a rate-limited rule, the ":" and log level comes after the ">" (e.g., ACCEPT<2/sec:4>:info ).

    b) A new RATE LIMIT column has been added to the /etc/shorewall/rules file. You may specify the rate limit there in the format:

          <rate>/<interval>[:<burst>]
     
    Let's take an example:
     
             ACCEPT<2/sec:4>        net     dmz     tcp     80
       
    The first time this rule is reached, the packet will be accepted; in fact, since the burst is 4, the first four packets will be accepted. After this, it will be 500ms (1 second divided by the rate
    of 2) before a packet will be accepted from this rule, regardless of how many packets reach it. Also, every 500ms which passes without matching a packet, one of the bursts will be regained; if no packets hit the rule for 2 second, the burst will be fully recharged; back where we started.
  9. Multiple chains may now be displayed in one "shorewall show" command (e.g., shorewall show INPUT FORWARD OUTPUT).
  10. Output rules (those with $FW as the SOURCE) may now be limited to a set of local users and/or groups. See http://shorewall.net/UserSets.html for details.

8/23/2003 - Snapshot 1.4.6_20030823

http://shorewall.net/pub/shorewall/Snapshots/
ftp://shorewall.net/pub/shorewall/Snapshots/

Problems Corrected since version 1.4.6
  1. Corrected problem in 1.4.6 where the MANGLE_ENABLED variable was being tested before it was set.
  2. Corrected handling of MAC addresses in the SOURCE column of the tcrules file. Previously, these addresses resulted in an invalid iptables command.
  3. The "shorewall stop" command is now disabled when /etc/shorewall/startup_disabled exists. This prevents people from shooting themselves in the foot prior to having configured Shorewall.
  4. A change introduced in version 1.4.6 caused error messages during "shorewall [re]start" when ADD_IP_ALIASES=Yes and ip addresses were being added to a PPP interface; the addresses were successfully added in spite of the messages.
       
    The firewall script has been modified to eliminate the error messages
  5. Interface-specific dynamic blacklisting chains are now displayed by "shorewall monitor" on the "Dynamic Chains" page (previously named "Dynamic Chain").
  6. Thanks to Henry Yang, LOGRATE and LOGBURST now work again.

Migration Issues:
  1. Once you have installed this version of Shorewall, you must restart Shorewall before you may use the 'drop', 'reject', 'allow' or 'save' commands.
  2. To maintain strict compatibility with previous versions, current uses of "shorewall drop" and "shorewall reject" should be replaced with "shorewall dropall" and "shorewall rejectall"
  3. Shorewall IP Traffic Accounting has changed since snapshot 20030813 -- see the Accounting Page for details.
  4. The Uset Set capability introduced in SnapShot 20030821 has changed -- see the User Set page for details.
New Features:
  1. Shorewall now creates a dynamic blacklisting chain for each interface defined in /etc/shorewall/interfaces. The 'drop' and 'reject' commands use the routing table to determine which of these chains is to be used for blacklisting the specified IP address(es).

    Two new commands ('dropall' and 'rejectall') have been introduced that do what 'drop' and 'reject' used to do; namely, when an address is blacklisted using these new commands, it will be blacklisted on all of your firewall's interfaces.
  2. Thanks to Steve Herber, the 'help' command can now give command-specific help (e.g., shorewall help <command>).
  3. A new option "ADMINISABSENTMINDED" has been added to /etc/shorewall/shorewall.conf. This option has a default value of "No" for existing users which causes Shorewall's 'stopped' state  to continue as it has been; namely, in the stopped state only traffic to/from hosts listed in /etc/shorewall/routestopped is accepted.

    With ADMINISABSENTMINDED=Yes (the default for new installs), in addition to traffic to/from the hosts listed in /etc/shorewall/routestopped, Shorewall will allow:

       a) All traffic originating from the firewall itself; and
       b) All traffic that is part of or related to an already-existing connection.

     In particular, with ADMINISABSENTMINDED=Yes, a "shorewall stop" entered through an ssh session will not kill the session.

     Note though that even with ADMINISABSENTMINDED=Yes, it is still possible for people to shoot themselves in the foot.

     Example:

     /etc/shorewall/nat:

         206.124.146.178    eth0:0    192.168.1.5   

     /etc/shorewall/rules:

       ACCEPT    net    loc:192.168.1.5    tcp    22
       ACCEPT    loc    fw        tcp    22

    From a remote system, I ssh to 206.124.146.178 which establishes an SSH connection with local system 192.168.1.5. I then create a second SSH connection from that computer to the firewall and confidently type "shorewall stop". As part of its stop processing, Shorewall removes eth0:0 which kills my SSH connection to 192.168.1.5!!!
  4. Given the wide range of VPN software, I can never hope to add specific support for all of it. I have therefore decided to add "generic" tunnel support.
     
    Generic tunnels work pretty much like any of the other tunnel types. You usually add a zone to represent the systems at the other end of the tunnel and you add the appropriate rules/policies to
    implement your security policy regarding traffic to/from those systems.
     
    In the /etc/shorewall/tunnels file, you can have entries of the form:

    generic:<protocol>[:<port>]  <zone>  <ip address>    <gateway zones>
     
    where:
     
           <protocol> is the protocol used by the tunnel
           <port>  if the protocol is 'udp' or 'tcp' then this is the destination port number used by the tunnel.
           <zone>  is the zone of the remote tunnel gateway
           <ip address> is the IP address of the remote tunnel gateway.
           <gateway zone>   Optional. A comma-separated list of zone names. If specified, the remote gateway is to be considered part of these zones.
  5. An 'arp_filter' option has been added to the /etc/shorewall/interfaces file. This option causes /proc/sys/net/ipv4/conf/<interface>/arp_filter to be set with the result that this interface will only answer ARP 'who-has' requests from hosts that are routed out through that interface. Setting this option facilitates testing of your firewall where multiple firewall interfaces are connected to the same HUB/Switch (all interfaces connected to the single HUB/Switch should have this option specified). Note that using such a configuration in a production environment is strongly recommended against.
  6. The ADDRESS column in /etc/shorewall/masq may now include a comma-separated list of addresses and/or address ranges. Netfilter will use all listed addresses/ranges in round-robin fashion. \
  7. An /etc/shorewall/accounting file has been added to allow for traffic accounting.  See the accounting documentation for a description of this facility.
  8. Bridge interfaces (br[0-9]) may now be used in /etc/shorewall/maclist.
  9. ACCEPT, DNAT[-], REDIRECT[-] and LOG rules defined in /etc/shorewall/rules may now be rate-limited. For DNAT and REDIRECT rules, rate limiting occurs in the nat table DNAT rule; the corresponding ACCEPT rule in the filter table is not rate limited. If you want to limit the filter table rule, you will need o create two rules; a DNAT- rule and an ACCEPT rule which can be rate-limited separately.
     
    Warning: When rate limiting is specified on a rule with "all" in the SOURCE or DEST fields, the limit will apply to each pair of zones individually rather than as a single limit for all pairs of covered by the rule.
     
    To specify a rate limit,

    a) Follow ACCEPT, DNAT[-], REDIRECT[-] or LOG with
     
          < <rate>/<interval>[:<burst>] >
     
      where
     
          <rate> is the sustained rate per <interval>
          <interval> is "sec" or "min"
          <burst> is the largest burst accepted within an <interval>. If not given, the default of 5 is assumed.
     
    There may be no white space between the ACTION and "<" nor there may be any white space within the burst specification. If you want to specify logging of a rate-limited rule, the ":" and log level comes after the ">" (e.g., ACCEPT<2/sec:4>:info ).

    b) A new RATE LIMIT column has been added to the /etc/shorewall/rules file. You may specify the rate limit there in the format:

          <rate>/<interval>[:<burst>]
     
    Let's take an example:
     
             ACCEPT<2/sec:4>        net     dmz     tcp     80
       
    The first time this rule is reached, the packet will be accepted; in fact, since the burst is 4, the first four packets will be accepted. After this, it will be 500ms (1 second divided by the rate
    of 2) before a packet will be accepted from this rule, regardless of how many packets reach it. Also, every 500ms which passes without matching a packet, one of the bursts will be regained; if no packets hit the rule for 2 second, the burst will be fully recharged; back where we started.
  10. Multiple chains may now be displayed in one "shorewall show" command (e.g., shorewall show INPUT FORWARD OUTPUT).
  11. Output rules (those with $FW as the SOURCE) may now be limited to a set of local users and/or groups. See http://shorewall.net/UserSets.html for details.

8/13/2003 - Snapshot 1.4.6_20030813 

http://shorewall.net/pub/shorewall/Snapshots/
ftp://shorewall.net/pub/shorewall/Snapshots/

Problems Corrected since version 1.4.6
  1. Corrected problem in 1.4.6 where the MANGLE_ENABLED variable was being tested before it was set.
  2. Corrected handling of MAC addresses in the SOURCE column of the tcrules file. Previously, these addresses resulted in an invalid iptables command.
  3. The "shorewall stop" command is now disabled when /etc/shorewall/startup_disabled exists. This prevents people from shooting themselves in the foot prior to having configured Shorewall.
  4. A change introduced in version 1.4.6 caused error messages during "shorewall [re]start" when ADD_IP_ALIASES=Yes and ip addresses were being added to a PPP interface; the addresses were successfully added in spite of the messages.
       
    The firewall script has been modified to eliminate the error messages
  5.  Interface-specific dynamic blacklisting chains are now displayed by "shorewall monitor" on the "Dynamic Chains" page (previously named "Dynamic Chain").

Migration Issues:
  1. Once you have installed this version of Shorewall, you must restart Shorewall before you may use the 'drop', 'reject', 'allow' or 'save' commands.
  2. To maintain strict compatibility with previous versions, current uses of "shorewall drop" and "shorewall reject" should be replaced with "shorewall dropall" and "shorewall rejectall"
New Features:
  1. Shorewall now creates a dynamic blacklisting chain for each interface defined in /etc/shorewall/interfaces. The 'drop' and 'reject' commands use the routing table to determine which of these chains is to be used for blacklisting the specified IP address(es).

    Two new commands ('dropall' and 'rejectall') have been introduced that do what 'drop' and 'reject' used to do; namely, when an address is blacklisted using these new commands, it will be blacklisted on all of your firewall's interfaces.
  2. Thanks to Steve Herber, the 'help' command can now give command-specific help (e.g., shorewall help <command>).
  3. A new option "ADMINISABSENTMINDED" has been added to /etc/shorewall/shorewall.conf. This option has a default value of "No" for existing users which causes Shorewall's 'stopped' state  to continue as it has been; namely, in the stopped state only traffic to/from hosts listed in /etc/shorewall/routestopped is accepted.

    With ADMINISABSENTMINDED=Yes (the default for new installs), in addition to traffic to/from the hosts listed in /etc/shorewall/routestopped, Shorewall will allow:

       a) All traffic originating from the firewall itself; and
       b) All traffic that is part of or related to an already-existing connection.

     In particular, with ADMINISABSENTMINDED=Yes, a "shorewall stop" entered through an ssh session will not kill the session.

     Note though that even with ADMINISABSENTMINDED=Yes, it is still possible for people to shoot themselves in the foot.

     Example:

     /etc/shorewall/nat:

         206.124.146.178    eth0:0    192.168.1.5   

     /etc/shorewall/rules:

       ACCEPT    net    loc:192.168.1.5    tcp    22
       ACCEPT    loc    fw        tcp    22

    From a remote system, I ssh to 206.124.146.178 which establishes an SSH connection with local system 192.168.1.5. I then create a second SSH connection from that computer to the firewall and confidently type "shorewall stop". As part of its stop processing, Shorewall removes eth0:0 which kills my SSH connection to 192.168.1.5!!!
  4. Given the wide range of VPN software, I can never hope to add specific support for all of it. I have therefore decided to add "generic" tunnel support.
     
    Generic tunnels work pretty much like any of the other tunnel types. You usually add a zone to represent the systems at the other end of the tunnel and you add the appropriate rules/policies to
    implement your security policy regarding traffic to/from those systems.
     
    In the /etc/shorewall/tunnels file, you can have entries of the form:

    generic:<protocol>[:<port>]  <zone>  <ip address>    <gateway zones>
     
    where:
     
           <protocol> is the protocol used by the tunnel
           <port>  if the protocol is 'udp' or 'tcp' then this is the destination port number used by the tunnel.
           <zone>  is the zone of the remote tunnel gateway
           <ip address> is the IP address of the remote tunnel gateway.
           <gateway zone>   Optional. A comma-separated list of zone names. If specified, the remote gateway is to be considered part of these zones.
  5. An 'arp_filter' option has been added to the /etc/shorewall/interfaces file. This option causes /proc/sys/net/ipv4/conf/<interface>/arp_filter to be set with the result that this interface will only answer ARP 'who-has' requests from hosts that are routed out through that interface. Setting this option facilitates testing of your firewall where multiple firewall interfaces are connected to the same HUB/Switch (all interfaces connected to the single HUB/Switch should have this option specified). Note that using such a configuration in a production environment is strongly recommended against.
  6. The ADDRESS column in /etc/shorewall/masq may now include a comma-separated list of addresses and/or address ranges. Netfilter will use all listed addresses/ranges in round-robin fashion. \
  7. An /etc/shorewall/accounting file has been added to allow for traffic accounting.  See the accounting documentation for a description of this facility.
  8. Bridge interfaces (br[0-9]) may now be used in /etc/shorewall/maclist.
  9. ACCEPT, DNAT[-], REDIRECT[-] and LOG rules defined in /etc/shorewall/rules may now be rate-limited. For DNAT and REDIRECT rules, rate limiting occurs in the nat table DNAT rule; the corresponding ACCEPT rule in the filter table is not rate limited. If you want to limit the filter table rule, you will need o create two rules; a DNAT- rule and an ACCEPT rule which can be rate-limited separately.
     
    Warning: When rate limiting is specified on a rule with "all" in the SOURCE or DEST fields, the limit will apply to each pair of zones individually rather than as a single limit for all pairs of covered by the rule.
     
    To specify a rate limit, follow ACCEPT, DNAT[-], REDIRECT[-] or LOG with
     
          < <rate>/<interval>[:<burst>] >
     
       where
     
          <rate> is the sustained rate per <interval>
          <interval> is "sec" or "min"
          <burst> is the largest burst accepted within an <interval>. If not given, the default of 5 is assumed.
     
    There may be no white space between the ACTION and "<" nor there may be any white space within the burst specification. If you want to specify logging of a rate-limited rule, the ":" and log level comes after the ">" (e.g., ACCEPT<2/sec:4>:info ).
     
    Let's take an example:
     
             ACCEPT<2/sec:4>        net     dmz     tcp     80
       
    The first time this rule is reached, the packet will be accepted; in fact, since the burst is 4, the first four packets will be accepted. After this, it will be 500ms (1 second divided by the rate
    of 2) before a packet will be accepted from this rule, regardless of how many packets reach it. Also, every 500ms which passes without matching a packet, one of the bursts will be regained; if no packets hit the rule for 2 second, the burst will be fully recharged; back where we started.

8/9/2003 - Snapshot 1.4.6_20030809 

http://shorewall.net/pub/shorewall/Snapshots/
ftp://shorewall.net/pub/shorewall/Snapshots/

Problems Corrected since version 1.4.6
  1. Corrected problem in 1.4.6 where the MANGLE_ENABLED variable was being tested before it was set.
  2. Corrected handling of MAC addresses in the SOURCE column of the tcrules file. Previously, these addresses resulted in an invalid iptables command.
  3. The "shorewall stop" command is now disabled when /etc/shorewall/startup_disabled exists. This prevents people from shooting themselves in the foot prior to having configured Shorewall.
  4. A change introduced in version 1.4.6 caused error messages during "shorewall [re]start" when ADD_IP_ALIASES=Yes and ip addresses were being added to a PPP interface; the addresses were successfully added in spite of the messages.
       
    The firewall script has been modified to eliminate the error messages
Migration Issues:
  1. Once you have installed this version of Shorewall, you must restart Shorewall before you may use the 'drop', 'reject', 'allow' or 'save' commands.
  2. To maintain strict compatibility with previous versions, current uses of "shorewall drop" and "shorewall reject" should be replaced with "shorewall dropall" and "shorewall rejectall"
New Features:
  1. Shorewall now creates a dynamic blacklisting chain for each interface defined in /etc/shorewall/interfaces. The 'drop' and 'reject' commands use the routing table to determine which of these chains is to be used for blacklisting the specified IP address(es).

    Two new commands ('dropall' and 'rejectall') have been introduced that do what 'drop' and 'reject' used to do; namely, when an address is blacklisted using these new commands, it will be blacklisted on all of your firewall's interfaces.
  2. Thanks to Steve Herber, the 'help' command can now give command-specific help (e.g., shorewall help <command>).
  3. A new option "ADMINISABSENTMINDED" has been added to /etc/shorewall/shorewall.conf. This option has a default value of "No" for existing users which causes Shorewall's 'stopped' state  to continue as it has been; namely, in the stopped state only traffic to/from hosts listed in /etc/shorewall/routestopped is accepted.

    With ADMINISABSENTMINDED=Yes (the default for new installs), in addition to traffic to/from the hosts listed in /etc/shorewall/routestopped, Shorewall will allow:

       a) All traffic originating from the firewall itself; and
       b) All traffic that is part of or related to an already-existing connection.

     In particular, with ADMINISABSENTMINDED=Yes, a "shorewall stop" entered through an ssh session will not kill the session.

     Note though that even with ADMINISABSENTMINDED=Yes, it is still possible for people to shoot themselves in the foot.

     Example:

     /etc/shorewall/nat:

         206.124.146.178    eth0:0    192.168.1.5   

     /etc/shorewall/rules:

       ACCEPT    net    loc:192.168.1.5    tcp    22
       ACCEPT    loc    fw        tcp    22

    From a remote system, I ssh to 206.124.146.178 which establishes an SSH connection with local system 192.168.1.5. I then create a second SSH connection from that computer to the firewall and confidently type "shorewall stop". As part of its stop processing, Shorewall removes eth0:0 which kills my SSH connection to 192.168.1.5!!!
  4. Given the wide range of VPN software, I can never hope to add specific support for all of it. I have therefore decided to add "generic" tunnel support.
     
    Generic tunnels work pretty much like any of the other tunnel types. You usually add a zone to represent the systems at the other end of the tunnel and you add the appropriate rules/policies to
    implement your security policy regarding traffic to/from those systems.
     
    In the /etc/shorewall/tunnels file, you can have entries of the form:

    generic:<protocol>[:<port>]  <zone>  <ip address>    <gateway zones>
     
    where:
     
           <protocol> is the protocol used by the tunnel
           <port>  if the protocol is 'udp' or 'tcp' then this is the destination port number used by the tunnel.
           <zone>  is the zone of the remote tunnel gateway
           <ip address> is the IP address of the remote tunnel gateway.
           <gateway zone>   Optional. A comma-separated list of zone names. If specified, the remote gateway is to be considered part of these zones.
  5. An 'arp_filter' option has been added to the /etc/shorewall/interfaces file. This option causes /proc/sys/net/ipv4/conf/<interface>/arp_filter to be set with the result that this interface will only answer ARP 'who-has' requests from hosts that are routed out through that interface. Setting this option facilitates testing of your firewall where multiple firewall interfaces are connected to the same HUB/Switch (all interfaces connected to the single HUB/Switch should have this option specified). Note that using such a configuration in a production environment is strongly recommended against.

8/5/2003 - Shorewall-1.4.6b 

Problems Corrected since version 1.4.6:
  1. Previously, if TC_ENABLED is set to yes in shorewall.conf then Shorewall would fail to start with the error "ERROR:  Traffic Control requires Mangle"; that problem has been corrected.
  2. Corrected handling of MAC addresses in the SOURCE column of the tcrules file. Previously, these addresses resulted in an invalid iptables command.
  3. The "shorewall stop" command is now disabled when /etc/shorewall/startup_disabled exists. This prevents people from shooting themselves in the foot prior to having configured Shorewall.
  4. A change introduced in version 1.4.6 caused error messages during "shorewall [re]start" when ADD_IP_ALIASES=Yes and ip addresses were being added to a PPP interface; the addresses were successfully added in spite of the messages.
      
    The firewall script has been modified to eliminate the error messages.

8/5/2003 - Shorewall-1.4.6b

Problems Corrected since version 1.4.6:
  1. Previously, if TC_ENABLED is set to yes in shorewall.conf then Shorewall would fail to start with the error "ERROR:  Traffic Control requires Mangle"; that problem has been corrected.
  2. Corrected handling of MAC addresses in the SOURCE column of the tcrules file. Previously, these addresses resulted in an invalid iptables command.
  3. The "shorewall stop" command is now disabled when /etc/shorewall/startup_disabled exists. This prevents people from shooting themselves in the foot prior to having configured Shorewall.
  4. A change introduced in version 1.4.6 caused error messages during "shorewall [re]start" when ADD_IP_ALIASES=Yes and ip addresses were being added to a PPP interface; the addresses were successfully added in spite of the messages.
      
    The firewall script has been modified to eliminate the error messages.

7/31/2003 - Snapshot 1.4.6_20030731

http://shorewall.net/pub/shorewall/Snapshots/
ftp://shorewall.net/pub/shorewall/Snapshots/

Problems Corrected since version 1.4.6:

  1. Corrected problem in 1.4.6 where the MANGLE_ENABLED variable was being tested before it was set.
  2. Corrected handling of MAC addresses in the SOURCE column of the tcrules file. Previously, these addresses resulted in an invalid iptables command.

Migration Issues:

  1. Once you have installed this version of Shorewall, you must restart Shorewall before you may use the 'drop', 'reject', 'allow' or 'save' commands.
  2. To maintain strict compatibility with previous versions, current uses of "shorewall drop" and "shorewall reject" should be replaced with "shorewall dropall" and "shorewall rejectall"

New Features:

  1. Shorewall now creates a dynamic blacklisting chain for each interface defined in /etc/shorewall/interfaces. The 'drop' and 'reject' commands use the routing table to determine which of these chains is to be used for blacklisting the specified IP address(es).

    Two new commands ('dropall' and 'rejectall') have been introduced that do what 'drop' and 'reject' used to do; namely, when an address is blacklisted using these new commands, it will be blacklisted on all of your firewall's interfaces.
  2. Thanks to Steve Herber, the 'help' command can now give command-specific help (e.g., shorewall help <command>).
  3. A new option "ADMINISABSENTMINDED" has been added to /etc/shorewall/shorewall.conf. This option has a default value of "No" for existing users which causes Shorewall's 'stopped' state  to continue as it has been; namely, in the stopped state only traffic to/from hosts listed in /etc/shorewall/routestopped is accepted.

    With ADMINISABSENTMINDED=Yes (the default for new installs), in addition to traffic to/from the hosts listed in /etc/shorewall/routestopped, Shorewall will allow:

       a) All traffic originating from the firewall itself; and
       b) All traffic that is part of or related to an already-existing connection.

     In particular, with ADMINISABSENTMINDED=Yes, a "shorewall stop" entered through an ssh session will not kill the session.

     Note though that even with ADMINISABSENTMINDED=Yes, it is still possible for people to shoot themselves in the foot.

     Example:

     /etc/shorewall/nat:

         206.124.146.178    eth0:0    192.168.1.5   

     /etc/shorewall/rules:

       ACCEPT    net    loc:192.168.1.5    tcp    22
       ACCEPT    loc    fw        tcp    22

    From a remote system, I ssh to 206.124.146.178 which establishes an SSH connection with local system 192.168.1.5. I then create a second SSH connection from that computer to the firewall and confidently type "shorewall stop". As part of its stop processing, Shorewall removes eth0:0 which kills my SSH connection to 192.168.1.5!!!

7/27/2003 - Snapshot 1.4.6_20030727

http://shorewall.net/pub/shorewall/Snapshots/
ftp://shorewall.net/pub/shorewall/Snapshots/

Problems Corrected since version 1.4.6
  1. Corrected problem in 1.4.6 where the MANGLE_ENABLED variable was being tested before it was set.
  2. Corrected handling of MAC addresses in the SOURCE column of the tcrules file. Previously, these addresses resulted in an invalid iptables command.
Migration Issues:
  1. Once you have installed this version of Shorewall, you must restart Shorewall before you may use the 'drop', 'reject', 'allow' or 'save' commands.
  2. To maintain strict compatibility with previous versions, current uses of "shorewall drop" and "shorewall reject" should be replaced with "shorewall dropall" and "shorewall rejectall"
New Features:
  1. Shorewall now creates a dynamic blacklisting chain for each interface defined in /etc/shorewall/interfaces. The 'drop' and 'reject' commands use the routing table to determine which of these chains is to be used for blacklisting the specified IP address(es).

    Two new commands ('dropall' and 'rejectall') have been introduced that do what 'drop' and 'reject' used to do; namely, when an address is blacklisted using these new commands, it will be blacklisted on all of your firewall's interfaces.
  2. Thanks to Steve Herber, the 'help' command can now give command-specific help (e.g., shorewall help <command>).

7/26/2003 - Snapshot 1.4.6_20030726

http://shorewall.net/pub/shorewall/Snapshots/
ftp://shorewall.net/pub/shorewall/Snapshots/

Problems Corrected since version 1.4.6:

  1. Corrected problem in 1.4.6 where the MANGLE_ENABLED variable was being tested before it was set.
  2. Corrected handling of MAC addresses in the SOURCE column of the tcrules file. Previously, these addresses resulted in an invalid iptables command.

Migration Issues:

  1. Once you have installed this version of Shorewall, you must restart Shorewall before you may use the 'drop', 'reject', 'allow' or 'save' commands.
  2. To maintain strict compatibility with previous versions, current uses of "shorewall drop" and "shorewall reject" should be replaced with "shorewall dropall" and "shorewall rejectall"

New Features:

Shorewall now creates a dynamic blacklisting chain for each interface defined in /etc/shorewall/interfaces. The 'drop' and 'reject' commands use the routing table to determine which of these chains is to be used for blacklisting the specified IP address(es).

Two new commands ('dropall' and 'rejectall') have been introduced that do what 'drop' and 'reject' used to do; namely, when an address is blacklisted using these new commands, it will be blacklisted on all of your firewall's interfaces.

7/22/2003 - Shorewall-1.4.6a

Problems Corrected:
  1. Previously, if TC_ENABLED is set to yes in shorewall.conf then Shorewall would fail to start with the error "ERROR:  Traffic Control requires Mangle"; that problem has been corrected.

7/20/2003 - Shorewall-1.4.6

Problems Corrected:

  1. A problem seen on RH7.3 systems where Shorewall encountered start errors when started using the "service" mechanism has been worked around.

  2. Where a list of IP addresses appears in the DEST column of a DNAT[-] rule, Shorewall incorrectly created multiple DNAT rules in the nat table (one for each element in the list). Shorewall now correctly creates a single DNAT rule with multiple "--to-destination" clauses.

  3. Corrected a problem in Beta 1 where DNS names containing a "-" were mis-handled when they appeared in the DEST column of a rule.

  4. A number of problems with rule parsing have been corrected. Corrections involve the handling of "z1!z2" in the SOURCE column as well as lists in the ORIGINAL DESTINATION column.

  5. The message "Adding rules for DHCP" is now suppressed if there are no DHCP rules to add.

Migration Issues:

  1. In earlier versions, an undocumented feature allowed entries in the host file as follows:

        z    eth1:192.168.1.0/24,eth2:192.168.2.0/24

    This capability was never documented and has been removed in 1.4.6 to allow entries of the following format:

        z   eth1:192.168.1.0/24,192.168.2.0/24

  2. The NAT_ENABLED, MANGLE_ENABLED and MULTIPORT options have been removed from /etc/shorewall/shorewall.conf. These capabilities are now automatically detected by Shorewall (see below).

New Features:

  1. A 'newnotsyn' interface option has been added. This option may be specified in /etc/shorewall/interfaces and overrides the setting NEWNOTSYN=No for packets arriving on the associated interface.

  2. The means for specifying a range of IP addresses in /etc/shorewall/masq to use for SNAT is now documented. ADD_SNAT_ALIASES=Yes is enabled for address ranges.

  3. Shorewall can now add IP addresses to subnets other than the first one on an interface.

  4. DNAT[-] rules may now be used to load balance (round-robin) over a set of servers. Servers may be specified in a range of addresses given as <first address>-<last address>.

    Example:

        DNAT net loc:192.168.10.2-192.168.10.5 tcp 80

  5. The NAT_ENABLED, MANGLE_ENABLED and MULTIPORT configuration options have been removed and have been replaced by code that detects whether these capabilities are present in the current kernel. The output of the start, restart and check commands have been enhanced to report the outcome:

    Shorewall has detected the following iptables/netfilter capabilities:
       NAT: Available
       Packet Mangling: Available
       Multi-port Match: Available
    Verifying Configuration...

  6. Support for the Connection Tracking Match Extension has been added. This extension is available in recent kernel/iptables releases and allows for rules which match against elements in netfilter's connection tracking table. Shorewall automatically detects the availability of this extension and reports its availability in the output of the start, restart and check commands.

    Shorewall has detected the following iptables/netfilter capabilities:
       NAT: Available
       Packet Mangling: Available
       Multi-port Match: Available
       Connection Tracking Match: Available
    Verifying Configuration...

    If this extension is available, the ruleset generated by Shorewall is changed in the following ways:
  7. The shell used to interpret the firewall script (/usr/share/shorewall/firewall) may now be specified using the SHOREWALL_SHELL parameter in shorewall.conf.

  8. An 'ipcalc' command has been added to /sbin/shorewall.

          ipcalc [ <address> <netmask> | <address>/<vlsm> ]

    Examples:

          [root@wookie root]# shorewall ipcalc 192.168.1.0/24
             CIDR=192.168.1.0/24
             NETMASK=255.255.255.0
             NETWORK=192.168.1.0
             BROADCAST=192.168.1.255
          [root@wookie root]#

          [root@wookie root]# shorewall ipcalc 192.168.1.0 255.255.255.0
             CIDR=192.168.1.0/24
             NETMASK=255.255.255.0
             NETWORK=192.168.1.0
             BROADCAST=192.168.1.255
          [root@wookie root]#

    Warning:

    If your shell only supports 32-bit signed arithmatic (ash or dash), then the ipcalc command produces incorrect information for IP addresses 128.0.0.0-1 and for /1 networks. Bash should produce correct information for all valid IP addresses.

  9. An 'iprange' command has been added to /sbin/shorewall.

          iprange <address>-<address>

    This command decomposes a range of IP addressses into a list of network and host addresses. The command can be useful if you need to construct an efficient set of rules that accept connections from a range of network addresses.

    Note: If your shell only supports 32-bit signed arithmetic (ash or dash) then the range may not span 128.0.0.0.

    Example:

          [root@gateway root]# shorewall iprange 192.168.1.4-192.168.12.9
          192.168.1.4/30
          192.168.1.8/29
          192.168.1.16/28
          192.168.1.32/27
          192.168.1.64/26
          192.168.1.128/25
          192.168.2.0/23
          192.168.4.0/22
          192.168.8.0/22
          192.168.12.0/29
          192.168.12.8/31
          [root@gateway root]#

  10. A list of host/net addresses is now allowed in an entry in /etc/shorewall/hosts.

    Example:

        foo    eth1:192.168.1.0/24,192.168.2.0/24

  11. The "shorewall check" command now includes the chain name when printing the applicable policy for each pair of zones.
     
        Example:
     
            Policy for dmz to net is REJECT using chain all2all
     
    This means that the policy for connections from the dmz to the internet is REJECT and the applicable entry in the /etc/shorewall/policy was the all->all policy.

  12. Support for the 2.6 Kernel series has been added.

7/15/2003 - New Mirror in Brazil

Thanks to the folks at securityopensource.org.br, there is now a Shorewall mirror in Brazil.

7/15/2003 - Shorewall-1.4.6 RC 1

Problems Corrected:

  1. A problem seen on RH7.3 systems where Shorewall encountered start errors when started using the "service" mechanism has been worked around.

  2. Where a list of IP addresses appears in the DEST column of a DNAT[-] rule, Shorewall incorrectly created multiple DNAT rules in the nat table (one for each element in the list). Shorewall now correctly creates a single DNAT rule with multiple "--to-destination" clauses.

  3. Corrected a problem in Beta 1 where DNS names containing a "-" were mis-handled when they appeared in the DEST column of a rule.

  4. A number of problems with rule parsing have been corrected. Corrections involve the handling of "z1!z2" in the SOURCE column as well as lists in the ORIGINAL DESTINATION column.

Migration Issues:

  1. In earlier versions, an undocumented feature allowed entries in the host file as follows:

        z    eth1:192.168.1.0/24,eth2:192.168.2.0/24

    This capability was never documented and has been removed in 1.4.6 to allow entries of the following format:

        z   eth1:192.168.1.0/24,192.168.2.0/24

  2. The NAT_ENABLED, MANGLE_ENABLED and MULTIPORT options have been removed from /etc/shorewall/shorewall.conf. These capabilities are now automatically detected by Shorewall (see below).

New Features:

  1. A 'newnotsyn' interface option has been added. This option may be specified in /etc/shorewall/interfaces and overrides the setting NEWNOTSYN=No for packets arriving on the associated interface.

  2. The means for specifying a range of IP addresses in /etc/shorewall/masq to use for SNAT is now documented. ADD_SNAT_ALIASES=Yes is enabled for address ranges.

  3. Shorewall can now add IP addresses to subnets other than the first one on an interface.

  4. DNAT[-] rules may now be used to load balance (round-robin) over a set of servers. Servers may be specified in a range of addresses given as <first address>-<last address>.

    Example:

        DNAT net loc:192.168.10.2-192.168.10.5 tcp 80

  5. The NAT_ENABLED, MANGLE_ENABLED and MULTIPORT configuration options have been removed and have been replaced by code that detects whether these capabilities are present in the current kernel. The output of the start, restart and check commands have been enhanced to report the outcome:

    Shorewall has detected the following iptables/netfilter capabilities:
       NAT: Available
       Packet Mangling: Available
       Multi-port Match: Available
    Verifying Configuration...

  6. Support for the Connection Tracking Match Extension has been added. This extension is available in recent kernel/iptables releases and allows for rules which match against elements in netfilter's connection tracking table. Shorewall automatically detects the availability of this extension and reports its availability in the output of the start, restart and check commands.

    Shorewall has detected the following iptables/netfilter capabilities:
       NAT: Available
       Packet Mangling: Available
       Multi-port Match: Available
       Connection Tracking Match: Available
    Verifying Configuration...

    If this extension is available, the ruleset generated by Shorewall is changed in the following ways:
  7. The shell used to interpret the firewall script (/usr/share/shorewall/firewall) may now be specified using the SHOREWALL_SHELL parameter in shorewall.conf.

  8. An 'ipcalc' command has been added to /sbin/shorewall.

          ipcalc [ <address> <netmask> | <address>/<vlsm> ]

    Examples:

          [root@wookie root]# shorewall ipcalc 192.168.1.0/24
             CIDR=192.168.1.0/24
             NETMASK=255.255.255.0
             NETWORK=192.168.1.0
             BROADCAST=192.168.1.255
          [root@wookie root]#

          [root@wookie root]# shorewall ipcalc 192.168.1.0 255.255.255.0
             CIDR=192.168.1.0/24
             NETMASK=255.255.255.0
             NETWORK=192.168.1.0
             BROADCAST=192.168.1.255
          [root@wookie root]#

    Warning:

    If your shell only supports 32-bit signed arithmatic (ash or dash), then the ipcalc command produces incorrect information for IP addresses 128.0.0.0-1 and for /1 networks. Bash should produce correct information for all valid IP addresses.

  9. An 'iprange' command has been added to /sbin/shorewall.

          iprange <address>-<address>

    This command decomposes a range of IP addressses into a list of network and host addresses. The command can be useful if you need to construct an efficient set of rules that accept connections from a range of network addresses.

    Note: If your shell only supports 32-bit signed arithmetic (ash or dash) then the range may not span 128.0.0.0.

    Example:

          [root@gateway root]# shorewall iprange 192.168.1.4-192.168.12.9
          192.168.1.4/30
          192.168.1.8/29
          192.168.1.16/28
          192.168.1.32/27
          192.168.1.64/26
          192.168.1.128/25
          192.168.2.0/23
          192.168.4.0/22
          192.168.8.0/22
          192.168.12.0/29
          192.168.12.8/31
          [root@gateway root]#

  10. A list of host/net addresses is now allowed in an entry in /etc/shorewall/hosts.

    Example:

        foo    eth1:192.168.1.0/24,192.168.2.0/24

7/7/2003 - Shorewall-1.4.6 Beta 2

Problems Corrected:

  1. A problem seen on RH7.3 systems where Shorewall encountered start errors when started using the "service" mechanism has been worked around.

  2. Where a list of IP addresses appears in the DEST column of a DNAT[-] rule, Shorewall incorrectly created multiple DNAT rules in the nat table (one for each element in the list). Shorewall now correctly creates a single DNAT rule with multiple "--to-destination" clauses.

  3. Corrected a problem in Beta 1 where DNS names containing a "-" were mis-handled when they appeared in the DEST column of a rule.

Migration Issues:

  1. In earlier versions, an undocumented feature allowed entries in the host file as follows:

        z    eth1:192.168.1.0/24,eth2:192.168.2.0/24

    This capability was never documented and has been removed in 1.4.6 to allow entries of the following format:

        z   eth1:192.168.1.0/24,192.168.2.0/24

  2. The NAT_ENABLED, MANGLE_ENABLED and MULTIPORT options have been removed from /etc/shorewall/shorewall.conf. These capabilities are now automatically detected by Shorewall (see below).

New Features:

  1. A 'newnotsyn' interface option has been added. This option may be specified in /etc/shorewall/interfaces and overrides the setting NEWNOTSYN=No for packets arriving on the associated interface.

  2. The means for specifying a range of IP addresses in /etc/shorewall/masq to use for SNAT is now documented. ADD_SNAT_ALIASES=Yes is enabled for address ranges.

  3. Shorewall can now add IP addresses to subnets other than the first one on an interface.

  4. DNAT[-] rules may now be used to load balance (round-robin) over a set of servers. Servers may be specified in a range of addresses given as <first address>-<last address>.

    Example:

        DNAT net loc:192.168.10.2-192.168.10.5 tcp 80

  5. The NAT_ENABLED, MANGLE_ENABLED and MULTIPORT configuration options have been removed and have been replaced by code that detects whether these capabilities are present in the current kernel. The output of the start, restart and check commands have been enhanced to report the outcome:

    Shorewall has detected the following iptables/netfilter capabilities:
       NAT: Available
       Packet Mangling: Available
       Multi-port Match: Available
    Verifying Configuration...

  6. Support for the Connection Tracking Match Extension has been added. This extension is available in recent kernel/iptables releases and allows for rules which match against elements in netfilter's connection tracking table. Shorewall automatically detects the availability of this extension and reports its availability in the output of the start, restart and check commands.

    Shorewall has detected the following iptables/netfilter capabilities:
       NAT: Available
       Packet Mangling: Available
       Multi-port Match: Available
       Connection Tracking Match: Available
    Verifying Configuration...

    If this extension is available, the ruleset generated by Shorewall is changed in the following ways:
  7. The shell used to interpret the firewall script (/usr/share/shorewall/firewall) may now be specified using the SHOREWALL_SHELL parameter in shorewall.conf.

  8. An 'ipcalc' command has been added to /sbin/shorewall.

          ipcalc [ <address> <netmask> | <address>/<vlsm> ]

    Examples:

          [root@wookie root]# shorewall ipcalc 192.168.1.0/24
             CIDR=192.168.1.0/24
             NETMASK=255.255.255.0
             NETWORK=192.168.1.0
             BROADCAST=192.168.1.255
          [root@wookie root]#

          [root@wookie root]# shorewall ipcalc 192.168.1.0 255.255.255.0
             CIDR=192.168.1.0/24
             NETMASK=255.255.255.0
             NETWORK=192.168.1.0
             BROADCAST=192.168.1.255
          [root@wookie root]#

    Warning:

    If your shell only supports 32-bit signed arithmatic (ash or dash), then the ipcalc command produces incorrect information for IP addresses 128.0.0.0-1 and for /1 networks. Bash should produce correct information for all valid IP addresses.

  9. An 'iprange' command has been added to /sbin/shorewall.

          iprange <address>-<address>

    This command decomposes a range of IP addressses into a list of network and host addresses. The command can be useful if you need to construct an efficient set of rules that accept connections from a range of network addresses.

    Note: If your shell only supports 32-bit signed arithmetic (ash or dash) then the range may not span 128.0.0.0.

    Example:

          [root@gateway root]# shorewall iprange 192.168.1.4-192.168.12.9
          192.168.1.4/30
          192.168.1.8/29
          192.168.1.16/28
          192.168.1.32/27
          192.168.1.64/26
          192.168.1.128/25
          192.168.2.0/23
          192.168.4.0/22
          192.168.8.0/22
          192.168.12.0/29
          192.168.12.8/31
          [root@gateway root]#

  10. A list of host/net addresses is now allowed in an entry in /etc/shorewall/hosts.

    Example:

        foo    eth1:192.168.1.0/24,192.168.2.0/24

7/4/2003 - Shorewall-1.4.6 Beta 1

Problems Corrected:

  1. A problem seen on RH7.3 systems where Shorewall encountered start errors when started using the "service" mechanism has been worked around.

  2. Where a list of IP addresses appears in the DEST column of a DNAT[-] rule, Shorewall incorrectly created multiple DNAT rules in the nat table (one for each element in the list). Shorewall now correctly creates a single DNAT rule with multiple "--to-destination" clauses.

New Features:

  1. A 'newnotsyn' interface option has been added. This option may be specified in /etc/shorewall/interfaces and overrides the setting NEWNOTSYN=No for packets arriving on the associated interface.

  2. The means for specifying a range of IP addresses in /etc/shorewall/masq to use for SNAT is now documented. ADD_SNAT_ALIASES=Yes is enabled for address ranges.

  3. Shorewall can now add IP addresses to subnets other than the first one on an interface.

  4. DNAT[-] rules may now be used to load balance (round-robin) over a set of servers. Up to 256 servers may be specified in a range of addresses given as <first address>-<last address>.

    Example:

        DNAT net loc:192.168.10.2-192.168.10.5 tcp 80

    Note that this capability has previously been available using a combination of a DNAT- rule and one or more ACCEPT rules. That technique is still preferable for load-balancing over a large number of servers (> 16) since specifying a range in the DNAT rule causes one filter table ACCEPT rule to be generated for each IP address in the range.

  5. The NAT_ENABLED, MANGLE_ENABLED and MULTIPORT configuration options have been removed and have been replaced by code that detects whether these capabilities are present in the current kernel. The output of the start, restart and check commands have been enhanced to report the outcome:

    Shorewall has detected the following iptables/netfilter capabilities:
       NAT: Available
       Packet Mangling: Available
       Multi-port Match: Available
    Verifying Configuration...

  6. Support for the Connection Tracking Match Extension has been added. This extension is available in recent kernel/iptables releases and allows for rules which match against elements in netfilter's connection tracking table. Shorewall automatically detects the availability of this extension and reports its availability in the output of the start, restart and check commands.

    Shorewall has detected the following iptables/netfilter capabilities:
       NAT: Available
       Packet Mangling: Available
       Multi-port Match: Available
       Connection Tracking Match: Available
    Verifying Configuration...

    If this extension is available, the ruleset generated by Shorewall is changed in the following ways:
  7. The shell used to interpret the firewall script (/usr/share/shorewall/firewall) may now be specified using the SHOREWALL_SHELL parameter in shorewall.conf.

6/17/2003 - Shorewall-1.4.5

Problems Corrected:

  1. The command "shorewall debug try <directory>" now correctly traces the attempt.
  2. The INCLUDE directive now works properly in the zones file; previously, INCLUDE in that file was ignored.
  3. /etc/shorewall/routestopped records with an empty second column are no longer ignored.

New Features:

  1. The ORIGINAL DEST column in a DNAT[-] or REDIRECT[-] rule may now contain a list of addresses. If the list begins with "!' then the rule will take effect only if the original destination address in the connection request does not match any of the addresses listed.

6/15/2003 - Shorewall, Kernel 2.4.21 and iptables 1.2.8

The firewall at shorewall.net has been upgraded to the 2.4.21 kernel and iptables 1.2.8 (using the "official" RPM from netfilter.org). No problems have been encountered with this set of software. The Shorewall version is 1.4.4b plus the accumulated changes for 1.4.5.

6/8/2003 - Updated Samples

Thanks to Francesca Smith, the samples have been updated to Shorewall version 1.4.4.

5/29/2003 - Shorewall-1.4.4b

Groan -- This version corrects a problem whereby the --log-level was not being set when logging via syslog. The most commonly reported symptom was that Shorewall messages were being written to the console even though console logging was correctly configured per FAQ 16.

5/27/2003 - Shorewall-1.4.4a

The Fireparse --log-prefix fiasco continues. Tuomo Soini has pointed out that the code in 1.4.4 restricts the length of short zone names to 4 characters. I've produced version 1.4.4a that restores the previous 5-character limit by conditionally omitting the log rule number when the LOGFORMAT doesn't contain '%d'.

5/23/2003 - Shorewall-1.4.4

I apologize for the rapid-fire releases but since there is a potential configuration change required to go from 1.4.3a to 1.4.4, I decided to make it a full release rather than just a bug-fix release.

    Problems corrected:
None.
    New Features:
  1. A REDIRECT- rule target has been added. This target behaves for REDIRECT in the same way as DNAT- does for DNAT in that the Netfilter nat table REDIRECT rule is added but not the companion filter table ACCEPT rule.

  2. The LOGMARKER variable has been renamed LOGFORMAT and has been changed to a 'printf' formatting template which accepts three arguments (the chain name, logging rule number and the disposition). To use LOGFORMAT with fireparse (http://www.fireparse.com), set it as:
     
           LOGFORMAT="fp=%s:%d a=%s "
     
    CAUTION: /sbin/shorewall uses the leading part of the LOGFORMAT string (up to but not including the first '%') to find log messages in the 'show log', 'status' and 'hits' commands. This part should not be omitted (the LOGFORMAT should not begin with "%") and the leading part should be sufficiently unique for /sbin/shorewall to identify Shorewall messages.

  3. When logging is specified on a DNAT[-] or REDIRECT[-] rule, the logging now takes place in the nat table rather than in the filter table. This way, only those connections that actually undergo DNAT or redirection will be logged.

5/20/2003 - Shorewall-1.4.3a

This version primarily corrects the documentation included in the .tgz and in the .rpm. In addition:
  1. (This change is in 1.4.3 but is not documented) If you are running iptables 1.2.7a and kernel 2.4.20, then Shorewall will return reject replies as follows:
       a) tcp - RST
       b) udp - ICMP port unreachable
       c) icmp - ICMP host unreachable
       d) Otherwise - ICMP host prohibited
    If you are running earlier software, Shorewall will follow it's traditional convention:
       a) tcp - RST
       b) Otherwise - ICMP port unreachable
  2. UDP port 135 is now silently dropped in the common.def chain. Remember that this chain is traversed just before a DROP or REJECT policy is enforced.

5/18/2003 - Shorewall 1.4.3

    Problems Corrected:
  1. There were several cases where Shorewall would fail to remove a temporary directory from /tmp. These cases have been corrected.
  2. The rules for allowing all traffic via the loopback interface have been moved to before the rule that drops status=INVALID packets. This insures that all loopback traffic is allowed even if Netfilter connection tracking is confused.
    New Features:
  1.  IPV6-IPV4 (6to4) tunnels are now supported in the /etc/shorewall/tunnels file.
  2. You may now change the leading portion of the --log-prefix used by Shorewall using the LOGMARKER variable in shorewall.conf. By default, "Shorewall:" is used.

5/10/2003 - Shorewall Mirror in Asia

Ed Greshko has established a mirror in Taiwan -- Thanks Ed!

5/8/2003 - Shorewall Mirror in Chile

Thanks to Darcy Ganga, there is now an HTTP mirror in Santiago Chile.

4/21/2003 - Samples updated for Shorewall version 1.4.2

Thanks to Francesca Smith, the sample configurations are now upgraded to Shorewall version 1.4.2.

4/9/2003 - Shorewall 1.4.2

    Problems Corrected:

  1. TCP connection requests rejected out of the common chain are now properly rejected with TCP RST; previously, some of these requests were rejected with an ICMP port-unreachable response.
  2. 'traceroute -I' from behind the firewall previously timed out on the first hop (e.g., to the firewall). This has been worked around.

    New Features:

  1. Where an entry in the/etc/shorewall/hosts file specifies a particular host or network, Shorewall now creates an intermediate chain for handling input from the related zone. This can substantially reduce the number of rules traversed by connections requests from such zones.

  2. Any file may include an INCLUDE directive. An INCLUDE directive consists of the word INCLUDE followed by a file name and causes the contents of the named file to be logically included into the file containing the INCLUDE. File names given in an INCLUDE directive are assumed to reside in /etc/shorewall or in an alternate configuration directory if one has been specified for the command.
     
       Examples:
       shorewall/params.mgmt:
       MGMT_SERVERS=1.1.1.1,2.2.2.2,3.3.3.3
       TIME_SERVERS=4.4.4.4
       BACKUP_SERVERS=5.5.5.5
       ----- end params.mgmt -----
     
     
       shorewall/params:
       # Shorewall 1.3 /etc/shorewall/params
       [..]
       #######################################
     
       INCLUDE params.mgmt   
     
       # params unique to this host here
       #LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE
       ----- end params -----
     
     
       shorewall/rules.mgmt:
       ACCEPT net:$MGMT_SERVERS          $FW    tcp    22
       ACCEPT $FW          net:$TIME_SERVERS    udp    123
       ACCEPT $FW          net:$BACKUP_SERVERS  tcp    22
       ----- end rules.mgmt -----
     
       shorewall/rules:
       # Shorewall version 1.3 - Rules File
       [..]
       #######################################
     
       INCLUDE rules.mgmt    
     
       # rules unique to this host here
       #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
       ----- end rules -----
     
    INCLUDE's may be nested to a level of 3 -- further nested INCLUDE directives are ignored with a warning message.

  3. Routing traffic from an interface back out that interface continues to be a problem. While I firmly believe that this should never happen, people continue to want to do it. To limit the damage that such nonsense produces, I have added a new 'routeback' option in /etc/shorewall/interfaces and /etc/shorewall/hosts. When used in /etc/shorewall/interfaces, the 'ZONE' column may not contain '-'; in other words, 'routeback' can't be used as an option for a multi-zone interface. The 'routeback' option CAN be specified however on individual group entries in /etc/shorewall/hosts.
     
    The 'routeback' option is similar to the old 'multi' option with two exceptions:
     
       a) The option pertains to a particular zone,interface,address tuple.
     
       b) The option only created infrastructure to pass traffic from (zone,interface,address) tuples back to themselves (the 'multi' option affected all (zone,interface,address) tuples associated with the given 'interface').
     
    See the 'Upgrade Issues' for information about how this new option may affect your configuration.

3/24/2003 - Shorewall 1.4.1

This release follows up on 1.4.0. It corrects a problem introduced in 1.4.0 and removes additional warts.

Problems Corrected:

  1. When Shorewall 1.4.0 is run under the ash shell (such as on Bering/LEAF), it can attempt to add ECN disabling rules even if the /etc/shorewall/ecn file is empty. That problem has been corrected so that ECN disabling rules are only added if there are entries in /etc/shorewall/ecn.
New Features:
Note: In the list that follows, the term group refers to a particular network or subnetwork (which may be 0.0.0.0/0 or it may be a host address) accessed through a particular interface. Examples:
eth0:0.0.0.0/0
eth2:192.168.1.0/24
eth3:192.0.2.123
You can use the "shorewall check" command to see the groups associated with each of your zones.
  1. Beginning with Shorewall 1.4.1, if a zone Z comprises more than one group then if there is no explicit Z to Z policy and there are no rules governing traffic from Z to Z then Shorewall will permit all traffic between the groups in the zone.
  2. Beginning with Shorewall 1.4.1, Shorewall will never create rules to handle traffic from a group to itself.
  3. A NONE policy is introduced in 1.4.1. When a policy of NONE is specified from Z1 to Z2:
See the upgrade issues for a discussion of how these changes may affect your configuration.

3/17/2003 - Shorewall 1.4.0

Shorewall 1.4 represents the next step in the evolution of Shorewall. The main thrust of the initial release is simply to remove the cruft that has accumulated in Shorewall over time.

IMPORTANT: Shorewall 1.4.0 requires the iproute package ('ip' utility).

Function from 1.3 that has been omitted from this version include:
  1. The MERGE_HOSTS variable in shorewall.conf is no longer supported. Shorewall 1.4 behavior is the same as 1.3 with MERGE_HOSTS=Yes.

  2. Interface names of the form <device>:<integer> in /etc/shorewall/interfaces now generate an error.

  3. Shorewall 1.4 implements behavior consistent with OLD_PING_HANDLING=No. OLD_PING_HANDLING=Yes will generate an error at startup as will specification of the 'noping' or 'filterping' interface options.

  4. The 'routestopped' option in the /etc/shorewall/interfaces and /etc/shorewall/hosts files is no longer supported and will generate an error at startup if specified.

  5. The Shorewall 1.2 syntax for DNAT and REDIRECT rules is no longer accepted.

  6. The ALLOWRELATED variable in shorewall.conf is no longer supported. Shorewall 1.4 behavior is the same as 1.3 with ALLOWRELATED=Yes.

  7. The icmp.def file has been removed.
Changes for 1.4 include:
  1. The /etc/shorewall/shorewall.conf file has been completely reorganized into logical sections.

  2. LOG is now a valid action for a rule (/etc/shorewall/rules).

  3. The firewall script and version file are now installed in /usr/share/shorewall.

  4. Late arriving DNS replies are now silently dropped in the common chain by default.

  5. In addition to behaving like OLD_PING_HANDLING=No, Shorewall 1.4 no longer unconditionally accepts outbound ICMP packets. So if you want to 'ping' from the firewall, you will need the appropriate rule or policy.

  6. CONTINUE is now a valid action for a rule (/etc/shorewall/rules).

  7. 802.11b devices with names of the form wlan<n> now support the 'maclist' option.

  8. Explicit Congestion Notification (ECN - RFC 3168) may now be turned off on a host or network basis using the new /etc/shorewall/ecn file. To use this facility:

       a) You must be running kernel 2.4.20
       b) You must have applied the patch in
       http://www.shorewall/net/pub/shorewall/ecn/patch.
       c) You must have iptables 1.2.7a installed.

  9. The /etc/shorewall/params file is now processed first so that variables may be used in the /etc/shorewall/shorewall.conf file.

  10. Shorewall now gives a more helpful diagnostic when the 'ipchains' compatibility kernel module is loaded and a 'shorewall start' command is issued.

  11. The SHARED_DIR variable has been removed from shorewall.conf. This variable was for use by package maintainers and was not documented for general use.

  12. Shorewall now ignores 'default' routes when detecting masq'd networks.

3/10/2003 - Shoreall 1.3.14a

A roleup of the following bug fixes and other updates:

2/8/2003 - Shoreawall 1.3.14

New features include

  1. An OLD_PING_HANDLING option has been added to shorewall.conf. When set to Yes, Shorewall ping handling is as it has always been (see http://www.shorewall.net/ping.html).

    When OLD_PING_HANDLING=No, icmp echo (ping) is handled via rules and policies just like any other connection request. The FORWARDPING=Yes option in shorewall.conf and the 'noping' and 'filterping' options in /etc/shorewall/interfaces will all generate an error.

  2. It is now possible to direct Shorewall to create a "label" such as  "eth0:0" for IP addresses that it creates under ADD_IP_ALIASES=Yes and ADD_SNAT_ALIASES=Yes. This is done by specifying the label instead of just the interface name:
     
       a) In the INTERFACE column of /etc/shorewall/masq
       b) In the INTERFACE column of /etc/shorewall/nat
     
  3. Support for OpenVPN Tunnels.

  4. Support for VLAN devices with names of the form $DEV.$VID (e.g., eth0.0)

  5. In /etc/shorewall/tcrules, the MARK value may be optionally followed by ":" and either 'F' or 'P' to designate that the marking will occur in the FORWARD or PREROUTING chains respectively. If this additional specification is omitted, the chain used to mark packets will be determined by the setting of the MARK_IN_FORWARD_CHAIN option in shorewall.conf.

  6. When an interface name is entered in the SUBNET column of the /etc/shorewall/masq file, Shorewall previously masqueraded traffic from only the first subnet defined on that interface. It did not masquerade traffic from:
     
       a) The subnets associated with other addresses on the interface.
       b) Subnets accessed through local routers.
     
    Beginning with Shorewall 1.3.14, if you enter an interface name in the SUBNET column, shorewall will use the firewall's routing table to construct the masquerading/SNAT rules.
     
    Example 1 -- This is how it works in 1.3.14.
      
       [root@gateway test]# cat /etc/shorewall/masq
    #INTERFACE SUBNET ADDRESS
    eth0 eth2 206.124.146.176
    #LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE
       [root@gateway test]# ip route show dev eth2
    192.168.1.0/24 scope link
    192.168.10.0/24 proto kernel scope link src 192.168.10.254
       [root@gateway test]# shorewall start
    ...
    Masqueraded Subnets and Hosts:
    To 0.0.0.0/0 from 192.168.1.0/24 through eth0 using 206.124.146.176
    To 0.0.0.0/0 from 192.168.10.0/24 through eth0 using 206.124.146.176
    Processing /etc/shorewall/tos...
     
    When upgrading to Shorewall 1.3.14, if you have multiple local subnets connected to an interface that is specified in the SUBNET column of an /etc/shorewall/masq entry, your /etc/shorewall/masq file will need changing. In most cases, you will simply be able to remove redundant entries. In some cases though, you might want to change from using the interface name to listing specific subnetworks if the change described above will cause masquerading to occur on subnetworks that you don't wish to masquerade.
     
    Example 2 -- Suppose that your current config is as follows:
      
       [root@gateway test]# cat /etc/shorewall/masq
    #INTERFACE SUBNET ADDRESS
    eth0 eth2 206.124.146.176
    eth0 192.168.10.0/24 206.124.146.176
    #LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE
       [root@gateway test]# ip route show dev eth2
    192.168.1.0/24 scope link
    192.168.10.0/24 proto kernel scope link src 192.168.10.254
    [root@gateway test]#
     
       In this case, the second entry in /etc/shorewall/masq is no longer required.
     
    Example 3 -- What if your current configuration is like this?
     
       [root@gateway test]# cat /etc/shorewall/masq
    #INTERFACE SUBNET ADDRESS
    eth0 eth2 206.124.146.176
    #LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE
       [root@gateway test]# ip route show dev eth2
    192.168.1.0/24 scope link
    192.168.10.0/24 proto kernel scope link src 192.168.10.254
    [root@gateway test]#
     
       In this case, you would want to change the entry in  /etc/shorewall/masq to:
       #INTERFACE              SUBNET                  ADDRESS
    eth0 192.168.1.0/24 206.124.146.176
    #LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE


2/5/2003 - Shorewall Support included in Webmin 1.060

Webmin version 1.060 now has Shorewall support included as standard. See http://www.webmin.com.

2/4/2003 - Shorewall 1.3.14-RC1

Includes the Beta 2 content plus support for OpenVPN tunnels.

1/28/2003 - Shorewall 1.3.14-Beta2

Includes the Beta 1 content plus restores VLAN device names of the form $dev.$vid (e.g., eth0.1)

1/25/2003 - Shorewall 1.3.14-Beta1

The Beta includes the following changes:

  1. An OLD_PING_HANDLING option has been added to shorewall.conf. When set to Yes, Shorewall ping handling is as it has always been (see http://www.shorewall.net/ping.html).

    When OLD_PING_HANDLING=No, icmp echo (ping) is handled via rules and policies just like any other connection request. The FORWARDPING=Yes option in shorewall.conf and the 'noping' and 'filterping' options in /etc/shorewall/interfaces will all generate an error.

  2. It is now possible to direct Shorewall to create a "label" such as  "eth0:0" for IP addresses that it creates under ADD_IP_ALIASES=Yes and ADD_SNAT_ALIASES=Yes. This is done by specifying the label instead of just the interface name:
     
       a) In the INTERFACE column of /etc/shorewall/masq
       b) In the INTERFACE column of /etc/shorewall/nat
     
  3. When an interface name is entered in the SUBNET column of the /etc/shorewall/masq file, Shorewall previously masqueraded traffic from only the first subnet defined on that interface. It did not masquerade traffic from:
     
       a) The subnets associated with other addresses on the interface.
       b) Subnets accessed through local routers.
     
    Beginning with Shorewall 1.3.14, if you enter an interface name in the SUBNET column, shorewall will use the firewall's routing table to construct the masquerading/SNAT rules.
     
    Example 1 -- This is how it works in 1.3.14.
      
       [root@gateway test]# cat /etc/shorewall/masq
    #INTERFACE SUBNET ADDRESS
    eth0 eth2 206.124.146.176
    #LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE
       [root@gateway test]# ip route show dev eth2
    192.168.1.0/24 scope link
    192.168.10.0/24 proto kernel scope link src 192.168.10.254
       [root@gateway test]# shorewall start
    ...
    Masqueraded Subnets and Hosts:
    To 0.0.0.0/0 from 192.168.1.0/24 through eth0 using 206.124.146.176
    To 0.0.0.0/0 from 192.168.10.0/24 through eth0 using 206.124.146.176
    Processing /etc/shorewall/tos...
     
    When upgrading to Shorewall 1.3.14, if you have multiple local subnets connected to an interface that is specified in the SUBNET column of an /etc/shorewall/masq entry, your /etc/shorewall/masq file will need changing. In most cases, you will simply be able to remove redundant entries. In some cases though, you might want to change from using the interface name to listing specific subnetworks if the change described above will cause masquerading to occur on subnetworks that you don't wish to masquerade.
     
    Example 2 -- Suppose that your current config is as follows:
      
       [root@gateway test]# cat /etc/shorewall/masq
    #INTERFACE SUBNET ADDRESS
    eth0 eth2 206.124.146.176
    eth0 192.168.10.0/24 206.124.146.176
    #LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE
       [root@gateway test]# ip route show dev eth2
    192.168.1.0/24 scope link
    192.168.10.0/24 proto kernel scope link src 192.168.10.254
    [root@gateway test]#
     
       In this case, the second entry in /etc/shorewall/masq is no longer required.
     
    Example 3 -- What if your current configuration is like this?
     
       [root@gateway test]# cat /etc/shorewall/masq
    #INTERFACE SUBNET ADDRESS
    eth0 eth2 206.124.146.176
    #LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE
       [root@gateway test]# ip route show dev eth2
    192.168.1.0/24 scope link
    192.168.10.0/24 proto kernel scope link src 192.168.10.254
    [root@gateway test]#
     
       In this case, you would want to change the entry in  /etc/shorewall/masq to:
       #INTERFACE              SUBNET                  ADDRESS
    eth0 192.168.1.0/24 206.124.146.176
    #LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE

1/18/2003 - Shorewall 1.3.13 Documentation in PDF Format

Juraj Ontkanin has produced a PDF containing the Shorewall 1.3.13 documenation. the PDF may be downloaded from

    ftp://slovakia.shorewall.net/mirror/shorewall/pdf/
    http://slovakia.shorewall.net/pub/shorewall/pdf/

1/17/2003 - shorewall.net has MOVED 

Thanks to the generosity of Alex Martin and Rett Consulting, www.shorewall.net and ftp.shorewall.net are now hosted on a system in Bellevue, Washington. A big thanks to Alex for making this happen.

1/13/2003 - Shorewall 1.3.13

Just includes a few things that I had on the burner:

  1. A new 'DNAT-' action has been added for entries in the /etc/shorewall/rules file. DNAT- is intended for advanced users who wish to minimize the number of rules that connection requests must traverse.

    A Shorewall DNAT rule actually generates two iptables rules: a header rewriting rule in the 'nat' table and an ACCEPT rule in the 'filter' table. A DNAT- rule only generates the first of these rules. This is handy when you have several DNAT rules that would generate the same ACCEPT rule.

       Here are three rules from my previous rules file:

            DNAT   net  dmz:206.124.146.177 tcp smtp - 206.124.146.178
            DNAT   net  dmz:206.124.146.177 tcp smtp - 206.124.146.179
            ACCEPT net  dmz:206.124.146.177 tcp www,smtp,ftp,...

       These three rules ended up generating _three_ copies of

             ACCEPT net  dmz:206.124.146.177 tcp smtp

       By writing the rules this way, I end up with only one copy of the ACCEPT rule.

            DNAT-  net  dmz:206.124.146.177 tcp smtp -  206.124.146.178
            DNAT-  net  dmz:206.124.146.177 tcp smtp -  206.124.146.179
            ACCEPT net  dmz:206.124.146.177 tcp www,smtp,ftp,....

  2. The 'shorewall check' command now prints out the applicable policy between each pair of zones.

  3. A new CLEAR_TC option has been added to shorewall.conf. If this option is set to 'No' then Shorewall won't clear the current traffic control rules during [re]start. This setting is intended for use by people that prefer to configure traffic shaping when the network interfaces come up rather than when the firewall is started. If that is what you want to do, set TC_ENABLED=Yes and CLEAR_TC=No and do not supply an /etc/shorewall/tcstart file. That way, your traffic shaping rules can still use the 'fwmark' classifier based on packet marking defined in /etc/shorewall/tcrules.

  4. A new SHARED_DIR variable has been added that allows distribution packagers to easily move the shared directory (default /usr/lib/shorewall). Users should never have a need to change the value of this shorewall.conf setting.

1/6/2003 - BURNOUT

Until further notice, I will not be involved in either Shorewall Development or Shorewall Support

-Tom Eastep

12/30/2002 - Shorewall Documentation in PDF Format

Juraj Ontkanin has produced a PDF containing the Shorewall 1.3.12 documenation. the PDF may be downloaded from

    ftp://slovakia.shorewall.net/mirror/shorewall/pdf/
    http://slovakia.shorewall.net/pub/shorewall/pdf/

12/27/2002 - Shorewall 1.3.12 Released

Features include:

  1. "shorewall refresh" now reloads the traffic shaping rules (tcrules and tcstart).
  2. "shorewall debug [re]start" now turns off debugging after an error occurs. This places the point of the failure near the end of the trace rather than up in the middle of it.
  3. "shorewall [re]start" has been speeded up by more than 40% with my configuration. Your milage may vary.
  4. A "shorewall show classifiers" command has been added which shows the current packet classification filters. The output from this command is also added as a separate page in "shorewall monitor"
  5. ULOG (must be all caps) is now accepted as a valid syslog level and causes the subject packets to be logged using the ULOG target rather than the LOG target. This allows you to run ulogd (available from http://www.gnumonks.org/projects/ulogd) and log all Shorewall messages to a separate log file.
  6. If you are running a kernel that has a FORWARD chain in the mangle table ("shorewall show mangle" will show you the chains in the mangle table), you can set MARK_IN_FORWARD_CHAIN=Yes in shorewall.conf. This allows for marking input packets based on their destination even when you are using Masquerading or SNAT.
  7. I have cluttered up the /etc/shorewall directory with empty 'init', 'start', 'stop' and 'stopped' files. If you already have a file with one of these names, don't worry -- the upgrade process won't overwrite your file.
  8. I have added a new RFC1918_LOG_LEVEL variable to shorewall.conf. This variable specifies the syslog level at which packets are logged as a result of entries in the /etc/shorewall/rfc1918 file. Previously, these packets were always logged at the 'info' level.

12/20/2002 - Shorewall 1.3.12 Beta 3

This version corrects a problem with Blacklist logging. In Beta 2, if BLACKLIST_LOG_LEVEL was set to anything but ULOG, the firewall would fail to start and "shorewall refresh" would also fail.

12/20/2002 - Shorewall 1.3.12 Beta 2

The first public Beta version of Shorewall 1.3.12 is now available (Beta 1 was made available only to a limited audience).

Features include:
  1. "shorewall refresh" now reloads the traffic shaping rules (tcrules and tcstart).
  2. "shorewall debug [re]start" now turns off debugging after an error occurs. This places the point of the failure near the end of the trace rather than up in the middle of it.
  3. "shorewall [re]start" has been speeded up by more than 40% with my configuration. Your milage may vary.
  4. A "shorewall show classifiers" command has been added which shows the current packet classification filters. The output from this command is also added as a separate page in "shorewall monitor"
  5. ULOG (must be all caps) is now accepted as a valid syslog level and causes the subject packets to be logged using the ULOG target rather than the LOG target. This allows you to run ulogd (available from http://www.gnumonks.org/projects/ulogd) and log all Shorewall messages to a separate log file.
  6. If you are running a kernel that has a FORWARD chain in the mangle table ("shorewall show mangle" will show you the chains in the mangle table), you can set MARK_IN_FORWARD_CHAIN=Yes in shorewall.conf. This allows for marking input packets based on their destination even when you are using Masquerading or SNAT.
  7. I have cluttered up the /etc/shorewall directory with empty 'init', 'start', 'stop' and 'stopped' files. If you already have a file with one of these names, don't worry -- the upgrade process won't overwrite your file.
You may download the Beta from:
http://www.shorewall.net/pub/shorewall/Beta
ftp://ftp.shorewall.net/pub/shorewall/Beta

12/12/2002 - Mandrake Multi Network Firewall Powered by Mandrake Linux

Shorewall is at the center of MandrakeSoft's recently-announced Multi Network Firewall (MNF) product. Here is the press release.

12/7/2002 - Shorewall Support for Mandrake 9.0

Two months and 3 days after I ordered Mandrake 9.0, it was finally delivered. I have installed 9.0 on one of my systems and I am now in a position to support Shorewall users who run Mandrake 9.0.

12/6/2002 - Debian 1.3.11a Packages Available

Apt-get sources listed at http://security.dsi.unimi.it/~lorenzo/debian.html.

12/3/2002 - Shorewall 1.3.11a

This is a bug-fix roll up which includes Roger Aich's fix for DNAT with excluded subnets (e.g., "DNAT foo!bar ..."). Current 1.3.11 users who don't need rules of this type need not upgrade to 1.3.11.

11/24/2002 - Shorewall 1.3.11

In this version:

11/14/2002 - Shorewall Documentation in PDF Format

Juraj Ontkanin has produced a PDF containing the Shorewall 1.3.10 documenation. the PDF may be downloaded from

    ftp://slovakia.shorewall.net/mirror/shorewall/pdf/
    http://slovakia.shorewall.net/pub/shorewall/pdf/

11/09/2002 - Shorewall is Back at SourceForge

The main Shorewall 1.3 web site is now back at SourceForge at http://shorewall.sf.net.

11/09/2002 - Shorewall 1.3.10

In this version:

10/24/2002 - Shorewall is now in Gentoo Linux

Alexandru Hartmann reports that his Shorewall package is now a part of the Gentoo Linux distribution. Thanks Alex!

10/23/2002 - Shorewall 1.3.10 Beta 1

In this version:
You may download the Beta from:

10/10/2002 -  Debian 1.3.9b Packages Available

Apt-get sources listed at http://security.dsi.unimi.it/~lorenzo/debian.html.

10/9/2002 - Shorewall 1.3.9b

This release rolls up fixes to the installer and to the firewall script.

10/6/2002 - Shorewall.net now running on RH8.0

The firewall and server here at shorewall.net are now running RedHat release 8.0.

9/30/2002 - Shorewall 1.3.9a

Roles up the fix for broken tunnels.

9/30/2002 - TUNNELS Broken in 1.3.9!!!

There is an updated firewall script at ftp://www.shorewall.net/pub/shorewall/errata/1.3.9/firewall -- copy that file to /usr/lib/shorewall/firewall.

9/28/2002 - Shorewall 1.3.9

In this version:

9/23/2002 - Full Shorewall Site/Mailing List Archive Search Capability Restored

Brown Paper Bag A couple of recent configuration changes at www.shorewall.net broke the Search facility:
  1. Mailing List Archive Search was not available.
  2. The Site Search index was incomplete
  3. Only one page of matches was presented.
Hopefully these problems are now corrected.

9/23/2002 - Full Shorewall Site/Mailing List Archive Search Capability Restored

A couple of recent configuration changes at www.shorewall.net had the negative effect of breaking the Search facility:
  1. Mailing List Archive Search was not available.
  2. The Site Search index was incomplete
  3. Only one page of matches was presented.
Hopefully these problems are now corrected.

9/18/2002 -  Debian 1.3.8 Packages Available

Apt-get sources listed at http://security.dsi.unimi.it/~lorenzo/debian.html.

9/16/2002 - Shorewall 1.3.8

In this version:

9/11/2002 - Debian 1.3.7c Packages Available

Apt-get sources listed at http://security.dsi.unimi.it/~lorenzo/debian.html.

9/2/2002 - Shorewall 1.3.7c

This is a role up of a fix for "DNAT" rules where the source zone is $FW (fw).

8/31/2002 - I'm not available

I'm currently on vacation  -- please respect my need for a couple of weeks free of Shorewall problem reports.

-Tom

8/26/2002 - Shorewall 1.3.7b

This is a role up of the "shorewall refresh" bug fix and the change which reverses the order of "dhcp" and "norfc1918" checking.

8/26/2002 - French FTP Mirror is Operational

ftp://france.shorewall.net/pub/mirrors/shorewall is now available.

8/25/2002 - Shorewall Mirror in France

Thanks to a Shorewall user in Paris, the Shorewall web site is now mirrored at http://france.shorewall.net.

8/25/2002 - Shorewall 1.3.7a Debian Packages Available

Lorenzo Martignoni reports that the packages for version 1.3.7a are available at http://security.dsi.unimi.it/~lorenzo/debian.html.

8/22/2002 - Shorewall 1.3.7 Wins a Brown Paper Bag Award for its Author -- Shorewall 1.3.7a releasedBrown Paper Bag Graphic

1.3.7a corrects problems occurring in rules file processing when starting Shorewall 1.3.7.

8/22/2002 - Shorewall 1.3.7 Released 8/13/2002

Features in this release include:

I would like to thank John Distler for his valuable input regarding TCP SYN and ICMP treatment in Shorewall. That input has led to marked improvement in Shorewall in the last two releases.

8/13/2002 - Documentation in the CVS Repository

The Shorewall-docs project now contains just the HTML and image files - the Frontpage files have been removed.

8/7/2002 - STABLE branch added to CVS Repository

This branch will only be updated after I release a new version of Shorewall so you can always update from this branch to get the latest stable tree.

8/7/2002 - Upgrade Issues section added to the Errata Page

Now there is one place to go to look for issues involved with upgrading to recent versions of Shorewall.

8/7/2002 - Shorewall 1.3.6

This is primarily a bug-fix rollup with a couple of new features:

7/30/2002 - Shorewall 1.3.5b Released

This interim release:

7/29/2002 - New Shorewall Setup Guide Available

The first draft of this guide is available at http://www.shorewall.net/shorewall_setup_guide.htm. The guide is intended for use by people who are setting up Shorewall to manage multiple public IP addresses and by people who want to learn more about Shorewall than is described in the single-address guides. Feedback on the new guide is welcome.

7/28/2002 - Shorewall 1.3.5 Debian Package Available

Lorenzo Martignoni reports that the packages are version 1.3.5a and are available at http://security.dsi.unimi.it/~lorenzo/debian.html.

7/27/2002 - Shorewall 1.3.5a Released

This interim release restores correct handling of REDIRECT rules.

7/26/2002 - Shorewall 1.3.5 Released

This will be the last Shorewall release for a while. I'm going to be focusing on rewriting a lot of the documentation.

  In this version:

7/16/2002 - New Mirror in Argentina

Thanks to Arturo "Buanzo" Busleiman, there is now a Shorewall mirror in Argentina. Thanks Buanzo!!!

7/16/2002 - Shorewall 1.3.4 Released

In this version:

7/8/2002 - Shorewall 1.3.3 Debian Package Available

Lorenzo Marignoni reports that the packages are available at http://security.dsi.unimi.it/~lorenzo/debian.html.

7/6/2002 - Shorewall 1.3.3 Released

In this version:

6/25/2002 - Samples Updated for 1.3.2

The comments in the sample configuration files have been updated to reflect new features introduced in Shorewall 1.3.2.

6/25/2002 - Shorewall 1.3.1 Debian Package Available

Lorenzo Marignoni reports that the package is available at http://security.dsi.unimi.it/~lorenzo/debian.html.

6/19/2002 - Documentation Available in PDF Format

Thanks to Mike Martinez, the Shorewall Documentation is now available for download in Adobe PDF format.

6/16/2002 - Shorewall 1.3.2 Released

In this version:

6/6/2002 - Why CVS Web access is Password Protected

Last weekend, I installed the CVS Web package to provide brower-based access to the Shorewall CVS repository. Since then, I have had several instances where my server was almost unusable due to the high load generated by website copying tools like HTTrack and WebStripper. These mindless tools:

These tools/weapons are particularly damaging when combined with CVS Web because they doggedly follow every link in the cgi-generated HTML resulting in 1000s of executions of the cvsweb.cgi script. Yesterday, I spend several hours implementing measures to block these tools but unfortunately, these measures resulted in my server OOM-ing under even moderate load.

Until I have the time to understand the cause of the OOM (or until I buy more RAM if that is what is required), CVS Web access will remain Password Protected.

6/5/2002 - Shorewall 1.3.1 Debian Package Available

Lorenzo Marignoni reports that the package is available at http://security.dsi.unimi.it/~lorenzo/debian.html.

6/2/2002 - Samples Corrected

The 1.3.0 samples configurations had several serious problems that prevented DNS and SSH from working properly. These problems have been corrected in the 1.3.1 samples.

6/1/2002 - Shorewall 1.3.1 Released

Hot on the heels of 1.3.0, this release:

5/29/2002 - Shorewall 1.3.0 Released

In addition to the changes in Beta 1, Beta 2 and RC1, Shorewall 1.3.0 includes:

5/23/2002 - Shorewall 1.3 RC1 Available

In addition to the changes in Beta 1 and Beta 2, RC1 (Version 1.2.92) incorporates the following:

5/19/2002 - Shorewall 1.3 Beta 2 Available

In addition to the changes in Beta 1, this release which carries the designation 1.2.91 adds:

5/17/2002 - Shorewall 1.3 Beta 1 Available

Beta 1 carries the version designation 1.2.90 and implements the following features:

5/4/2002 - Shorewall 1.2.13 is Available

In this version:

4/30/2002 - Shorewall Debian News

Lorenzo Marignoni reports that Shorewall 1.2.12 is now in both the Debian Testing Branch and the Debian Unstable Branch.

4/20/2002 - Shorewall 1.2.12 is Available

4/17/2002 - Shorewall Debian News

Lorenzo Marignoni reports that:

Thanks, Lorenzo!

4/16/2002 - Shorewall 1.2.11 RPM Available for SuSE

Thanks to Stefan Mohr, there is now a Shorewall 1.2.11 SuSE RPM available.

4/13/2002 - Shorewall 1.2.11 Available

In this version:

4/13/2002 - Hamburg Mirror now has FTP

Stefan now has an FTP mirror at ftp://germany.shorewall.net/pub/shorewall.  Thanks Stefan!

4/12/2002 - New Mirror in Hamburg

Thanks to Stefan Mohr, there is now a mirror of the Shorewall website at http://germany.shorewall.net.

4/10/2002 - Shorewall QuickStart Guide Version 1.1 Available

Version 1.1 of the QuickStart Guide is now available. Thanks to those who have read version 1.0 and offered their suggestions. Corrections have also been made to the sample scripts.

4/9/2002 - Shorewall QuickStart Guide Version 1.0 Available

Version 1.0 of the QuickStart Guide is now available. This Guide and its accompanying sample configurations are expected to provide a replacement for the recently withdrawn parameterized samples.

4/8/2002 - Parameterized Samples Withdrawn

Although the parameterized samples have allowed people to get a firewall up and running quickly, they have unfortunately set the wrong level of expectation among those who have used them. I am therefore withdrawing support for the samples and I am recommending that they not be used in new Shorewall installations.

4/2/2002 - Updated Log Parser

John Lodge has provided an updated version of his CGI-based log parser with corrected date handling.

3/30/2002 - Shorewall Website Search Improvements

The quick search on the home page now excludes the mailing list archives. The Extended Search allows excluding the archives or restricting the search to just the archives. An archive search form is also available on the mailing list information page.

3/28/2002 - Debian Shorewall News (From Lorenzo Martignoni)

3/25/2002 - Log Parser Available

John Lodge has provided a CGI-based log parser for Shorewall. Thanks John.

3/20/2002 - Shorewall 1.2.10 Released

In this version:

3/11/2002 - Shorewall 1.2.9 Released

In this version:

3/1/2002 - 1.2.8 Debian Package is Available

See http://security.dsi.unimi.it/~lorenzo/debian.html

2/25/2002 - New Two-interface Sample

I've enhanced the two interface sample to allow access from the firewall to servers in the local zone - http://www.shorewall.net/pub/shorewall/LATEST.samples/two-interfaces.tgz

2/23/2002 - Shorewall 1.2.8 Released

Do to a serious problem with 1.2.7, I am releasing 1.2.8. It corrects problems associated with the lock file used to prevent multiple state-changing operations from occuring simultaneously. My apologies for any inconvenience my carelessness may have caused.

2/22/2002 - Shorewall 1.2.7 Released

In this version:

2/18/2002 - 1.2.6 Debian Package is Available

See http://security.dsi.unimi.it/~lorenzo/debian.html

2/8/2002 - Shorewall 1.2.6 Released

In this version:

2/4/2002 - Shorewall 1.2.5 Debian Package Available

see http://security.dsi.unimi.it/~lorenzo/debian.html

2/1/2002 - Shorewall 1.2.5 Released

Due to installation problems with Shorewall 1.2.4, I have released Shorewall 1.2.5. Sorry for the rapid-fire development.

In version 1.2.5:

1/28/2002 - Shorewall 1.2.4 Released

1/27/2002 - Shorewall 1.2.3 Debian Package Available -- see http://security.dsi.unimi.it/~lorenzo/debian.html

1/20/2002 - Corrected firewall script available 

Corrects a problem with BLACKLIST_LOGLEVEL. See the errata for details.

1/19/2002 - Shorewall 1.2.3 Released

This is a minor feature and bugfix release. The single new feature is:

The following problems were corrected:

1/18/2002 - Shorewall 1.2.2 packaged with new LEAF release

Jacques Nilo and Eric Wolzak have released a kernel 2.4.16 LEAF distribution that includes Shorewall 1.2.2. See http://leaf.sourceforge.net/devel/jnilo for details.

1/11/2002 - Debian Package (.deb) Now Available - Thanks to Lorenzo Martignoni, a 1.2.2 Shorewall Debian package is now available. There is a link to Lorenzo's site from the Shorewall download page.

1/9/2002 - Updated 1.2.2 /sbin/shorewall available - This corrected version restores the "shorewall status" command to health.

1/8/2002 - Shorewall 1.2.2 Released

In version 1.2.2

1/5/2002 - New Parameterized Samples (version 1.2.0) released. These are minor updates to the previously-released samples. There are two new rules added:

See the README file for upgrade instructions.

1/1/2002 - Shorewall Mailing List Moving

The Shorewall mailing list hosted at Sourceforge is moving to Shorewall.net. If you are a current subscriber to the list at Sourceforge, please see these instructions. If you would like to subscribe to the new list, visit http://www.shorewall.net/mailman/listinfo/shorewall-users.

12/31/2001 - Shorewall 1.2.1 Released

In version 1.2.1:

12/21/2001 - Shorewall 1.2.0 Released! - I couldn't resist releasing 1.2 on 12/21/2001

Version 1.2 contains the following new features:

For the next month or so, I will continue to provide corrections to version 1.1.18 as necessary so that current version 1.1.x users will not be forced into a quick upgrade to 1.2.0 just to have access to bug fixes.

For those of you who have installed one of the Beta RPMS, you will need to use the "--oldpackage" option when upgrading to 1.2.0:

rpm -Uvh --oldpackage shorewall-1.2-0.noarch.rpm

12/19/2001 - Thanks to Steve Cowles, there is now a Shorewall mirror in Texas. This web site is mirrored at http://www.infohiiway.com/shorewall and the ftp site is at ftp://ftp.infohiiway.com/pub/mirrors/shorewall.  

11/30/2001 - A new set of the parameterized Sample Configurations has been released. In this version:

11/20/2001 - The current version of Shorewall is 1.1.18. 

In this version:

11/19/2001 - Thanks to Juraj Ontkanin, there is now a Shorewall mirror in the Slovak Republic. The website is now mirrored at http://www.nrg.sk/mirror/shorewall and the FTP site is mirrored at ftp://ftp.nrg.sk/mirror/shorewall.

11/2/2001 - Announcing Shorewall Parameter-driven Sample Configurations. There are three sample configurations:

Samples may be downloaded from ftp://ftp.shorewall.net/pub/shorewall/samples-1.1.17 . See the README file for instructions.

11/1/2001 - The current version of Shorewall is 1.1.17.  I intend this to be the last of the 1.1 Shorewall releases.

In this version:

10/22/2001 - The current version of Shorewall is 1.1.16. In this version:

10/15/2001 - The current version of Shorewall is 1.1.15. In this version:

10/4/2001 - The current version of Shorewall is 1.1.14. In this version

9/12/2001 - The current version of Shorewall is 1.1.13. In this version

8/28/2001 - The current version of Shorewall is 1.1.12. In this version

7/28/2001 - The current version of Shorewall is 1.1.11. In this version

7/6/2001 - The current version of Shorewall is 1.1.10. In this version

6/23/2001 - The current version of Shorewall is 1.1.9. In this version

6/18/2001 - The current version of Shorewall is 1.1.8. In this version

6/2/2001 - The current version of Shorewall is 1.1.7. In this version

5/25/2001 - The current version of Shorewall is 1.1.6. In this version

5/20/2001 - The current version of Shorewall is 1.1.5. In this version

5/10/2001 - The current version of Shorewall is 1.1.4. In this version

4/28/2001 - The current version of Shorewall is 1.1.3. In this version

4/12/2001 - The current version of Shorewall is 1.1.2. In this version

4/8/2001 - Shorewall is now affiliated with the Leaf Project Leaf Logo

4/5/2001 - The current version of Shorewall is 1.1.1. In this version:

3/25/2001 - The current version of Shorewall is 1.1.0. In this version:

3/19/2001 - The current version of Shorewall is 1.0.4. This version:

3/13/2001 - The current version of Shorewall is 1.0.3. This is a bug-fix release with no new features.

3/8/2001 - The current version of Shorewall is 1.0.2. It supports an additional "gw" (gateway) zone for tunnels and it supports IPSEC tunnels with end-points on the firewall. There is also a .lrp available now.