====== Shorewall_Firewall ======
===== Shorewall provides a front-end to iptables. =====
It allows configuration of iptables without knowing actual ports, but rather services running, such as Web, SSH, SVN etc. etc.
===== Shorewall is a large application which handles the following Jobs: =====
  * Handle a single public IP address
  * Standalone Linux System
  * Two-interface Linux System acting as a firewall/router for a small local network.
  * Three-interface Linux System acting as a firewall/router for a small local network and a DMZ.
  * Handle Multiple Public IP addresses!!
Currently, we only want Shorewall to cater for a **Standalone Linux System**. 
The Shorewall website http://www.shorewall.net provides excellent and definitive guides and how-to's on each of the points/jobs listed above!
===== Versions of Shorewall =====
There are currently two versions of Shorewall: 2.X and 3.X and there are different guides for each. 
Debian Sarge as on 22nd Oct, 2006 uses version 2.X 
Debian Etch(testing) as on 22nd Oct, 2006 uses version 3.X
The setup guides for each of the above versions are available on the main http://www.shorewall.net website - and should be taken from there directly. Click on the **Documentation** link in the left menu.
===== Setup & Installation of Shorewall - Version 3.X =====
 apt-get install shorewall
The above installs the latest version of shorewall depending on whether you are running Debian Sarge or Debian Etch (testing). Due to the compulsory configuration required, debian disables the startup of Shorewall in /etc/default/shorewall (startup=0) on purpose. Only when Shorewall is configured - should the above file be enabled (startup=1).
The direct link to the shorewall how-to for **Standalone Linux System** is available at: http://www.shorewall.net/standalone.htm
==== Location of Default Shorewall Files ====
/usr/share/doc/shorewall/default-config  = Default Config Files for Shorewall. 
/usr/share/shorewall = Default macros & rules for Shorewall.
==== Copy over and Edit Default Config files to /etc/shorewall/ ====
Following the how-to guide on the main shorewall website (http://www.shorewall.net/standalone.htm)
 #1. - Copy over the modules file (as described in how-to)
 cp /usr/share/doc/shorewall/default-config/modules /etc/shorewall/
 #2. - Copy over the zones file and enter the 2 zones - the internet (ipv4 and the firewall)
 cp /usr/share/doc/shorewall/default-config/zones /etc/shorewall/
 uncomment the following two lines:
        fw      firewall
        net     ipv4
 comment in if required (make sure there is only 1 line {fw     firewall}:
        #fw     firewall
 #3. - Copy over the default policy. (This default policy is the same as setting the main iptables policy)
 cp /usr/share/doc/shorewall/default-config/policy /etc/shorewall/
 uncomment(or include):
        $FW             net             ACCEPT
        net             all             DROP            info
        all             all             REJECT          info
 #4. - Copy over and include the default interface
 cp /usr/share/doc/shorewall/default-config/interfaces /etc/shorewall/
 uncomment(include):
                        net     eth0    136.201.192.144
 #5. - Copy over the rules file which will be edited later.
 cp /usr/share/doc/shorewall/default-config/rules /etc/shorewall/
==== Copy over the required Macros to /etc/shorewall/ ====
 cp /usr/share/shorewall/macro.service /etc/shorewall/
What are macros? 
Macros are where Service based Firewall rules are made. These macros are then used inside the /etc/shorewall/rules file eliminating the need for several entries and port numbers. The macro.Web (for the web service) is:
 # Shorewall version 3.0 - Web Macro
 #
 # /usr/share/shorewall/macro.Web
 #
 #       This macro handles WWW traffic (secure and insecure).
 #
 ###############################################################################
 #ACTION SOURCE  DEST    PROTO   DEST    SOURCE  ORIGINAL        RATE    USER/
 #                       PORT    PORT(S) DEST            LIMIT   GROUP
 PARAM   -       -       tcp     80
 PARAM   -       -       tcp     443
 #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
Once this macro.Web is copied to /etc/shorewall/ it is used by calling the following line inside /etc/shorewall/rules
 Web/ACCEPT  net       $FW
==== Create a custom macro.Munin (if required) ====
Because munin-node (statistics) uses port 4949, Shorewall does not have a pre-existing macro. A simple one can be created in /etc/shorewall/macro.Munin having the following config:
 # Shorewall version 3.0 - Munin Macro
 #
 #       This macro handles Munin traffic.
 #
 ###############################################################################
 #ACTION SOURCE  DEST    PROTO   DEST    SOURCE  ORIGINAL        RATE    USER/
 #                               PORT    PORT(S) DEST            LIMIT   GROUP
 PARAM   -       -       tcp     4949
 #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
==== Final Config of /etc/shorewall/rules to Include macros ====
As per following the instructions on www.shorewall.net the macros are added in after: SECTION NEW
 #############################################################################################################
 #ACTION SOURCE          DEST            PROTO   DEST    SOURCE          ORIGINAL        RATE            USER/
 #                               PORT    PORT(S)         DEST            LIMIT           GROUP
 #SECTION ESTABLISHED
 #SECTION RELATED
 SECTION NEW
 Web/ACCEPT  net       $FW
 SSH/ACCEPT  net       $FW
 AllowICMPs/ACCEPT  net       $FW
 Ping/ACCEPT  net       $FW
 SNMP/ACCEPT  net       $FW
 Munin/ACCEPT  net       $FW
 #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
==== Finally - Config Shorewall to start ====
 vi /etc/default/shorewall
 #change startup=0 to startup=1
===== Conclusion on Shorewall =====
Shorewall similar to other applications (e.g. apache), tries to keep various config files seperated out for easy management (instead of in one huge config). Shorewall keeps seperate configs for services (in macro files). Should a service change requirements - only the macro requires editing.
----
More Info: 
http://www.besy.co.uk/projects/debian/sarge_mail_server_howto.htm