From f158c11a412e6d3d7d7d95a3e7c19eec99532694 Mon Sep 17 00:00:00 2001 From: teastep Date: Thu, 22 Aug 2002 21:33:54 +0000 Subject: [PATCH] Changes for 1.3.7 git-svn-id: https://shorewall.svn.sourceforge.net/svnroot/shorewall/trunk@208 fbd18981-670d-0410-9b5c-8dc0c1a9a2bb --- Lrp/etc/init.d/shorewall | 49 +- Lrp/etc/shorewall/common.def | 9 +- Lrp/etc/shorewall/icmp.def | 20 +- Lrp/etc/shorewall/interfaces | 14 +- Lrp/etc/shorewall/policy | 2 +- Lrp/etc/shorewall/rfc1918 | 2 +- Lrp/etc/shorewall/shorewall.conf | 8 + Lrp/var/lib/shorewall/version | 2 +- STABLE/changelog.txt | 27 +- STABLE/common.def | 2 +- STABLE/documentation/Documentation.htm | 1747 +++++++++-------- STABLE/documentation/Documentation_Index.htm | 28 + STABLE/documentation/FAQ.htm | 532 ++--- STABLE/documentation/GnuCopyright.htm | 75 +- STABLE/documentation/IPIP.htm | 130 +- STABLE/documentation/IPSEC.htm | 218 +- STABLE/documentation/Install.htm | 174 +- STABLE/documentation/NAT.htm | 50 +- STABLE/documentation/News.htm | 899 +++++---- STABLE/documentation/PPTP.htm | 585 +++--- STABLE/documentation/ProxyARP.htm | 93 +- .../documentation/Shorewall_index_frame.htm | 111 +- STABLE/documentation/blacklisting_support.htm | 65 +- .../configuration_file_basics.htm | 121 +- STABLE/documentation/copyright.htm | 13 +- STABLE/documentation/dhcp.htm | 49 +- STABLE/documentation/download.htm | 185 +- STABLE/documentation/errata.htm | 301 ++- STABLE/documentation/errata_1.htm | 79 +- STABLE/documentation/errata_2.htm | 439 +++++ STABLE/documentation/fallback.htm | 49 +- STABLE/documentation/gnu_mailman.htm | 25 +- STABLE/documentation/images/DMZ.jpg | Bin 22962 -> 0 bytes STABLE/documentation/images/DMZ2.jpg | Bin 25994 -> 0 bytes STABLE/documentation/images/DMZ3.jpg | Bin 22893 -> 0 bytes STABLE/documentation/images/DMZ4.JPG | Bin 26127 -> 0 bytes STABLE/documentation/images/DMZ5.JPG | Bin 26088 -> 0 bytes STABLE/documentation/images/DMZ6.JPG | Bin 24495 -> 0 bytes STABLE/documentation/images/Mobile.png | Bin 0 -> 17619 bytes STABLE/documentation/images/TwoNets1.jpg | Bin 28579 -> 28579 bytes STABLE/documentation/images/TwoNets1.png | Bin 0 -> 21885 bytes STABLE/documentation/images/basics.jpg | Bin 16042 -> 0 bytes STABLE/documentation/images/basics.png | Bin 0 -> 18749 bytes STABLE/documentation/images/basics1.jpg | Bin 17809 -> 0 bytes STABLE/documentation/images/basics1.png | Bin 0 -> 20322 bytes STABLE/documentation/images/dmz1.png | Bin 0 -> 26287 bytes STABLE/documentation/images/dmz2.png | Bin 0 -> 33141 bytes STABLE/documentation/images/dmz3.png | Bin 0 -> 28424 bytes STABLE/documentation/images/dmz4.png | Bin 0 -> 31790 bytes STABLE/documentation/images/dmz5.png | Bin 0 -> 32715 bytes STABLE/documentation/images/dmz6.png | Bin 0 -> 35088 bytes STABLE/documentation/images/network.jpg | Bin 30177 -> 0 bytes STABLE/documentation/images/network.png | Bin 0 -> 53638 bytes STABLE/documentation/images/proxyarp.jpg | Bin 14272 -> 0 bytes STABLE/documentation/images/proxyarp.png | Bin 0 -> 10892 bytes STABLE/documentation/images/staticnat.jpg | Bin 13595 -> 0 bytes STABLE/documentation/images/staticnat.png | Bin 0 -> 9725 bytes STABLE/documentation/index.htm | 7 +- STABLE/documentation/kernel.htm | 13 +- STABLE/documentation/mailing_list.htm | 71 +- .../documentation/mailing_list_problems.htm | 21 +- STABLE/documentation/myfiles.htm | 102 +- STABLE/documentation/ports.htm | 20 +- STABLE/documentation/quotes.htm | 13 +- STABLE/documentation/samba.htm | 125 +- .../documentation/seattlefirewall_index.htm | 274 ++- STABLE/documentation/shoreline.htm | 73 +- .../shorewall_extension_scripts.htm | 81 +- STABLE/documentation/shorewall_features.htm | 131 +- .../shorewall_firewall_structure.htm | 30 +- STABLE/documentation/shorewall_index.htm | 5 +- .../shorewall_mailing_list_migration.htm | 13 +- STABLE/documentation/shorewall_mirrors.htm | 51 +- .../documentation/shorewall_prerequisites.htm | 43 +- .../shorewall_quickstart_guide.htm | 231 +-- .../documentation/shorewall_setup_guide.htm | 1672 ++++++++-------- STABLE/documentation/spam_filters.htm | 17 +- STABLE/documentation/standalone.htm | 253 +-- .../starting_and_stopping_shorewall.htm | 147 +- STABLE/documentation/subnet_masks.htm | 13 +- STABLE/documentation/support.htm | 89 +- STABLE/documentation/three-interface.htm | 764 +++---- STABLE/documentation/traffic_shaping.htm | 185 +- STABLE/documentation/troubleshoot.htm | 117 +- STABLE/documentation/two-interface.htm | 568 +++--- .../whitelisting_under_shorewall.htm | 281 +++ STABLE/fallback.sh | 2 +- STABLE/firewall | 49 +- STABLE/icmp.def | 20 +- STABLE/install.sh | 10 +- STABLE/interfaces | 14 +- STABLE/policy | 2 +- STABLE/releasenotes.txt | 23 +- STABLE/rfc1918 | 2 +- STABLE/shorewall.conf | 8 + STABLE/shorewall.spec | 4 +- STABLE/uninstall.sh | 2 +- 97 files changed, 6516 insertions(+), 5133 deletions(-) create mode 100644 STABLE/documentation/Documentation_Index.htm create mode 100644 STABLE/documentation/errata_2.htm delete mode 100644 STABLE/documentation/images/DMZ.jpg delete mode 100644 STABLE/documentation/images/DMZ2.jpg delete mode 100644 STABLE/documentation/images/DMZ3.jpg delete mode 100644 STABLE/documentation/images/DMZ4.JPG delete mode 100644 STABLE/documentation/images/DMZ5.JPG delete mode 100644 STABLE/documentation/images/DMZ6.JPG create mode 100644 STABLE/documentation/images/Mobile.png create mode 100644 STABLE/documentation/images/TwoNets1.png delete mode 100644 STABLE/documentation/images/basics.jpg create mode 100644 STABLE/documentation/images/basics.png delete mode 100644 STABLE/documentation/images/basics1.jpg create mode 100644 STABLE/documentation/images/basics1.png create mode 100644 STABLE/documentation/images/dmz1.png create mode 100644 STABLE/documentation/images/dmz2.png create mode 100644 STABLE/documentation/images/dmz3.png create mode 100644 STABLE/documentation/images/dmz4.png create mode 100644 STABLE/documentation/images/dmz5.png create mode 100644 STABLE/documentation/images/dmz6.png delete mode 100644 STABLE/documentation/images/network.jpg create mode 100644 STABLE/documentation/images/network.png delete mode 100644 STABLE/documentation/images/proxyarp.jpg create mode 100644 STABLE/documentation/images/proxyarp.png delete mode 100644 STABLE/documentation/images/staticnat.jpg create mode 100644 STABLE/documentation/images/staticnat.png create mode 100644 STABLE/documentation/whitelisting_under_shorewall.htm diff --git a/Lrp/etc/init.d/shorewall b/Lrp/etc/init.d/shorewall index 9c18802d7..be028befd 100755 --- a/Lrp/etc/init.d/shorewall +++ b/Lrp/etc/init.d/shorewall @@ -1565,7 +1565,13 @@ add_nat_rule() { # Replace destination port by the new destination port - [ -n "$servport" ] && dports="--dport ${servport#*:}" + if [ -n "$servport" ]; then + if [ -z "$multiport" ]; then + dports="--dport ${servport#*:}" + else + dports="--dports ${servport#*:}" + fi + fi # Handle SNAT @@ -1650,18 +1656,21 @@ add_a_rule() case $proto in tcp|udp|TCP|UDP|6|17) if [ -n "$port" -a "x${port}" != "x-" ]; then - [ -n "$multioption" ] && \ - [ "$port" != "${port%,*}" ] && \ + dports="--dport" + if [ -n "$multioption" -a "$port" != "${port%,*}" ]; then multiport="$multioption" - dports="--dport $port" + dports="--dports" + fi + dports="$dports $ports" fi if [ -n "$cport" -a "x${cport}" != "x-" ]; then - [ -n "$multioption" ] && \ - [ -z "$multiport" ] && \ - [ "$cport" != "${cport%,*}" ] && \ + sports="--sport" + if [ -n "$multioption" -a "$cport" != "${cport%,*}" ]; then multiport="$multioption" - sports="--sport $cport" + sports="--sports" + fi + sports="$sports $cport" fi ;; icmp|ICMP|1) @@ -2428,7 +2437,7 @@ setup_masq() if [ -n "$address" -a -n "$ADD_SNAT_ALIASES" ]; then list_search $address $aliases_to_add || \ - aliases_to_add="$aliases_to_add $external $address" + aliases_to_add="$aliases_to_add $address $interface" fi destination=$destnet @@ -2778,7 +2787,8 @@ add_common_rules() { logoptions="$LOGPARAMS --log-prefix Shorewall:badpkt:DROP:" logoptions="$logoptions --log-level $LOGUNCLEAN --log-ip-options" run_iptables -A badpkt -p tcp -j LOG $logoptions --log-tcp-options - run_iptables -A badpkt -p !tcp -j LOG $logoptions + run_iptables -A badpkt -p tcp -j DROP # Workaround for iptables 1.2.7 + run_iptables -A badpkt -j LOG $logoptions fi run_iptables -A badpkt -j DROP @@ -2803,7 +2813,8 @@ add_common_rules() { logoptions="$LOGPARAMS --log-prefix Shorewall:logpkt:LOG:" logoptions="$logoptions --log-level $LOGUNCLEAN --log-ip-options" run_iptables -A logpkt -p tcp -j LOG $logoptions --log-tcp-options - run_iptables -A logpkt -p !tcp -j LOG $logoptions + run_iptables -A logpkt -p tcp -j RETURN # Workaround for iptables 1.2.7 + run_iptables -A logpkt -j LOG $logoptions echo "Mangled/Invalid Packet Logging enabled on:" @@ -2814,16 +2825,15 @@ add_common_rules() { echo " $interface" done fi + ########################################################################### + # PING + # + [ -n "$FORWARDPING" ] && \ + run_iptables -A common -p icmp --icmp-type echo-request -j ACCEPT ############################################################################ # Common ICMP rules # - icmpdef=`find_file icmpdef` - - if [ -f $icmpdef ]; then - . $icmpdef - else - . `find_file icmp.def` - fi + run_user_exit icmpdef ############################################################################ # Common rules in each chain # @@ -2838,7 +2848,6 @@ add_common_rules() { # BROADCASTS # drop_broadcasts `find_broadcasts` - ########################################################################### # RFC 1918 # @@ -3400,6 +3409,7 @@ do_initialize() { MERGE_HOSTS= MUTEX_TIMEOUT= LOGNEWNOTSYN= + FORWARDPING= stopping= have_mutex= masq_seq=1 @@ -3476,6 +3486,7 @@ do_initialize() { MULTIPORT=`added_param_value_no MULTIPORT $MULTIPORT` DETECT_DNAT_IPADDRS=`added_param_value_no DETECT_DNAT_IPADDRS $DETECT_DNAT_IPADDRS` MERGE_HOSTS=`added_param_value_no MERGE_HOSTS $MERGE_HOSTS` + FORWARDPING=`added_param_value_no FORWARDPING $FORWARDPING` } ################################################################################ diff --git a/Lrp/etc/shorewall/common.def b/Lrp/etc/shorewall/common.def index e070a3101..cde58a555 100644 --- a/Lrp/etc/shorewall/common.def +++ b/Lrp/etc/shorewall/common.def @@ -8,7 +8,7 @@ # # Do not modify this file -- if you wish to change these rules, create # /etc/shorewall/common to replace it. It is suggested that you include -# the command "source /etc/shorewall/common.def" in your +# the command ". /etc/shorewall/common.def" in your # /etc/shorewall/common file so that you will continue to get the # advantage of new releases of this file. # @@ -18,13 +18,6 @@ run_iptables -A common -p icmp -j icmpdef # run_iptables -A common -m state -p tcp --state INVALID -j DROP ############################################################################ -# accept ACKs and RSTs that aren't related to any session so that the -# protocol stack can handle them and so the ACKs can create connection -# tracking entries. -# -run_iptables -A common -p tcp --tcp-flags ACK ACK -j ACCEPT -run_iptables -A common -p tcp --tcp-flags RST RST -j ACCEPT -############################################################################ # NETBIOS chatter # run_iptables -A common -p udp --dport 137:139 -j REJECT diff --git a/Lrp/etc/shorewall/icmp.def b/Lrp/etc/shorewall/icmp.def index 629b724d9..b6b39510b 100644 --- a/Lrp/etc/shorewall/icmp.def +++ b/Lrp/etc/shorewall/icmp.def @@ -1,22 +1,6 @@ ############################################################################## # Shorewall 1.3 /etc/shorewall/icmp.def # -# This file defines the default rules for accepting ICMP packets. +# This file is obsolete and is included for compatibility with existing +# icmpdef extension scripts that source it. # -# Do not modify this file -- if you wish to change these rules, create -# /etc/shorewall/icmpdef to replace it. It is suggested that you include -# the command "source /etc/shorewall/icmp.def" in your -# /etc/shorewall/icmpdef file so that you will continue to get the -# advantage of new releases of this file. -# -# For example, if you want to accept 'ping' everywhere then create -# /etc/shorewall/icmpdef with the following two lines: -# -# source /etc/shorewall/icmp.def -# run_iptables -A icmpdef -p ICMP --icmp-type echo-request -j ACCEPT -# -run_iptables -A icmpdef -p ICMP --icmp-type echo-reply -j ACCEPT -run_iptables -A icmpdef -p ICMP --icmp-type source-quench -j ACCEPT -run_iptables -A icmpdef -p ICMP --icmp-type destination-unreachable -j ACCEPT -run_iptables -A icmpdef -p ICMP --icmp-type time-exceeded -j ACCEPT -run_iptables -A icmpdef -p ICMP --icmp-type parameter-problem -j ACCEPT diff --git a/Lrp/etc/shorewall/interfaces b/Lrp/etc/shorewall/interfaces index fb99fcf4e..eb20f46cd 100644 --- a/Lrp/etc/shorewall/interfaces +++ b/Lrp/etc/shorewall/interfaces @@ -12,20 +12,24 @@ # of a zone defined in /etc/shorewall/zones. # # If the interface serves multiple zones that will be -# defined in the /etc/shorewall/hosts file, you may +# defined in the /etc/shorewall/hosts file, you should # place "-" in this column. # -# INTERFACE Name of interface +# INTERFACE Name of interface. Each interface may be listed only +# once in this file. # # BROADCAST The broadcast address for the subnetwork to which the # interface belongs. For P-T-P interfaces, this -# column is left black. +# column is left black.If the interface has multiple +# addresses on multiple subnets then list the broadcast +# addresses as a comma-separated list. # # If you use the special value "detect", the firewall # will detect the broadcast address for you. If you # select this option, the interface must be up before -# the firewall is started and you must have iproute -# installed. +# the firewall is started, you must have iproute +# installed and the interface must only be associated +# with a single subnet. # # If you don't want to give a value for this column but # you want to enter a value in the OPTIONS column, enter diff --git a/Lrp/etc/shorewall/policy b/Lrp/etc/shorewall/policy index abee2aa0c..4b144d54e 100644 --- a/Lrp/etc/shorewall/policy +++ b/Lrp/etc/shorewall/policy @@ -18,7 +18,7 @@ # in /etc/shorewall/zones, $FW or "all" # # POLICY Policy if no match from the rules file is found. Must -# be "ACCEPT", "DENY", "REJECT" or "CONTINUE" +# be "ACCEPT", "DROP", "REJECT" or "CONTINUE" # # LOG LEVEL If supplied, each connection handled under the default # POLICY is logged at that level. If not supplied, no diff --git a/Lrp/etc/shorewall/rfc1918 b/Lrp/etc/shorewall/rfc1918 index d3ef5954a..a2e066f49 100644 --- a/Lrp/etc/shorewall/rfc1918 +++ b/Lrp/etc/shorewall/rfc1918 @@ -45,13 +45,13 @@ 42.0.0.0/8 logdrop # Reserved 58.0.0.0/7 logdrop # Reserved 60.0.0.0/8 logdrop # Reserved -69.0.0.0/8 logdrop # Reserved 70.0.0.0/7 logdrop # Reserved 72.0.0.0/5 logdrop # Reserved 82.0.0.0/7 logdrop # Reserved 84.0.0.0/6 logdrop # Reserved 88.0.0.0/5 logdrop # Reserved 96.0.0.0/3 logdrop # Reserved +127.0.0.0/8 logdrop # Loopback 197.0.0.0/8 logdrop # Reserved 222.0.0.0/7 logdrop # Reserved 240.0.0.0/4 logdrop # Reserved diff --git a/Lrp/etc/shorewall/shorewall.conf b/Lrp/etc/shorewall/shorewall.conf index 5648b8642..1d84039ed 100644 --- a/Lrp/etc/shorewall/shorewall.conf +++ b/Lrp/etc/shorewall/shorewall.conf @@ -350,4 +350,12 @@ MUTEX_TIMEOUT=60 LOGNEWNOTSYN= +# +# Forward "Ping" +# +# If FORWARDPING is set to "Yes" then Echo Request ("Ping") packets are +# forwarded by the firewall. + +FORWARDPING=Yes + #LAST LINE -- DO NOT REMOVE diff --git a/Lrp/var/lib/shorewall/version b/Lrp/var/lib/shorewall/version index 95b25aee2..3336003dc 100644 --- a/Lrp/var/lib/shorewall/version +++ b/Lrp/var/lib/shorewall/version @@ -1 +1 @@ -1.3.6 +1.3.7 diff --git a/STABLE/changelog.txt b/STABLE/changelog.txt index cbd7403b1..9efc392c8 100644 --- a/STABLE/changelog.txt +++ b/STABLE/changelog.txt @@ -1,15 +1,26 @@ -Changes since 1.3.5 +Changes since 1.3.6 -1. REDIRECT rules are now working again. +1. Comments in the common.def file have been updated. -2. proxyarp option now works. +2. icmp.def deimplemented + +3. FORWARDPING implemented. + +4. Made MULTIPORT work with iptables 1.2.7 + +5. Corrected ADD_SNAT_ALIASES + +6. Work around iptables 1.2.7 protocol match bug. + +7. Remove themes from documentation and web site. + +8. Comments in the interfaces file improved. + +9. Typo in the policy file corrected. + +10. Loopback class A added to rfc1918. -3. It is once again possible to specify a host list in an - /etc/shorewall/hosts entry. -4. The lock file is now removed when the firewall script is killed by a - signal. -5. Implemented "new not SYN" dropping. diff --git a/STABLE/common.def b/STABLE/common.def index 50edd3471..cde58a555 100644 --- a/STABLE/common.def +++ b/STABLE/common.def @@ -8,7 +8,7 @@ # # Do not modify this file -- if you wish to change these rules, create # /etc/shorewall/common to replace it. It is suggested that you include -# the command "source /etc/shorewall/common.def" in your +# the command ". /etc/shorewall/common.def" in your # /etc/shorewall/common file so that you will continue to get the # advantage of new releases of this file. # diff --git a/STABLE/documentation/Documentation.htm b/STABLE/documentation/Documentation.htm index cf5ee7eaf..8964733a5 100644 --- a/STABLE/documentation/Documentation.htm +++ b/STABLE/documentation/Documentation.htm @@ -9,103 +9,112 @@ - + - -

Shorewall 1.3 Reference

+ + + + + +
+

Shorewall 1.3 Reference

+
-

This documentation is intended primarily for reference. +

This documentation is intended primarily for reference. Step-by-step instructions for configuring Shorewall in common setups may - be found in the QuickStart Guides.

+ be found in the QuickStart Guides.

-

Components

+

Components

Shorewall consists of the following components:

-
- - - - - - - - - - - - - - - - - - - - - -
bullet +
    +
  • params -- a parameter file installed in + /etc/shorewall that can be used to establish the values of shell variables + for use in other files.
  • +
  • shorewall.conf -- a parameter file installed in /etc/shorewall - that is used to set several firewall parameters.
bullet + that is used to set several firewall parameters. +
  • zones - a parameter file installed in /etc/shorewall that defines - a network partitioning into "zones"
  • bullet + a network partitioning into "zones" +
  • policy -- a parameter file installed in /etc/shorewall/ that -establishes overall firewall policy.
  • bullet +establishes overall firewall policy. +
  • rules -- a parameter file installed in /etc/shorewall and used to express firewall rules that are exceptions to the high-level - policies established in /etc/shorewall/policy.
  • bulletblacklist -- a parameter file installed in /etc/shorewall and used - to list blacklisted IP/subnet/MAC addresses.
    bullet + policies established in /etc/shorewall/policy. +
  • blacklist -- a parameter file installed in /etc/shorewall and used + to list blacklisted IP/subnet/MAC addresses.
  • +
  • functions -- a set of shell functions used by both the firewall and shorewall shell programs. Installed in /etc/shorewall prior to version 1.3.2 - and in /var/lib/shorewall in later versions.
  • bullet + and in /var/lib/shorewall in later versions. +
  • modules -- a parameter file installed in /etc/shorewall and that specifies kernel modules and their parameters. Shorewall will automatically - load the modules specified in this file.
  • bullet + load the modules specified in this file. +
  • tos -- a parameter file installed in /etc/shorewall that is used to - specify how the Type of Service (TOS) field in packets is to be set.
  • bullet + specify how the Type of Service (TOS) field in packets is to be set. +
  • icmp.def -- a parameter file installed in /etc/shorewall and that specifies the default handling of ICMP packets when the applicable policy is - DROP or REJECT.
  • bulletcommon.def -- a parameter file installed in + DROP or REJECT. +
  • common.def -- a parameter file installed in in /etc/shorewall that defines firewall-wide rules that are applied before a - DROP or REJECT policy is applied.
  • bullet + DROP or REJECT policy is applied. +
  • interfaces -- a parameter file installed in /etc/shorewall/ and - used to describe the interfaces on the firewall system.
  • bullet + used to describe the interfaces on the firewall system. +
  • hosts -- a parameter file installed in /etc/shorewall/ and used - to describe individual hosts or subnetworks in zones.
  • bullet + to describe individual hosts or subnetworks in zones. +
  • masq - This file also describes IP masquerading under Shorewall - and is installed in /etc/shorewall.
  • bulletfirewall -- a shell program that reads the configuration files in + and is installed in /etc/shorewall. +
  • firewall -- a shell program that reads the configuration files in /etc/shorewall and configures your firewall. This file is installed in your init.d directory (/etc/rc.d/init.d ) where it is renamed shorewall.  /etc/shorewall/firewall (/var/lib/shorewall/firewall in version 1.3.2 and - later) is a symbolic link to this program.
  • bullet + later) is a symbolic link to this program. +
  • nat -- a parameter file in /etc/shorewall used to define static NAT - .
  • bullet + . +
  • proxyarp -- a parameter file in /etc/shorewall used to define Proxy Arp - .
  • bulletroutestopped -- a parameter file in + . +
  • routestopped -- a parameter file in /etc/shorewall used to define those hosts that can access the firewall when - Shorewall is stopped.
  • bullettcrules -- a parameter file in /etc/shorewall used to define rules for + Shorewall is stopped. +
  • tcrules -- a parameter file in /etc/shorewall used to define rules for classifying packets for Traffic - Shaping/Control.
  • bullet + Shaping/Control. +
  • tunnels -- a parameter file in /etc/shorewall used to define -IPSec tunnels.
  • bullet +IPSec tunnels. +
  • shorewall -- a shell program (requiring a Bourne shell or derivative) used to control and monitor the firewall. This should be placed in /sbin or in /usr/sbin -(the install.sh script and the rpm install this file in /sbin).
  • bullet +(the install.sh script and the rpm install this file in /sbin). +
  • version -- a file created in /etc/shorewall/ (/var/lib/shorewall in version 1.3.2 and later) that describes -the version of  Shorewall installed on your system.
  • +the version of  Shorewall installed on your system. + -

    - /etc/shorewall/params

    +

    + /etc/shorewall/params

    You may use the file /etc/shorewall/params file to set shell variables that you can then use in some of the other @@ -117,90 +126,72 @@ Shorewall programs

    Example:

    -
    -

    NET_IF=eth0
    - NET_BCAST=130.252.100.255
    - NET_OPTIONS=noping,norfc1918

    -
    - -


    - Example (/etc/shorewall/interfaces record):

    - - - -
    -

    net $NET_IF $NET_BCAST $NET_OPTIONS

    -
    - -
    - -

    The result will be the same as if the record had been written

    - - - -
    -

    net eth0 130.252.100.255 noping,norfc1918

    -
    - -
    - -

    Variables may be used anywhere in the +

     	NET_IF=eth0
    +	NET_BCAST=130.252.100.255
    +	NET_OPTIONS=noping,norfc1918
    +

    Example (/etc/shorewall/interfaces record):

    +
    	net $NET_IF $NET_BCAST $NET_OPTIONS
    +

    The result will be the same as if the record had been written

    +
    	net eth0 130.252.100.255 noping,norfc1918
    +

    Variables may be used anywhere in the other configuration files.

    -

    - /etc/shorewall/zones

    +

    + /etc/shorewall/zones

    This file is used to define the network zones. There is one entry in /etc/shorewall/zones for each zone; Columns in an entry are:

    -
    - - - -
    bullet +
      +
    • ZONE - short name for the zone. The name should be 5 characters or less in length and consist of lower-case letters or numbers. Short names must begin with a letter and the name assigned to the firewall is reserved for use by Shorewall itself. Note that the output produced by iptables is much easier to read if you select short names that -are three characters or less in length.
    bullet - DISPLAY - The name of the zone as displayed during Shorewall startup.
    bullet +are three characters or less in length. The name "all" may not be used as + a zone name nor may the zone name assigned to the firewall itself via the FW + variable in /etc/shorewall/shorewall.conf. +
  • + DISPLAY - The name of the zone as displayed during Shorewall startup.
  • +
  • COMMENTS - Any comments that you want to make about the zone. Shorewall - ignores these comments.
  • + ignores these comments. +

    The /etc/shorewall/zones file released with Shorewall is as follows:

    -
    +
    - - - + + + - - - + + + - - - + + + - - - + + + -
    - ZONE - DISPLAY - COMMENTS + ZONE + DISPLAY + COMMENTS
    netNetInternetnetNetInternet
    locLocalLocal networkslocLocalLocal networks
    dmzDMZDemilitarized zonedmzDMZDemilitarized zone
    +

    You may add, delete and modify entries in the /etc/shorewall/zones file as desired so long as you have at least one zone defined.

    @@ -214,30 +205,35 @@ rather than "shorewall restart".

    order of entries in the /etc/shorewall/zones file is significant in some cases.

    -

    - /etc/shorewall/interfaces

    +

    + /etc/shorewall/interfaces

    This file is used to tell the firewall which of your firewall's network interfaces are connected to which zone. There will be one entry in /etc/shorewall/interfaces for each of your interfaces. Columns in an entry are:

    - - - - - -
    bullet +
    bullet - INTERFACE - the name of the interface (examples: eth0, ppp0, ipsec+)
    bullet - BROADCAST - the broadcast address for the sub-network attached to the - interface. This should be left empty for P-T-P interfaces (ppp*, ippp*); - if you need to specify options for such an interface, enter "-" in -this column. If you supply the special value "detect" in this column, -the firewall will automatically determine the broadcast address. Note -that to use this feature, you must have iproute installed and the interface - must be up before you start your firewall. 
    bullet + file to define the zones accessed via this interface. +
  • + INTERFACE - the name of the interface (examples: eth0, ppp0, ipsec+)
  • +
  • + BROADCAST - the broadcast address(es) for the sub-network(s) attached to the + interface. This should be left empty for P-T-P interfaces (ppp*, ippp*); if + you need to specify options for such an interface, enter "-" in this column. + If you supply the special value "detect" in this column, the firewall will + automatically determine the broadcast address. In order to use "detect":
      +
    • you must have iproute installed
    • +
    • the interface must be up before you start your firewall
    • +
    • the interface must only be attached to + a single sub-network (i.e., there must have a single broadcast address). 
    • +
    + +
  • +
  • OPTIONS - a comma-separated list of options. Possible options include:

    blacklist - This option causes incoming packets on this @@ -350,8 +346,8 @@ appropriate forwarding rule.

    not set this option if you are implementing Proxy ARP through entries in /etc/shorewall/proxyarp.

    -
  • + +

    Example 1: You have a conventional firewall setup in which eth0 connects to a @@ -361,65 +357,91 @@ Cable or DSL modem and eth1 connects to your local network and eth0 gets against the black list. Your /etc/shorewall/interfaces file would be as follows:

    - +
    - - - - + + + + - - - - + + + + - - - - + + + + -
    - ZONE - INTERFACE - BROADCAST - OPTIONS + ZONE + INTERFACE + BROADCAST + OPTIONS
    neteth0detectdhcp,noping,norfc1918,blacklistneteth0detectdhcp,noping,norfc1918,blacklist
    loceth1detectroutestoppedloceth1detect 
    +

    Example 2: You have a standalone dialup GNU/Linux System. Your /etc/shorewall/interfaces file would be:

    - +
    - - - - + + + + - - + + - - + + -
    - ZONE - INTERFACE - BROADCAST - OPTIONS + ZONE + INTERFACE + BROADCAST + OPTIONS
    netppp0netppp0    
    + -

    - /etc/shorewall/hosts Configuration

    +

    Example 3: You have local interface eth1 with two IP + addresses - 192.168.1.1/24 and 192.168.12.1/24

    + +
    + + + + + + + + + + + + + + + +
    + ZONE + INTERFACE + BROADCAST + OPTIONS
    loceth1192.168.1.255,192.168.12.255 
    +
    + +

    + /etc/shorewall/hosts Configuration

    For most applications, specifying zones entirely in terms of network interfaces is sufficient. There may be times though @@ -438,14 +460,14 @@ Cable or DSL modem and eth1 connects to your local network and eth0 gets file are:

    -
    - - -
    bullet +
    bullet + file. +
  • HOST(S) - The name of a network interface followed by a colon (":") - followed by either:
  • + followed by either: +
    @@ -464,11 +486,11 @@ file are:

    -
    - -
    bullet +
      +
    • OPTIONS - A comma-separated list of options. Currently only a single - option is defined:
    + option is defined: +
    @@ -506,43 +528,43 @@ able to access without adding additional rules.

    groups of local hosts that you want to make into separate zones:

    -
    - - -
    bullet192.168.1.0/25 
    bullet192.168.1.128/25
    +
      +
    • 192.168.1.0/25 
    • +
    • 192.168.1.128/25
    • +

    Your /etc/shorewall/interfaces file might look like:

    - +
    - - - - + + + + - - - - + + + + - - - - + + + + -
    - ZONE - INTERFACE - BROADCAST - OPTIONS + ZONE + INTERFACE + BROADCAST + OPTIONS
    neteth0detectdhcp,noping,norfc1918neteth0detectdhcp,noping,norfc1918
    -eth1detect -eth1detect 
    +

    The '-' in the ZONE column for eth1 tells Shorewall that eth1 interfaces @@ -552,41 +574,41 @@ able to access without adding additional rules.

    Your /etc/shorewall/hosts file might look like:

    - +
    - - - + + + - - + + - + - - - + + + -
    - ZONE - HOST(S) - OPTIONS + ZONE + HOST(S) + OPTIONS
    loc1eth1:192.168.1.0/25loc1eth1:192.168.1.0/25   
    loc2eth1:192.168.1.128/25routestoppedloc2eth1:192.168.1.128/25routestopped
    +

    Hosts in 'loc2' can communicate with the firewall while Shorewall is stopped -- those in 'loc1' cannot.

    -

    - Nested and Overlapping Zones

    +

    + Nested and Overlapping Zones

    The /etc/shorewall/interfaces and /etc/shorewall/hosts file allow you @@ -603,8 +625,8 @@ one zone may be managed by the rules of all of those zones. This is done throug use of the special CONTINUE policy described below.

    -

    - /etc/shorewall/policy Configuration.

    +

    + /etc/shorewall/policy Configuration.

    This file is used to describe the firewall policy regarding establishment of connections. Connection establishment @@ -621,20 +643,20 @@ applies to a particular connection request then the policy from /etc/shorewal

    Four policies are defined:

    -
    - - - - -
    bullet - ACCEPT - The connection is allowed.
    bullet - DROP - The connection request is ignored.
    bullet +
      +
    • + ACCEPT - The connection is allowed.
    • +
    • + DROP - The connection request is ignored.
    • +
    • REJECT - The connection request is rejected with an RST (TCP) or an ICMP destination-unreachable - packet being returned to the client.
    bullet + packet being returned to the client. +
  • CONTINUE - The connection is neither ACCEPTed, DROPped nor REJECTed. CONTINUE may be used when one or both of the zones named in the entry are sub-zones of or intersect with another zone. For more information, see - below. 
  • + below.  +

    For each policy specified in /etc/shorewall/policy, you can indicate @@ -690,60 +712,60 @@ zones. The policy file installed by default is as follows:

    - +
    - - - - - + + + + + - - - + + + - + - + - - - - - + + + + + - - - - - + + + + + -
    SOURCEDEST - POLICY - LOG LEVELLIMIT:BURSTSOURCEDEST + POLICY + LOG LEVELLIMIT:BURST
    locnetACCEPTlocnetACCEPT     
    netallDROPinfo netallDROPinfo 
    allallREJECTinfo allallREJECTinfo 
    +

    This table may be interpreted as follows:

    -
    - - - -
    bulletAll connection requests from the local network to hosts on the internet - are accepted.
    bulletAll connection requests originating from the internet are ignored and - logged at level KERNEL.INFO.
    bulletAll other connection requests are rejected and logged.
    +

    WARNING:

    @@ -753,45 +775,45 @@ from top to bottom and uses the first applicable policy that it finds. connections would be ACCEPT as specified in the first entry even though the third entry in the file specifies REJECT.

    - +
    - - - - - + + + + + - - - + + + - - + + - - - - - + + + + + - - - - - + + + + + -
    SOURCEDESTPOLICYLOG LEVELLIMIT:BURSTSOURCEDESTPOLICYLOG LEVELLIMIT:BURST
    locallACCEPTlocallACCEPT     
    netallDROPinfo netallDROPinfo 
    loclocREJECTinfo loclocREJECTinfo 
    -

    - The CONTINUE policy

    + +

    + The CONTINUE policy

    Where zones are nested or overlapping , the CONTINUE policy allows hosts that are within multiple zones to be @@ -799,98 +821,98 @@ managed under the rules of all of these zones. Let's look at an example:

    /etc/shorewall/zones:

    - +
    - - - + + + - - - + + + - - - + + + - - - + + + -
    - ZONE - DISPLAY - COMMENTS + ZONE + DISPLAY + COMMENTS
    samSamSam's system at homesamSamSam's system at home
    netInternetThe InternetnetInternetThe Internet
    locLocLocal NetworklocLocLocal Network
    +

    /etc/shorewall/interfaces:

    - +
    - - - - + + + + - - - - + + + + - - - - + + + + -
    - ZONE - INTERFACE - BROADCAST - OPTIONS + ZONE + INTERFACE + BROADCAST + OPTIONS
    -eth0detectdhcp,noping,norfc1918-eth0detectdhcp,noping,norfc1918
    loceth1detectroutestoppedloceth1detectroutestopped
    +

    /etc/shorewall/hosts:

    - +
    - - - + + + - - + + - + - - - + + + -
    - ZONE - HOST(S) - OPTIONS + ZONE + HOST(S) + OPTIONS
    neteth0:0.0.0.0/0neteth0:0.0.0.0/0   
    sameth0:206.191.149.197routestoppedsameth0:206.191.149.197routestopped
    +

    Note that Sam's home system is a member of both the sam zone and the net zone and @@ -899,51 +921,51 @@ the net zone and + - - - - + + + + - - - + + + - + - - - + + + - + - - - - + + + + - - - - + + + + -
    - SOURCE - DEST - POLICY - LOG LEVEL + SOURCE + DEST + POLICY + LOG LEVEL
    locnetACCEPTlocnetACCEPT   
    samallCONTINUEsamallCONTINUE   
    netallDROPinfonetallDROPinfo
    allallREJECTinfoallallREJECTinfo
    +

    The second entry above says that when Sam is the client, connection requests should first be process under rules where the source zone is sam and @@ -953,66 +975,66 @@ if there is no match then the connection request should be treated under

    Partial /etc/shorewall/rules:

    - +
    - - - - - - - + + + + + + + - + - - - - - - + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDEST - PROTODEST
    - PORT(S)
    SOURCE
    - PORT(S)
    ORIGINAL
    - DEST
    ACTIONSOURCEDEST + PROTODEST
    + PORT(S)
    SOURCE
    + PORT(S)
    ORIGINAL
    + DEST
    ......             
    DNATsamloc:192.168.1.3tcpssh- DNATsamloc:192.168.1.3tcpssh- 
    DNATnetloc:192.168.1.5tcpwww- DNATnetloc:192.168.1.5tcpwww- 
    ...      ...      
    +

    Given these two rules, Sam can connect to the firewall's internet interface with ssh and the connection request will be forwarded to 192.168.1.3. Like @@ -1031,72 +1053,72 @@ if there is no match then the connection request should be treated under

     

    -
    +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + - + - - - - - - + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDEST - PROTODEST
    - PORT(S)
    SOURCE
    - PORT(S)
    ORIGINAL
    - DEST
    ACTIONSOURCEDEST + PROTODEST
    + PORT(S)
    SOURCE
    + PORT(S)
    ORIGINAL
    + DEST
                  
    ......             
    DNATsamfwtcpssh- DNATsamfwtcpssh- 
    DNATnet!samloc:192.168.1.3tcpssh- DNATnet!samloc:192.168.1.3tcpssh- 
    ...      ...      
    +

    The first rule allows Sam SSH @@ -1113,8 +1135,8 @@ if there is no match then the connection request should be treated under the ACTION is REDIRECT.

    -

    - /etc/shorewall/rules

    +

    + /etc/shorewall/rules

    The /etc/shorewall/rules file @@ -1124,24 +1146,24 @@ if there is no match then the connection request should be treated under

    Entries in the file have the following columns:

    -
    - - - - - - - -
    bulletACTION - - - -
    bulletACCEPT, DROP or REJECT. These have the same meaning here as in the - policy file above.
    bulletDNAT -- Causes the connection request to be forwarded to the system +
      +
    • ACTION
        +
      • ACCEPT, DROP or REJECT. These have the same meaning here as in the + policy file above.
      • +
      • DNAT -- Causes the connection request to be forwarded to the system specified in the DEST column (port forwarding). "DNAT" stands for "Destination - Network Address Translation"
    bulletREDIRECT -- Causes the connection request to be redirected to a port on - the local (firewall) system.
    + Network Address Translation" +
  • REDIRECT -- Causes the connection request to be redirected to a port on + the local (firewall) system.
  • +

    The ACTION may optionally be followed by ":" and a syslogd log level (example: REJECT:info). This causes the packet to be logged at the specified level prior to being processed according to the specified ACTION.

    The use of DNAT or REDIRECT requires that you have NAT enabled.

    bulletSOURCE - Describes the source hosts to which the rule applies.. The contents of this field must begin +  +
  • SOURCE - Describes the source hosts to which the rule applies.. The contents of this field must begin with the name of a zone defined in /etc/shorewall/zones or $FW. If the ACTION is DNAT or REDIRECT, sub-zones may be excluded from the rule by following the initial zone name with "!' and a comma-separated list of those @@ -1150,28 +1172,28 @@ if there is no match then the connection request should be treated under The source may be further restricted by adding a colon (":") followed by a comma-separated list of qualifiers. Qualifiers are may include: - - - - - -
    bulletAn interface name - refers to any connection requests arriving on - the specified interface (example loc:eth4).
    bulletAn IP address - refers to a connection request from the host with - the specified address (example net:155.186.235.151)
    bulletA MAC Address in Shorewall format.
    bulletA subnet - refers to a connection request from any host in the specified - subnet (example net:155.186.235.0/24).
    -
  • bulletDEST - Describes the destination host(s) to which the rule applies. May take any of the forms described +
      +
    • An interface name - refers to any connection requests arriving on + the specified interface (example loc:eth4).
    • +
    • An IP address - refers to a connection request from the host with + the specified address (example net:155.186.235.151)
    • +
    • A MAC Address in Shorewall format.
    • +
    • A subnet - refers to a connection request from any host in the specified + subnet (example net:155.186.235.0/24).
    • +
    + +
  • DEST - Describes the destination host(s) to which the rule applies. May take any of the forms described above for SOURCE plus the following two additional forms: - - - -
    bulletAn IP address followed by a colon and the port number that +
      +
    • An IP address followed by a colon and the port number that the server is listening on (service names from /etc/services are not - allowed - example loc:192.168.1.3:80). 
    bulletA single port number (again, service names are not allowed) -- this form is only allowed + allowed - example loc:192.168.1.3:80).  +
  • A single port number (again, service names are not allowed) -- this form is only allowed if the ACTION is REDIRECT and refers to a server running on the firewall itself and - listening on the specified port.
  • -
  • bullet + listening on the specified port. + + +
  • PROTO - Protocol. Must be a protocol name from /etc/protocols, a number, "all" or "related". Specifies the protocol of the connection request. "related" should be specified only if you @@ -1179,8 +1201,8 @@ if there is no match then the connection request should be treated under you wish to override that setting for related connections originating with the client(s) and server(s) specified in this rule. When "related" is given for the protocol, the remainder of the columns should be left - blank.
  • bullet + blank. +
  • DEST PORT(S) - Port or port range (<low port>:<high port>) being connected to. May only be specified if the protocol is tcp, udp or icmp. For icmp, this column's contents @@ -1188,16 +1210,16 @@ with the client(s) and server(s) specified in this rule. When "related" but need to include information in one of the columns to the right, enter "-" in this column. You may give a list of ports and/or port ranges separated by commas. Port numbers may be either integers or service names - from /etc/services.
  • bullet + from /etc/services. +
  • SOURCE PORTS(S) - May be used to restrict the rule to a particular client port or port range (a port range is specified as <low port number>:<high port number>). If you don't want to restrict client ports but want to specify something in the next column, enter "-" in this column. If you wish to specify a list of port number or ranges, separate the list elements with commas (with no embedded white space). Port numbers may be - either integers or service names from /etc/services.
  • bulletORIGINAL DEST - This column may only be non-empty if the ACTION is DNAT + either integers or service names from /etc/services. +
  • ORIGINAL DEST - This column may only be non-empty if the ACTION is DNAT or REDIRECT.

    @@ -1231,8 +1253,8 @@ with the client(s) and server(s) specified in this rule. When "related" If SNAT is not used (no ":" and second IP address), the original source address is used. If you want any destination address to match the rule but want to specify SNAT, simply use a colon followed by the SNAT - address.
  • + address. +

    @@ -1242,38 +1264,38 @@ with the client(s) and server(s) specified in this rule. When "related" internet to local system 192.168.1.3. 

    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDEST - PROTODEST
    - PORT(S)
    SOURCE
    - PORT(S)
    ORIGINAL
    - DEST
    ACTIONSOURCEDEST + PROTODEST
    + PORT(S)
    SOURCE
    + PORT(S)
    ORIGINAL
    + DEST
    DNATnetloc:192.168.1.3tcpssh  DNATnetloc:192.168.1.3tcpssh  
    +

    Example 2. You want to redirect all local www connection requests EXCEPT @@ -1290,47 +1312,47 @@ with the client(s) and server(s) specified in this rule. When "related" redirected to local port 3128.

    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDEST - PROTODEST
    - PORT(S)
    SOURCE
    - PORT(S)
    ORIGINAL
    - DEST
    ACTIONSOURCEDEST + PROTODEST
    + PORT(S)
    SOURCE
    + PORT(S)
    ORIGINAL
    + DEST
    REDIRECTloc3128tcpwww !206.124.146.177REDIRECTloc3128tcpwww !206.124.146.177
    ACCEPTfwnettcpwww  ACCEPTfwnettcpwww  
    +

    Example 3. You want to run a web server at 155.186.235.222 in your @@ -1338,49 +1360,49 @@ DMZ and have it accessible remotely and locally. the DMZ is managed by Proxy ARP or by classical sub-netting.

    - +
    - - - - - - - + + + + + + + - - - - - - + + + + + + - + - - - - - - - + + + + + + + -
    ACTIONSOURCEDEST - PROTODEST
    - PORT(S)
    SOURCE
    - PORT(S)
    ORIGINAL
    - DEST
    ACTIONSOURCEDEST + PROTODEST
    + PORT(S)
    SOURCE
    + PORT(S)
    ORIGINAL
    + DEST
    ACCEPTnetdmz:155.186.235.222tcpwww-ACCEPTnetdmz:155.186.235.222tcpwww-   
    ACCEPTlocdmz:155.186.235.222tcpwww  ACCEPTlocdmz:155.186.235.222tcpwww  
    +

    Example 4. You want to run wu-ftpd on 192.168.2.2 in your masqueraded @@ -1406,49 +1428,49 @@ Proxy ARP or by classical sub-netting.

    .

    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - + + + + + - + - + -
    ACTIONSOURCEDEST - PROTODEST
    - PORT(S)
    SOURCE
    - PORT(S)
    ORIGINAL
    - DEST
    ACTIONSOURCEDEST + PROTODEST
    + PORT(S)
    SOURCE
    + PORT(S)
    ORIGINAL
    + DEST
    DNATnetdmz:192.168.2.2tcpftp  DNATnetdmz:192.168.2.2tcpftp  
    DNATloc:192.168.1.0/24dmz:192.168.2.2tcpftpDNATloc:192.168.1.0/24dmz:192.168.2.2tcpftp -- 155.186.235.151155.186.235.151
    +

    If you are running @@ -1482,34 +1504,34 @@ is unique and will not overlap with any usage on the firewall system.

    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDEST - PROTODEST
    - PORT(S)
    SOURCE
    - PORT(S)
    ORIGINAL
    - DEST
    ACTIONSOURCEDEST + PROTODEST
    + PORT(S)
    SOURCE
    + PORT(S)
    ORIGINAL
    + DEST
    ACCEPTloc:~02-00-08-E3-FA-55dmzall   ACCEPTloc:~02-00-08-E3-FA-55dmzall   
    +
    @@ -1518,8 +1540,8 @@ is unique and will not overlap with any usage on the firewall system.

    -

    - /etc/shorewall/common

    +

    + /etc/shorewall/common

    Shorewall allows @@ -1554,8 +1576,8 @@ is unique and will not overlap with any usage on the firewall system.

    stopped.

    -

    - /etc/shorewall/masq

    +

    + /etc/shorewall/masq

    The /etc/shorewall/masq @@ -1566,13 +1588,13 @@ use of this feature, you must have NAT enabled

    Columns are:

    -
    - - - -
    bullet +
      +
    • INTERFACE - The interface that will masquerade the subnet; this is normally your internet interface. This interface name can be optionally qualified by adding ":" and a subnet or host IP. When this qualification - is added, only packets addressed to that host or subnet will be masqueraded.
    bullet + is added, only packets addressed to that host or subnet will be masqueraded. +
  • SUBNET - The subnet that you want to have masqueraded through the INTERFACE. This may be expressed as a single IP address, a subnet or an interface name. In the latter instance, the interface must be configured and @@ -1581,13 +1603,13 @@ use of this feature, you must have NAT enabled
    The subnet may be optionally followed by "!' and a comma-separated list of addresses and/or subnets that are to be - excluded from masquerading.
  • bulletADDRESS - The source address to be used + excluded from masquerading. +
  • ADDRESS - The source address to be used for outgoing packets. This column is optional and if left blank, the current primary IP address of the interface in the first column is used. If you have a static IP on that interface, listing it here makes processing of output - packets a little less expensive for the firewall.
  • + packets a little less expensive for the firewall. +

    Example 1: You have eth0 connected to a cable modem and eth1 connected @@ -1595,26 +1617,26 @@ use of this feature, you must have NAT enabled would look like:    

    - +
    - - - + + + - - - + + + -
    - INTERFACE - SUBNETADDRESS + INTERFACE + SUBNETADDRESS
    eth0192.168.9.0/24 eth0192.168.9.0/24 
    +

    Example 2: You have a number of IPSEC tunnels through ipsec0 and @@ -1622,26 +1644,26 @@ you want to masquerade traffic from your 192.168.9.0/24 subnet to the remote subnet 10.1.0.0/16 only.

    - +
    - - - + + + - - - + + + -
    - INTERFACE - SUBNETADDRESS + INTERFACE + SUBNETADDRESS
    ipsec0:10.1.0.0/16192.168.9.0/24 ipsec0:10.1.0.0/16192.168.9.0/24 
    +

    Example 3: You have a DSL line connected on eth0 and a local network @@ -1653,22 +1675,22 @@ remote subnet 10.1.0.0/16 only.

    206.124.146.176.

    - +
    - - - + + + - - - + + + -
    - INTERFACE - SUBNETADDRESS + INTERFACE + SUBNETADDRESS
    eth0192.168.10.0/24206.124.146.176eth0192.168.10.0/24206.124.146.176
    +

    Example 4: @@ -1681,26 +1703,26 @@ remote subnet 10.1.0.0/16 only.

    - +
    - - - + + + - - - + + + -
    - INTERFACE - SUBNETADDRESS + INTERFACE + SUBNETADDRESS
    eth0192.168.10.0/24!192.168.10.44,192.168.10.45206.124.146.176eth0192.168.10.0/24!192.168.10.44,192.168.10.45206.124.146.176
    +
    -

    - /etc/shorewall/proxyarp

    +

    + /etc/shorewall/proxyarp

    If you want to @@ -1740,16 +1762,16 @@ remote subnet 10.1.0.0/16 only.

    this file for each system using proxy ARP. Columns are:

    -
    - - - - -
    bullet - ADDRESS - address of the system.
    bullet +
      +
    • + ADDRESS - address of the system.
    • +
    • INTERFACE - the interface that connects to the system. If the interface -is obvious from the subnetting, you may enter "-" in this column.
    bullet +is obvious from the subnetting, you may enter "-" in this column. +
  • EXTERNAL - the external interface that you want to honor ARP requests - for the ADDRESS specified in the first column.
  • bulletHAVEROUTE - If + for the ADDRESS specified in the first column. +
  • HAVEROUTE - If you already have a route through INTERFACE to @@ -1766,8 +1788,8 @@ is obvious from the subnetting, you may enter "-" in this column.
  • + "no". +

    Note: After you have made a change to the /etc/shorewall/proxyarp file, you may need to flush the ARP cache of all routers on the LAN segment connected to the interface specified in the EXTERNAL @@ -1787,11 +1809,11 @@ is obvious from the subnetting, you may enter "-" in this column. - - - -
    bulleteth0 - 155.186.235.1 (internet connection)
    bulleteth1 - 192.168.9.0/24 (masqueraded local systems)
    bulleteth2 - 192.168.10.1 (interface to your DMZ)
    +

      +
    • eth0 - 155.186.235.1 (internet connection)
    • +
    • eth1 - 192.168.9.0/24 (masqueraded local systems)
    • +
    • eth2 - 192.168.10.1 (interface to your DMZ)
    • +

    In your DMZ, you want to install a Web/FTP server with public address @@ -1800,29 +1822,29 @@ and you configure 155.186.235.1 as the default gateway. In your /etc/shorewa file, you will have:

    - +
    - - - - + + + + - - - - + + + + -
    - ADDRESS - INTERFACE - EXTERNALHAVEROUTE + ADDRESS + INTERFACE + EXTERNALHAVEROUTE
    155.186.235.4eth2eth0No155.186.235.4eth2eth0No
    +

    Note: You may want to configure the servers in your DMZ with a subnet @@ -1847,8 +1869,8 @@ ARP Subnet Mini HOWTO ( - /etc/shorewall/nat +

    + /etc/shorewall/nat

    The /etc/shorewall/nat @@ -1890,16 +1912,16 @@ use of this feature, you must have NAT enabled

    Columns in an entry are:

    -
    - - - - - -
    bullet +
      +
    • EXTERNAL - External IP address - This should NOT be the primary IP - address of the interface named in the next column.
    bullet + address of the interface named in the next column. +
  • INTERFACE - Interface that you want the EXTERNAL IP address to appear - on.
  • bullet - INTERNAL - Internal IP address.
    bulletALL + on. +
  • + INTERNAL - Internal IP address.
  • +
  • ALL INTERFACES - If Yes or yes (or @@ -1925,19 +1947,19 @@ in an entry are:

    Note:
    If two or more NATed systems are connected to the same firewall interface and you want them to be able to communicate using their EXTERNAL IP addresses, then you will want to specify the multi option in the - /etc/shorewall/interface entry for that interface.
  • bulletLOCAL - If Yes or yes and the ALL INTERFACES column contains Yes + /etc/shorewall/interface entry for that interface. +
  • LOCAL - If Yes or yes and the ALL INTERFACES column contains Yes or yes, NAT will be effective from the firewall system. Note: For this to work, you must be running kernel 2.4.19 or later and iptables 1.2.6a or later and you must have enabled  CONFIG_IP_NF_NAT_LOCAL in your - kernel.
  • + kernel. +

    Look here for additional information and an example.

    -

    - /etc/shorewall/tunnels

    +

    + /etc/shorewall/tunnels

    The /etc/shorewall/tunnels file allows you to define IPSec, GRE and IPIP tunnels @@ -1957,13 +1979,19 @@ a development snapshot as patching with version 1.9 results in kernel compilat tunnels under Shorewall.

    -

    - /etc/shorewall/shorewall.conf

    +

    + /etc/shorewall/shorewall.conf

    This file is used to set the following firewall parameters:

    -
    - -
    bulletLOGNEWNOTSYN - Added in Version 1.3.6
    +
      +
    • FORWARDPING - Added in Version 1.3.7
      + When set to "Yes" or "yes", ICMP echo-request (ping) packets from interfaces + that specify "filterping" are ACCEPTed by the firewall. When set to "No" or + "no", such ping requests are silently dropped unless they are handled by an + explicit entry in the rules file. If not specified, "No" + is assumed.
    • +
    • LOGNEWNOTSYN - Added in Version 1.3.6
      Beginning with version 1.3.6, Shorewall drops non-SYN TCP packets that are not part of an existing connection. If you would like to log these packets, set LOGNEWNOTSYN to the syslog level at which you want the packets logged. @@ -1972,8 +2000,8 @@ a development snapshot as patching with version 1.9 results in kernel compilat Note: Packets logged under this option are usually the result of broken remote IP stacks rather than the result of any sort of attempt to breach your firewall.
    bulletMERGE_HOSTS - Added in Version 1.3.5
    +  +
  • MERGE_HOSTS - Added in Version 1.3.5
    Prior to 1.3.5, when the /etc/shorewall/hosts file included an entry for a zone then the entire zone had to be defined in the /etc/shorewall/hosts file and any associations between the zone and @@ -1988,61 +2016,61 @@ a development snapshot as patching with version 1.9 results in kernel compilat Example:

    Interfaces File:
    - - - - + + + + - - - - + + + + - - - - + + + + -
    ZONEHOSTSBROADCASTOPTIONSZONEHOSTSBROADCASTOPTIONS
    loceth1-dhcploceth1-dhcp
    -ppp+  -ppp+  
    +

  • Hosts File:
     

    -
    +
    - - + + - - + + -
    ZONEHOSTSZONEHOSTS
    locppp+:192.168.12.0/24locppp+:192.168.12.0/24
    +


    With MERGE_HOSTS=No, the loc zone consists of only ppp+:192.168.12.0/24; with MERGE_HOSTS=Yes, it includes eth1:0.0.0.0/0 and ppp+:192.168.12.0/24.
    - bulletMULTIPORT - Added in Version 1.3.2
    +  +

  • MULTIPORT - Added in Version 1.3.2
    If set to "Yes" or "yes", Shorewall will use the Netfilter multiport facility. In order to use this facility, your kernel must have multiport support (CONFIG_IP_NF_MATCH_MULTIPORT). When this support is used, Shorewall will generate a single rule from each record in the /etc/shorewall/rules file that meets these criteria:
    - - -
    bulletNo port range(s) specified
    bulletSpecifies 15 or fewer ports
      +
    • No port range(s) specified
    • +
    • Specifies 15 or fewer ports
    • +

    Rules not meeting those criteria will continue to generate an individual - rule for each listed port or port range. - bulletNAT_BEFORE_RULES
    + rule for each listed port or port range.

  • +
  • NAT_BEFORE_RULES
    If set to "No" or "no", port forwarding rules can override the contents of the /etc/shorewall/nat file. If set to "Yes" or "yes", port forwarding rules cannot override static NAT. If not set or set to an - empty value, "Yes" is assumed.
    - bulletFW
    + empty value, "Yes" is assumed.
  • +
  • FW
    This parameter specifies the @@ -2053,8 +2081,8 @@ a development snapshot as patching with version 1.9 results in kernel compilat empty string, the value "fw" - is assumed.
    - bulletSUBSYSLOCK
    + is assumed.
  • +
  • SUBSYSLOCK
    This parameter should be set to the name of a file that the firewall should create if it starts successfully and remove when it stops. Creating and removing this file allows Shorewall to work with your distribution's @@ -2062,8 +2090,8 @@ a development snapshot as patching with version 1.9 results in kernel compilat For Debian, the value is /var/state/shorewall and in LEAF it is /var/run/shorwall. Example: - SUBSYSLOCK=/var/lock/subsys/shorewall.
    - bullet + SUBSYSLOCK=/var/lock/subsys/shorewall.
  • +
  • STATEDIR
    This parameter specifies the name of a directory where Shorewall stores state information. If the directory doesn't exist when Shorewall @@ -2071,20 +2099,23 @@ starts, it will create the directory. Example: STATEDIR=/tmp/shorewall. NOTE: If you change the STATEDIR variable while the firewall is running, create the new directory if necessary then copy the contents of the - old directory to the new directory.
    - bullet + old directory to the new directory.
  • +
  • ALLOWRELATED
    This parameter must be assigned the value "Yes" ("yes") or "No" ("no") and specifies whether Shorewall allows connection requests that are related to an already allowed connection. If you say "No" ("no"), you can still override this setting by including "related" rules in - /etc/shorewall/rules ("related" given as the protocol).
    - bullet + /etc/shorewall/rules ("related" given as the protocol). If you specify + ALLOWRELATED=No, you will need to include rules in + /etc/shorewall/icmpdef to + handle common ICMP packet types.
  • +
  • MODULESDIR
    This parameter specifies the directory where your kernel netfilter modules may be found. If you leave the variable empty, Shorewall will - supply the value "/lib/modules/`uname -r`/kernel/net/ipv4/netfilter.
    - bullet + supply the value "/lib/modules/`uname -r`/kernel/net/ipv4/netfilter.
  • +
  • LOGRATE and LOGBURST
    These parameters set the match rate and initial burst size for logged packets. Please see the iptables man page for a description of the behavior @@ -2095,8 +2126,8 @@ you can still override this setting by including "related" rules in Example:
        LOGRATE=10/minute
        LOGBURST=5
    - bulletLOGFILE
  • +
  • LOGFILE
    This parameter tells the /sbin/shorewall @@ -2117,8 +2148,8 @@ you can still override this setting by including "related" rules in an empty value, /var/log/messages - is assumed.
    - bulletNAT_ENABLED
    + is assumed.
  • +
  • NAT_ENABLED
    This parameter determines whether Shorewall supports NAT operations. NAT operations include:

    @@ -2131,8 +2162,8 @@ you can still override this setting by including "related" rules in then NAT is enabled. If the parameter has a value of "no" or "No" then NAT is disabled.
    -
    - bullet +
  • +
  • MANGLE_ENABLED
    This parameter determines if packet mangling is enabled. If the parameter has no value or has a value of "Yes" or "yes" than @@ -2140,8 +2171,8 @@ parameter has no value or has a value of "Yes" or "yes" than or "No" then packet mangling is disabled. If packet mangling is disabled, the /etc/shorewall/tos file is ignored.
    -
    - bullet +
  • +
  • IP_FORWARDING
    This parameter determines whether Shorewall enables or disables IPV4 Packet Forwarding (/proc/sys/net/ipv4/ip_forward). Possible values @@ -2155,8 +2186,8 @@ IPV4 Packet Forwarding (/proc/sys/net/ipv4/ip_forward). Possible values If this variable is not set or is given an empty value (IP_FORWARD="") then IP_FORWARD=On is assumed.
    -
    - bulletADD_IP_ALIASES
    +
  • +
  • ADD_IP_ALIASES
    This parameter determines whether Shorewall automatically adds the external address(es) in /etc/shorewall/nat @@ -2166,8 +2197,8 @@ these aliases yourself using your distribution's network configuration tools.

    If this variable is not set or is given an empty value (ADD_IP_ALIASES="") - then ADD_IP_ALIASES=Yes is assumed.
    - bulletADD_SNAT_ALIASES
    + then ADD_IP_ALIASES=Yes is assumed.
  • +
  • ADD_SNAT_ALIASES
    This parameter determines whether Shorewall automatically adds the SNAT ADDRESS in /etc/shorewall/masq. If the variable is set to "Yes" or "yes" then Shorewall automatically adds these addresses. If @@ -2176,8 +2207,8 @@ tools.

    If this variable is not set or is given an empty value (ADD_SNAT_ALIASES="") then ADD_SNAT_ALIASES=No is assumed.
    -
    - bulletLOGUNCLEAN
    +
  • +
  • LOGUNCLEAN
    This parameter determines the logging level @@ -2208,8 +2239,8 @@ tools.
    the specified level (Example: - LOGUNCLEAN=debug).
    - bulletBLACKLIST_DISPOSITION
    + LOGUNCLEAN=debug).
  • +
  • BLACKLIST_DISPOSITION
    This parameter determines the disposition of @@ -2234,8 +2265,8 @@ tools.
    you assign an empty value then DROP is - assumed.
    - bulletBLACKLIST_LOGLEVEL
    + assumed.
  • +
  • BLACKLIST_LOGLEVEL
    This paremter determines if packets from @@ -2260,8 +2291,8 @@ tools.
    from blacklisted hosts are not - logged.
    - bulletCLAMPMSS
    + logged.
  • +
  • CLAMPMSS
    This parameter enables the TCP Clamp MSS @@ -2292,17 +2323,17 @@ tools.
    requires CONFIG_IP_NF_TARGET_TCPMSS in - your kernel.
    - bulletROUTE_FILTER
    + your kernel.
  • +
  • ROUTE_FILTER
    If this parameter is given the value "Yes" or "yes" then route filtering (anti-spoofing) is - enabled on all network interfaces. The default value is "no".
    - + enabled on all network interfaces. The default value is "no".
  • + -

    - /etc/shorewall/modules Configuration

    +

    + /etc/shorewall/modules Configuration

    The file @@ -2403,8 +2434,8 @@ so, then the following command is executed:

    -

    - /etc/shorewall/tos Configuration

    +

    + /etc/shorewall/tos Configuration

    @@ -2421,8 +2452,8 @@ by Shorewall, you must have mangle support enabled -
    - - - - - - -
    bullet +
      +
    • SOURCE -- The source zone. May be qualified by following the zone name with a colon (":") and either an IP address, an IP subnet, a MAC address in Shorewall Format or the @@ -2430,25 +2461,25 @@ by Shorewall, you must have mangle support enabled zone to indicate packets originating on the firewall itself or "all" to indicate any - source.
    bullet + source. +
  • DEST -- The destination zone. May be qualified by following the zone name with a colon (":") and either an IP address or an IP subnet. Because packets are marked prior to routing, you may not specify the name of an interface. This column may also contain  "all" to indicate - any destination.
  • bullet + any destination. +
  • PROTOCOL -- The name of a protocol in /etc/protocols or the protocol's - number.
  • bullet + number. +
  • SOURCE PORT(S) -- The source port or a port range. For all ports, place - a hyphen ("-") in this column.
  • bullet + a hyphen ("-") in this column. +
  • DEST PORT(S)  -- The destination port or a port range. To indicate - all ports, place a hyphen ("-") in this column.
  • bullet - TOS -- The type of service. Must be one of the following:
    + all ports, place a hyphen ("-") in this column. +
  • + TOS -- The type of service. Must be one of the following:
  • +
    @@ -2468,65 +2499,65 @@ by Shorewall, you must have mangle support enabled
    - +
    - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + @@ -2535,12 +2566,12 @@ by Shorewall, you must have mangle support enabled +
    SOURCEDESTPROTOCOLSOURCE
    - PORT(S)
    DEST PORT(S)TOSSOURCEDESTPROTOCOLSOURCE
    + PORT(S)
    DEST PORT(S)TOS
    allalltcp-ssh16allalltcp-ssh16
    allalltcpssh-16allalltcpssh-16
    allalltcp-ftp16allalltcp-ftp16
    allalltcpftp-16allalltcpftp-16
    allalltcp-ftp-data8allalltcp-ftp-data8
    allalltcpftp-data-8allalltcpftp-data-8

    WARNING: Users have reported that odd routing problems result from adding the ESP and AH protocols to the /etc/shorewall/tos file.

    -

    /etc/shorewall/blacklist

    +

    /etc/shorewall/blacklist

    Each line @@ -2555,8 +2586,8 @@ by Shorewall, you must have mangle support enabled -

          130.252.100.69
    -      206.124.146.0/24
    +
          130.252.100.69
    +      206.124.146.0/24

    Packets from @@ -2604,7 +2635,7 @@ by Shorewall, you must have mangle support enabled/etc/shorewall/rfc1918 (Added in Version 1.3.1) +

    /etc/shorewall/rfc1918 (Added in Version 1.3.1)

    @@ -2612,19 +2643,19 @@ by Shorewall, you must have mangle support enabled
    - - -
    bulletSUBNET - The subnet using VLSM notation (e.g., 192.168.0.0/16).
    bulletTARGET - What to do with packets to/from the SUBNET: - - - -
    bulletRETURN - Process the packet normally thru the rules and policies.
    bulletDROP - Silently drop the packet.
    bulletlogdrop - Log then drop the packet.
    -
    +
      +
    • SUBNET - The subnet using VLSM notation (e.g., 192.168.0.0/16).
    • +
    • TARGET - What to do with packets to/from the SUBNET:
        +
      • RETURN - Process the packet normally thru the rules and policies.
      • +
      • DROP - Silently drop the packet.
      • +
      • logdrop - Log then drop the packet.
      • +
      +
    • +
    -

    25. /etc/shorewall/routestopped (Added in Version 1.3.4)

    +

    25. /etc/shorewall/routestopped (Added in Version 1.3.4)

    @@ -2632,10 +2663,10 @@ by Shorewall, you must have mangle support enabled
    - - -
    bulletINTERFACE - The firewall interface through which the host(s) comminicate with the firewall.
    bulletHOST(S) - (Optional) - A comma-separated list of IP/Subnet addresses. If not supplied or supplied as "-" then 0.0.0.0/0 is assumed.
    +
      +
    • INTERFACE - The firewall interface through which the host(s) comminicate with the firewall.
    • +
    • HOST(S) - (Optional) - A comma-separated list of IP/Subnet addresses. If not supplied or supplied as "-" then 0.0.0.0/0 is assumed.
    • +
    @@ -2644,26 +2675,26 @@ by Shorewall, you must have mangle support enabled -
    +
    - - + + - - + + - - + + -
    INTERFACEHOST(S)INTERFACEHOST(S)
    eth2192.168.1.0/24eth2192.168.1.0/24
    eth1-eth1-
    +

    - Updated 8/6/2002 - Tom + Updated 8/22/2002 - Tom Eastep

    @@ -2678,4 +2709,4 @@ Eastep -
    \ No newline at end of file + \ No newline at end of file diff --git a/STABLE/documentation/Documentation_Index.htm b/STABLE/documentation/Documentation_Index.htm new file mode 100644 index 000000000..60fcdafc8 --- /dev/null +++ b/STABLE/documentation/Documentation_Index.htm @@ -0,0 +1,28 @@ + + + + + + + +The Documentation Index + + + + +

    The Shorewall Documentation Index

    +

    has Moved +Here

    + +

    +Last updated 8/9/2002 + - + Tom Eastep +

    +

    + Copyright + © 2001, 2002 Thomas M. Eastep.

    + + + + diff --git a/STABLE/documentation/FAQ.htm b/STABLE/documentation/FAQ.htm index 3a6ae602f..caaaa7527 100644 --- a/STABLE/documentation/FAQ.htm +++ b/STABLE/documentation/FAQ.htm @@ -6,187 +6,194 @@ Shorewall FAQ - + - + -

    Shorewall FAQs

    -

    About Shorewall

    -
    -

    Why do you call it "Shorewall"?

    -

    What distributions does it work with?

    -

    What features does it support?

    -

    Why isn't there a GUI?

    -
    -

    Filtering

    -
    -

    I'm connected via a cable modem and it has an -internel web server that allows me to configure/monitor it but as expected if I -enable rfc1918 blocking for my eth0 interface, it also blocks the cable modems -web server.

    -

    Even though it assigns public IP addresses, my -ISP's DHCP server has an RFC 1918 address. If I enable RFC 1918 filtering on my -external interface, my DHCP client cannot renew its lease.

    -

    I just used an online port scanner to check my -firewall and it shows some ports as 'closed' rather than 'blocked'. Why?

    -

    I just ran an nmap UDP scan of my firewall and -it showed 100s of ports as open!!!!

    -
    -

    Port Forwarding

    -
    -

    I want to forward UDP port 7777 to my my personal PC with IP -address 192.168.1.5. I've looked everywhere and can't find how to do it.

    -

    Ok -- I followed those instructions but it -doesn't work.

    -

    I port forward www requests to www.mydomain.com (IP -130.151.100.69) to system 192.168.1.5 in my local network. External clients can browse -http://www.mydomain.com but internal clients can't.

    -

    I have a zone "Z" with an RFC1918 subnet and I -use static NAT to assign non-RFC1918 addresses to hosts in Z. Hosts in Z cannot -communicate with each other using their external (non-RFC1918 addresses) so they -can't access each other using their DNS names.

    -
    -

    Applications

    -
    -

    I want to use Netmeeting with Shorewall. What do I do?

    -
    -

    Connection Problems

    -
    -

    I've installed Shorewall and now I can't ping through the -firewall

    -

    My local systems can't see out to the net

    -
    -

    Logging

    -
    -

    Where are the log messages written and  -how do I change the destination?

    -

    Shorewall is writing log messages all over my -console making it unusable!

    -

    Are there any log parsers that work with -Shorewall?

    -
    -

    Starting and stopping the firewall

    -
    -

    When I stop Shorewall using 'shorewall stop', -I can't connect to anything. Why doesn't that command work?

    -

    When I try to start Shorewall on RedHat 7.x, I + + + + +
    +

    Shorewall FAQs

    +
    + +

    1.  I want to forward UDP +port 7777 to my my personal PC with IP address 192.168.1.5. I've looked +everywhere and can't find how to do it.

    +

    1a. Ok -- I followed those instructions +but it doesn't work.

    +

    2. I port forward www requests to www.mydomain.com (IP +130.151.100.69) to system 192.168.1.5 in my local network. External clients can browse +http://www.mydomain.com but internal clients can't.

    +

    2a. I have a zone "Z" with an RFC1918 +subnet and I use static NAT to assign non-RFC1918 addresses to hosts in +Z. Hosts in Z cannot communicate with each other using their external +(non-RFC1918 addresses) so they can't access each other using their DNS +names.

    + +

    3. I want to use Netmeeting with +Shorewall. What do I do?

    +

    4. I just used an online port scanner to +check my firewall and it shows some ports as 'closed' rather than 'blocked'. +Why?

    +

    4a. I just ran an nmap UDP scan +of my firewall and it showed 100s of ports as open!!!!

    +

    5. I've installed Shorewall and now I +can't ping through the firewall

    + +

    6. Where are the log messages +written and  how do I change the destination?

    + +

    6a. Are there any log parsers +that work with Shorewall?

    + +

    7. When I stop Shorewall using +'shorewall stop', I can't connect to anything. Why doesn't that command +work?

    + +

    8. When I try to start Shorewall on RedHat 7.x, I get messages about insmod failing -- what's wrong?

    -

    Why can't Shorewall detect my interfaces -properly?

    -
    -

    Design

    -
    -

    Why does Shorewall only accept IP addresses as + +

    9. Why does Shorewall only accept IP addresses as opposed to FQDNs?

    + +

    10. What distributions does it +work with?

    + +

    11. What features does it +support?

    + +

    12. Why isn't there a GUI

    + +

    13. Why do you call it "Shorewall"?

    +

    14. I'm connected via a cable modem and it has an internel +web server that allows me to configure/monitor it but as expected if I enable +rfc1918 blocking for my eth0 interface, it also blocks the cable modems +web server.

    +

    14a. Even though it assigns public IP +addresses, my ISP's DHCP server has an RFC 1918 address. If I enable RFC 1918 +filtering on my external interface, my DHCP client cannot renew its lease.

    + +

    15. My local systems can't see out to +the net

    + +

    16. Shorewall is writing log messages +all over my console making it unusable!

    + +

    17. Why can't Shorewall detect my +interfaces properly?

    +
    +

     

    -

    -

    1. I want to forward UDP port 7777 to my my personal PC with IP -address 192.168.1.5. I've looked everywhere and can't find how to do it.

    +
    +

    1. I want to forward UDP port 7777 to my my personal PC with IP +address 192.168.1.5. I've looked everywhere and can't find how to do it.

    Answer: The first example in the rules file documentation shows how to do port forwarding under Shorewall. Assuming that you have a dynamic external IP address, the format of a port-forwarding rule to a local system is as follows:

    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIG. DEST.ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIG. DEST.
    DNATnetloc:<local IP address>[:<local port>]<protocol><port #>  DNATnetloc:<local IP address>[:<local port>]<protocol><port #>  
    +

    So to forward UDP port 7777 to internal system 192.168.1.5, the rule is:

    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIG. DEST.ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIG. DEST.
    DNATnetloc:192.168.1.5udp7777  DNATnetloc:192.168.1.5udp7777  
    +
    -
         DNAT net loc:192.168.1.5 udp 7777
    +
         DNAT net loc:192.168.1.5 udp 7777

    If you want to forward requests directed to a particular address ( <external IP> ) on your firewall to an internal system:

    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIG. DEST.ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIG. DEST.
    DNATnetloc:<local IP address>[:<local port>]<protocol><port #>-<external IP>DNATnetloc:<local IP address>[:<local port>]<protocol><port #>-<external IP>
    +
    -

    1a. Ok -- I followed those instructions but -it doesn't work

    +

    1a. Ok -- I followed those instructions but +it doesn't work

    Answer: That is usually the result of one of two things:

    -
    - - -
    bulletYou are trying to test from inside your firewall (no, that -won't work -- see FAQ #2).
    bulletYou have a more basic problem with your local system such as an +
      +
    • You are trying to test from inside your firewall (no, that +won't work -- see FAQ #2).
    • +
    • You have a more basic problem with your local system such as an incorrect default gateway configured (it should be set to the IP address of your -firewall's internal interface).
    -

    2. I port forward www requests to www.mydomain.com (IP +firewall's internal interface). + +

    2. I port forward www requests to www.mydomain.com (IP 130.151.100.69) to system 192.168.1.5 in my local network. External clients can browse -http://www.mydomain.com but internal clients can't.

    +http://www.mydomain.com but internal clients can't.

    Answer: I have two objections to this setup.

    -
    - - -
    bulletHaving an internet-accessible server in your local network +
      +
    • Having an internet-accessible server in your local network is like raising foxes in the corner of your hen house. If the server is compromised, there's nothing between that server and your other internal systems. For the cost of another NIC and a cross-over cable, you can put your server in a DMZ such that it is isolated from your local systems - - assuming that the Server can be located near the Firewall, of course :-)
    bulletThe accessibility problem is best solved using + assuming that the Server can be located near the Firewall, of course :-) +
  • The accessibility problem is best solved using Bind Version 9 "views" (or using a separate DNS server for local clients) such that www.mydomain.com resolves to 130.141.100.69 externally and 192.168.1.5 internally. That's what I do here at - shorewall.net for my local systems that use static NAT.
  • + shorewall.net for my local systems that use static NAT. +

    If you insist on an IP solution to the accessibility problem rather than a DNS solution, then assuming that your external interface is eth0 and your internal interface is eth1 @@ -197,30 +204,30 @@ for eth1.

    b) In /etc/shorewall/rules, add:

    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIG. DEST.ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIG. DEST.
    DNATloc:192.168.1.0/24loc:192.168.1.5tcpwww-130.151.100.69:192.168.1.254DNATloc:192.168.1.0/24loc:192.168.1.5tcpwww-130.151.100.69:192.168.1.254
    +
    -
         DNAT    loc:192.168.1.0/24    loc:192.168.1.5    tcp    www    -    130.151.100.69:192.168.1.254
    +
         DNAT    loc:192.168.1.0/24    loc:192.168.1.5    tcp    www    -    130.151.100.69:192.168.1.254

    That rule only works of course if you have a static external IP @@ -228,42 +235,42 @@ address. If you have a dynamic IP address and are running Shorewall 1.3.4 or later then include this in /etc/shorewall/params:

    -
         ETH0_IP=`find_interface_address eth0`
    +
         ETH0_IP=`find_interface_address eth0`

    and make your DNAT rule:

    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIG. DEST.ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIG. DEST.
    DNATloc:192.168.1.0/24loc:192.168.1.5tcpwww-$ETH0_IP:192.168.1.254DNATloc:192.168.1.0/24loc:192.168.1.5tcpwww-$ETH0_IP:192.168.1.254
    +

    Using this technique, you will want to configure your DHCP/PPPoE client to automatically restart Shorewall each time that you get a new IP address.

    -

    2a. I have a zone "Z" with an RFC1918 subnet and I +

    2a. I have a zone "Z" with an RFC1918 subnet and I use static NAT to assign non-RFC1918 addresses to hosts in Z. Hosts in Z cannot communicate with each other using their external (non-RFC1918 addresses) so they -can't access each other using their DNS names.

    +can't access each other using their DNS names.

    Answer: This is another problem that is best solved using Bind Version 9 "views". It allows both external and internal clients to access a NATed host using the host's DNS name.

    @@ -283,63 +290,63 @@ Interface: eth2
    Subnet: 192.168.2.0/24

    In /etc/shorewall/interfaces:

    - +
    - - - - + + + + - - - - + + + + -
    ZONEINTERFACEBROADCASTOPTIONSZONEINTERFACEBROADCASTOPTIONS
    dmzeth2192.168.2.255multidmzeth2192.168.2.255multi
    +

    In /etc/shorewall/policy:

    - +
    - - - - + + + + - - - - + + + + -
    SOURCE DESTINATIONPOLICYLIMIT:BURSTSOURCE DESTINATIONPOLICYLIMIT:BURST
    dmzdmzACCEPT dmzdmzACCEPT 
    +
    -
         dmz    dmz    ACCEPT
    +
         dmz    dmz    ACCEPT

    In /etc/shorewall/masq:

    - +
    - - - + + + - - - + + + -
    INTERFACE SUBNETADDRESSINTERFACE SUBNETADDRESS
    eth2192.168.2.0/24 eth2192.168.2.0/24 
    +
    -

    3. I want to use Netmeeting with Shorewall. What do I do?

    +

    3. I want to use Netmeeting with Shorewall. What do I do?

    Answer: There is an H.323 connection tracking/NAT module that may help. Also check the Netfilter mailing list archives at http://netfilter.samba.org.

    -

    4. I just used an online port scanner to +

    4. I just used an online port scanner to check my firewall and it shows some ports as 'closed' rather than 'blocked'. - Why?

    + Why?

    Answer: The common.def included with version 1.3.x always rejects connection requests on TCP port 113 rather than dropping them. This is @@ -355,8 +362,8 @@ Also check the Netfilter mailing list archives at 4a. I just ran an nmap UDP scan of my - firewall and it showed 100s of ports as open!!!! +

    4a. I just ran an nmap UDP scan of my + firewall and it showed 100s of ports as open!!!!

    Answer: Take a deep breath and read the nmap man page section about UDP scans. If nmap gets nothing back from your firewall then it reports @@ -364,8 +371,8 @@ Also check the Netfilter mailing list archives at 5. I've installed Shorewall and now I can't ping through the -firewall +

    5. I've installed Shorewall and now I can't ping through the +firewall

    Answer: If you want your firewall to be totally open for "ping":

    a) Do NOT specify 'noping' on any interface in @@ -376,8 +383,8 @@ c) Add the following to /etc/shorewall/icmpdef:

    run_iptables -A icmpdef -p ICMP --icmp-type echo-request -j ACCEPT

    -

    6. Where are the log messages written -and  how do I change the destination?

    +

    6. Where are the log messages written +and  how do I change the destination?

    Answer: NetFilter uses the kernel's equivalent of syslog (see "man syslog") to log messages. It always uses the LOG_KERN (kern) facility (see "man openlog") and you get to choose the log level (again, see @@ -390,11 +397,11 @@ syslogd (on a RedHat system, "service syslog restart").

    settings in /etc/shorewall/shorewall.conf -- If you want to log all messages, set:

    -
         LOGLIMIT=""
    -     LOGBURST=""
    +
         LOGLIMIT=""
    +     LOGBURST=""
    -

    6a. Are there any log parsers that work -with Shorewall?

    +

    6a. Are there any log parsers that work +with Shorewall?

    Answer: Here are several links that may be helpful:

    @@ -402,33 +409,33 @@ http://www.shorewall.net/pub/shorewall/parsefw/
    http://www.fireparse.com
    http://cert.uni-stuttgart.de/projects/fwlogwatch

    -

    7. When I stop Shorewall using 'shorewall -stop', I can't connect to anything. Why doesn't that command work?

    +

    7. When I stop Shorewall using 'shorewall +stop', I can't connect to anything. Why doesn't that command work?

    The 'stop' command is intended to place your firewall into a safe state whereby only those interfaces/hosts having the 'routestopped' option in /etc/shorewall/interfaces and /etc/shorewall/hosts are activated. If you want to totally open up your firewall, you must use the 'shorewall clear' command.

    -

    8. When I try to start Shorewall on RedHat -7.x, I get messages about insmod failing -- what's wrong?

    +

    8. When I try to start Shorewall on RedHat +7.x, I get messages about insmod failing -- what's wrong?

    Answer: The output you will see looks something like this:

    -
         /lib/modules/2.4.17/kernel/net/ipv4/netfilter/ip_tables.o: init_module: Device or resource busy
    +
         /lib/modules/2.4.17/kernel/net/ipv4/netfilter/ip_tables.o: init_module: Device or resource busy
          Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters
          /lib/modules/2.4.17/kernel/net/ipv4/netfilter/ip_tables.o: insmod
          /lib/modules/2.4.17/kernel/net/ipv4/netfilter/ip_tables.o failed
          /lib/modules/2.4.17/kernel/net/ipv4/netfilter/ip_tables.o: insmod ip_tables failed
          iptables v1.2.3: can't initialize iptables table `nat': iptables who? (do you need to insmod?)
    -     Perhaps iptables or your kernel needs to be upgraded.
    + Perhaps iptables or your kernel needs to be upgraded.

    This is usually cured by the following sequence of commands:

    -
         service ipchains stop
    +
         service ipchains stop
          chkconfig --delete ipchains
    -     rmmod ipchains
    + rmmod ipchains

    Also, be sure to check the errata for problems concerning the version of iptables (v1.2.3) shipped with RH7.2.

    -

    9. Why does Shorewall only accept IP -addresses as opposed to FQDNs?

    Answer: FQDNs in iptables rules +

    9. Why does Shorewall only accept IP +addresses as opposed to FQDNs?

    Answer: FQDNs in iptables rules aren't nearly as useful as they first appear. When a DNS name appears in a rule, the iptables utility resolves the name to one or more IP addresses and inserts those addresses into the rule. So change in the DNS->IP address relationship @@ -436,71 +443,71 @@ that occur after the firewall has started have absolutely no effect on the firewall's ruleset.

    I'm also trying to protect people from themselves. If your firewall rules include FQDN's then:

    -
    - - - - -
    bulletIf your /etc/resolv.conf is wrong then your firewall won't - start.
    bulletIf your /etc/nsswitch.conf is wrong then your firewall won't - start.
    bulletIf your Name Server(s) is(are) down then your firewall won't - start.
    bulletFactors totally outside your control (your ISP's router is - down for example), can prevent your firewall from starting.
    -

    10. What Distributions does it work - with?

    +
      +
    • If your /etc/resolv.conf is wrong then your firewall won't + start.
    • +
    • If your /etc/nsswitch.conf is wrong then your firewall won't + start.
    • +
    • If your Name Server(s) is(are) down then your firewall won't + start.
    • +
    • Factors totally outside your control (your ISP's router is + down for example), can prevent your firewall from starting.
    • +
    +

    10. What Distributions does it work + with?

    Shorewall works with any GNU/Linux distribution that includes - the proper prerequisites.

    11. What Features does it have?

    + the proper prerequisites.

    11. What Features does it have?

    Answer: See the Shorewall Feature - List.

    12. Why isn't there a GUI?

    + List.

    12. Why isn't there a GUI?

    Answer: Every time I've started to work on one, I find myself doing other things. I guess I just don't care enough if Shorewall has a GUI to invest the effort to create one myself. There are several Shorewall GUI projects underway however and I will publish links to them when the authors - feel that they are ready.

    -13. Why do you call it "Shorewall"?

    + feel that they are ready.

    +13. Why do you call it "Shorewall"?

    Answer: Shorewall is a concatenation of "Shoreline" (the - city where I live) and "Firewall".

    + city where I live) and "Firewall".

    14.  I'm connected via a cable modem and it has an internal web server that allows me to configure/monitor it but as expected if I enable rfc1918 blocking for my eth0 interface (the internet one), it also blocks -the cable modems web server.

    +the cable modems web server.

    Is there any way it can add a rule before the rfc1918 blocking that will let all traffic to and from the 192.168.100.1 address of the modem in/out but still block all other rfc1918 addresses.

    Answer: If you are running a version of Shorewall earlier than 1.3.1, create /etc/shorewall/start and in it, place the following:

    -
         run_iptables -I rfc1918 -s 192.168.100.1 -j ACCEPT
    +
         run_iptables -I rfc1918 -s 192.168.100.1 -j ACCEPT

    If you are running version 1.3.1 or later, simply add the following to /etc/shorewall/rfc1918:

    - +
    - - + + - - + + -
    SUBNET TARGETSUBNET TARGET
    192.168.100.1RETURN192.168.100.1RETURN
    +

    Be sure that you add the entry ABOVE the entry for 192.168.0.0/16.

    -

    14a. Even though it assigns public IP +

    14a. Even though it assigns public IP addresses, my ISP's DHCP server has an RFC 1918 address. If I enable RFC 1918 - filtering on my external interface, my DHCP client cannot renew its lease.

    + filtering on my external interface, my DHCP client cannot renew its lease.

    The solution is the same as FAQ 14 above. Simply substitute the IP address of your ISPs DHCP server.

    -

    15. My local systems can't see out to the -net

    +

    15. My local systems can't see out to the +net

    Answer: Every time I read "systems can't see out to the net", I wonder where the poster bought computers with eyes and what those computers will "see" @@ -522,20 +529,20 @@ problem are:

    -

    16. Shorewall is writing log messages all -over my console making it unusable!

    +

    16. Shorewall is writing log messages all +over my console making it unusable!

    Answer: "man dmesg" -- add a suitable 'dmesg' command to your startup scripts or place it in /etc/shorewall/start.

    -

    17. Why can't Shorewall detect my - interfaces properly?

    +

    17. Why can't Shorewall detect my + interfaces properly?

    I just installed Shorewall and when I issue the start command, I see the following:

    -
         Processing /etc/shorewall/shorewall.conf ...
    +  
         Processing /etc/shorewall/shorewall.conf ...
          Processing /etc/shorewall/params ...
          Starting Shorewall...
          Loading Modules...
    @@ -549,23 +556,22 @@ over my console making it unusable!
          Local Zone: eth1:0.0.0.0/0
          Deleting user chains...
          Creating input Chains...
    -     ...
    + ...

    Why can't Shorewall detect my interfaces properly?

    Answer: The above output is perfectly normal. The Net zone is defined as all hosts that are connected through eth0 and the local - zone is defined as all hosts connected through eth1. -

    + zone is defined as all hosts connected through eth1.

    Last updated -7/31/2002 - Tom +8/15/2002 - Tom Eastep

    Copyright © 2001, 2002 Thomas M. Eastep.

    -
    + \ No newline at end of file diff --git a/STABLE/documentation/GnuCopyright.htm b/STABLE/documentation/GnuCopyright.htm index 7d39fb81b..9edd1c7ae 100644 --- a/STABLE/documentation/GnuCopyright.htm +++ b/STABLE/documentation/GnuCopyright.htm @@ -6,18 +6,23 @@ Copyright - - + -

    GNU Free Documentation License

    + + + + +
    +

    GNU Free Documentation License

    +

    Version 1.1, March 2000

    -
    Copyright (C) 2000  Free Software Foundation, Inc.
    +
    Copyright (C) 2000  Free Software Foundation, Inc.
     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
     Everyone is permitted to copy and distribute verbatim copies
     of this license document, but changing it is not allowed.
    -
    +

    0. PREAMBLE

    The purpose of this License is to make a manual, textbook, or other written document "free" in the sense of freedom: to assure everyone the effective @@ -130,55 +135,55 @@ of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

     

    -
    - - - - - - - - - - - - - - -
    bulletA. Use in the Title Page (and on the covers, if any) a +
      +
    • A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original - publisher of that version gives permission.
    bulletB. List on the Title Page, as authors, one or more + publisher of that version gives permission. +
  • B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the - Document (all of its principal authors, if it has less than five).
  • bulletC. State on the Title page the name of the publisher of - the Modified Version, as the publisher.
    bulletD. Preserve all the copyright notices of the Document. -
    bulletE. Add an appropriate copyright notice for your - modifications adjacent to the other copyright notices.
    bulletF. Include, immediately after the copyright notices, a + Document (all of its principal authors, if it has less than five). +
  • C. State on the Title page the name of the publisher of + the Modified Version, as the publisher.
  • +
  • D. Preserve all the copyright notices of the Document. +
  • +
  • E. Add an appropriate copyright notice for your + modifications adjacent to the other copyright notices.
  • +
  • F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under - the terms of this License, in the form shown in the Addendum below.
  • bulletG. Preserve in that license notice the full lists of + the terms of this License, in the form shown in the Addendum below. +
  • G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license - notice.
  • bulletH. Include an unaltered copy of this License.
    bulletI. Preserve the section entitled "History", and its + notice. +
  • H. Include an unaltered copy of this License.
  • +
  • I. Preserve the section entitled "History", and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous - sentence.
  • bulletJ. Preserve the network location, if any, given in the + sentence. +
  • J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives - permission.
  • bulletK. In any section entitled "Acknowledgements" or + permission. +
  • K. In any section entitled "Acknowledgements" or "Dedications", preserve the section's title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or - dedications given therein.
  • bulletL. Preserve all the Invariant Sections of the Document, + dedications given therein. +
  • L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent - are not considered part of the section titles.
  • bulletM. Delete any section entitled "Endorsements". Such a - section may not be included in the Modified Version.
    bulletN. Do not retitle any existing section as "Endorsements" - or to conflict in title with any Invariant Section.
    + are not considered part of the section titles. +
  • M. Delete any section entitled "Endorsements". Such a + section may not be included in the Modified Version.
  • +
  • N. Do not retitle any existing section as "Endorsements" + or to conflict in title with any Invariant Section.
  • +

    If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To @@ -272,6 +277,6 @@ does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.

     

    -
    + \ No newline at end of file diff --git a/STABLE/documentation/IPIP.htm b/STABLE/documentation/IPIP.htm index a2b2a84bb..c8c0e7a75 100644 --- a/STABLE/documentation/IPIP.htm +++ b/STABLE/documentation/IPIP.htm @@ -5,13 +5,18 @@ GRE/IPIP Tunnels - - -

    GRE and IPIP Tunnels

    -

    Warning: GRE and IPIP Tunnels are insecure when used -over the internet; use them at your own risk

    + + + + + +
    +

    GRE and IPIP Tunnels

    +
    +

    Warning: GRE and IPIP Tunnels are insecure when used +over the internet; use them at your own risk

    GRE and IPIP tunneling with Shorewall requires iproute2 and can be used to bridge two masqueraded networks. GRE tunnels were introduced in shorewall version 1.2.0_Beta2.

    The simple scripts described in the Linux Advanced Routing @@ -19,9 +24,10 @@ and Shaping HOWTO work fine with Shorewall. Shorewall also includes a tunnel script for automating tunnel configuration. If you have installed the RPM, the tunnel script may be found in the Shorewall documentation directory (usually /usr/share/doc/shorewall-<version>/).

    -

    Bridging two Masqueraded Networks

    +

    Bridging two Masqueraded Networks

    Suppose that we have the following situation:

    -

    +

    +

    We want systems in the 192.168.1.0/24 subnetwork to be able to communicate with the systems in the 10.0.0.0/8 network. This is accomplished through use of the /etc/shorewall/tunnels file, the /etc/shorewall/policy file @@ -39,37 +45,37 @@ parameter to the type of tunnel that you want to create.

    On system A, the 10.0.0.0/8 will comprise the gw zone. In /etc/shorewall/interfaces:

    - +
    - - - - + + + + - - - - + + + + -
    ZONEINTERFACEBROADCASTOPTIONSZONEINTERFACEBROADCASTOPTIONS
    gwtosysb10.255.255.255 gwtosysb10.255.255.255 
    +

    In /etc/shorewall/tunnels on system A, we need the following:

    - +
    - - - - + + + + - - - - + + + + -
    TYPEZONEGATEWAYGATEWAY ZONETYPEZONEGATEWAYGATEWAY ZONE
    ipipnet134.28.54.2 ipipnet134.28.54.2 
    +

    This entry in /etc/shorewall/tunnels, opens the firewall so that the IP encapsulation protocol (4) will be accepted to/from the remote gateway.

    @@ -85,37 +91,37 @@ encapsulation protocol (4) will be accepted to/from the remote gateway.

    Similarly, On system B the 192.168.1.0/24 subnet will comprise the gw zone. In /etc/shorewall/interfaces:

    - +
    - - - - + + + + - - - - + + + + -
    ZONEINTERFACEBROADCASTOPTIONSZONEINTERFACEBROADCASTOPTIONS
    gwtosysa192.168.1.255 gwtosysa192.168.1.255 
    +

    In /etc/shorewall/tunnels on system B, we have:

    - +
    - - - - + + + + - - - - + + + + -
    TYPEZONEGATEWAYGATEWAY ZONETYPEZONEGATEWAYGATEWAY ZONE
    ipipnet206.191.148.9 ipipnet206.191.148.9 
    +

    And in the tunnel script on system B:

    @@ -135,28 +141,28 @@ secured so that root can execute them.

    - +
    - - - - + + + + - - - - + + + + - - - - + + + + -
    SOURCEDESTPOLICYLOG LEVELSOURCEDESTPOLICYLOG LEVEL
    locgwACCEPT locgwACCEPT 
    gwlocACCEPT gwlocACCEPT 
    +

    On both systems, restart Shorewall and run the modified tunnel script with the "start" argument on each @@ -167,6 +173,6 @@ Eastep

    Copyright © 2001, 2002 Thomas M. Eastep.

    - + \ No newline at end of file diff --git a/STABLE/documentation/IPSEC.htm b/STABLE/documentation/IPSEC.htm index 1124ff916..fee400531 100644 --- a/STABLE/documentation/IPSEC.htm +++ b/STABLE/documentation/IPSEC.htm @@ -10,11 +10,16 @@ - - - -

    IPSEC Tunnels

    -

    Configuring FreeS/Wan

    + + + + + + +
    +

    IPSEC Tunnels

    +
    +

    Configuring FreeS/Wan

    There is an excellent guide to configuring IPSEC tunnels at http://jixen.tripod.com . I highly recommend that you consult that site for information about confuring @@ -31,18 +36,18 @@ FreeS/Wan.

         qt service ipsec stop

    In /etc/shorewall/start, include:

        qt service ipsec start

    -

    +

    IPSec Gateway on the Firewall System -

    +

    Suppose that we have the following sutuation:

    - +

    @@ -65,109 +70,129 @@ adding an entry to the /etc/shorewall/tunnels file.

    on system A, we need the following 

    - +
    - - - - + + + + - - - - + + + + -
    - TYPE - ZONE - GATEWAY - GATEWAY ZONE + TYPE + ZONE + GATEWAY + GATEWAY ZONE
    ipsecnet134.28.54.2 ipsecnet134.28.54.2 
    +

    In /etc/shorewall/tunnels on system B, we would have:

    - +
    - - - - + + + + - - - - + + + + -
    - TYPE - ZONE - GATEWAY - GATEWAY ZONE + TYPE + ZONE + GATEWAY + GATEWAY ZONE
    ipsecnet206.161.148.9 ipsecnet206.161.148.9 
    + + +

    You need to define a zone for the remote subnet or include + it in your local zone. In this example, we'll assume that you have created a + zone called "vpn" to represent the remote subnet.

    + +
    + + + + + + + + + + + + +
    ZONEDISPLAYCOMMENTS
    vpnVPNRemote Subnet
    +

    At both -systems, ipsec0 would be included in /etc/shorewall/interfaces as a "gw" +systems, ipsec0 would be included in /etc/shorewall/interfaces as a "vpn" interface:

    - +
    - - - - + + + + - - - - + + + + -
    - ZONE - INTERFACE - BROADCAST - OPTIONS + ZONE + INTERFACE + BROADCAST + OPTIONS
    gwipsec0  vpnipsec0  
    + -

    You will need to allow traffic between the "gw" zone and +

    You will need to allow traffic between the "vpn" zone and the "loc" zone -- if you simply want to admit all traffic in both directions, you can use the policy file:

    - +
    - - - - + + + + - - - - + + + + - - - - + + + + -
    SOURCEDESTPOLICYLOG LEVELSOURCEDESTPOLICYLOG LEVEL
    locgwACCEPT locvpnACCEPT 
    gwlocACCEPT vpnlocACCEPT 
    +

    Once @@ -177,48 +202,67 @@ you are now ready to configure the tunnel in - Mobile System (Road Warrior) +

    + Mobile System (Road Warrior)

    Suppose that you have a laptop system (B) that you take with you when you travel and you want to be able to establish a secure connection back to your local network.

    - +

    +

    You need to define a zone for the laptop or include it in + your local zone. In this example, we'll assume that you have created a zone + called "vpn" to represent the remote host.

    + +
    + + + + + + + + + + + + +
    ZONEDISPLAYCOMMENTS
    vpnVPNRemote Subnet
    +
    +

    In this instance, the mobile system (B) has IP address 134.28.54.2 but that cannot be determined in advance. In the /etc/shorewall/tunnels file on system A, the following entry should be made:

    - +
    - - - - + + + + - - - - + + + + -
    - TYPE - ZONE - GATEWAY - GATEWAY ZONE + TYPE + ZONE + GATEWAY + GATEWAY ZONE
    ipsecnet0.0.0.0/0gwipsecnet0.0.0.0/0vpn
    +

    Note that the GATEWAY -ZONE column contains the name of the zone corresponding to peer subnetworks -(gw in the default /etc/shorewall/zones). This indicates that the +ZONE column contains the name of the zone corresponding to peer subnetworks. This indicates that the gateway system itself comprises the peer subnetwork; in other words, the remote gateway is a standalone system.

    @@ -228,7 +272,7 @@ remote gateway is a standalone system.

    Last -updated 5/18/2002 - +updated 8/20/2002 - Tom Eastep

    @@ -236,5 +280,5 @@ updated 5/18/2002 -

    Copyright © 2001, 2002 Thomas M. Eastep.

    -
    + \ No newline at end of file diff --git a/STABLE/documentation/Install.htm b/STABLE/documentation/Install.htm index 3dcf447b4..468f4b2e7 100644 --- a/STABLE/documentation/Install.htm +++ b/STABLE/documentation/Install.htm @@ -5,10 +5,16 @@ Shorewall Installation - -

    Shorewall Installation

    + + + + + +
    +

    Shorewall Installation

    +

    Install using RPM
    Install @@ -25,48 +31,48 @@ either from the RedHat update site or from the Shorewall Errata page before attempting to start Shorewall.

    - - - - -
    bulletInstall the RPM (rpm -ivh <shorewall rpm>).
    +
      +
    • Install the RPM (rpm -ivh <shorewall rpm>).

      Note: Some SuSE users have encountered a problem whereby rpm reports a conflict with kernel <= 2.2 even though a 2.4 kernel is installed. If this happens, simply use the --nodeps option to rpm (rpm -ivh --nodeps <shorewall - rpm>).
    bulletEdit the configuration files to match your configuration. WARNING - YOU CAN NOT SIMPLY INSTALL THE RPM + rpm>). +
  • Edit the configuration files to match your configuration. WARNING - YOU CAN NOT SIMPLY INSTALL THE RPM AND ISSUE A "shorewall start" COMMAND. SOME CONFIGURATION IS REQUIRED BEFORE THE FIREWALL WILL START. IF YOU ISSUE A "start" COMMAND AND THE FIREWALL FAILS TO START, YOUR SYSTEM WILL NO LONGER ACCEPT ANY NETWORK TRAFFIC. IF THIS HAPPENS, -ISSUE A "shorewall clear" COMMAND TO RESTORE NETWORK CONNECTIVITY.
  • bulletStart the firewall by typing "shorewall start"
    +ISSUE A "shorewall clear" COMMAND TO RESTORE NETWORK CONNECTIVITY.
    +
  • Start the firewall by typing "shorewall start"
  • +

    To install Shorewall using the tarball and install script:

    -
    - - - - - - - - - -
    bulletunpack the tarball
    bulletcd to the shorewall directory (the version is encoded in the - directory name as in "shorewall-1.1.10").
    bulletIf you are using +
  • unpack the tarball (tar -zxf shorewall-x.y.z.tgz).
  • +
  • cd to the shorewall directory (the version is encoded in the + directory name as in "shorewall-1.1.10").
  • +
  • If you are using Caldera, RedHat, Mandrake, Corel, Slackware or Debian - then type "./install.sh"
  • bulletIf you are using SuSe then type - "./install.sh /etc/init.d"
    bulletIf your distribution has directory + then type "./install.sh" +
  • If you are using SuSe then type + "./install.sh /etc/init.d"
  • +
  • If your distribution has directory /etc/rc.d/init.d or /etc/init.d then type - "./install.sh"
  • bulletFor other distributions, determine where your + "./install.sh" +
  • For other distributions, determine where your distribution installs init scripts and type - "./install.sh <init script directory>
  • bulletEdit the configuration files to match your configuration.
    bulletStart the firewall by typing "shorewall - start"
    bulletIf the install script was unable to configure Shorewall to be started automatically at boot, + "./install.sh <init script directory> +
  • Edit the configuration files to match your configuration.
  • +
  • Start the firewall by typing "shorewall + start"
  • +
  • If the install script was unable to configure Shorewall to be started automatically at boot, see these - instructions.
  • + instructions. +

    If you already have the Shorewall RPM installed and are upgrading to a new version:

    If you are upgrading from a 1.2 version of Shorewall to a 1.3 version and you @@ -74,11 +80,11 @@ have entries in the /etc/shorewall/hosts file then please check your /etc/shorewall/interfaces file to be sure that it contains an entry for each interface mentioned in the hosts file. Also, there are certain 1.2 rule forms that are no longer supported under 1.3 (you must use the new 1.3 syntax). See -the errata for details. You can check your rules and +the upgrade issues for details. You can check your rules and host file for 1.3 compatibility using the "shorewall check" command after installing the latest version of 1.3.

    -
    - - - -
    bulletUpgrade the RPM (rpm -Uvh <shorewall rpm file>) Note: If you +
      +
    • Upgrade the RPM (rpm -Uvh <shorewall rpm file>) Note: If you are installing version 1.2.0 and have one of the 1.2.0 Beta RPMs installed, you must use the "--oldpackage" option to rpm (e.g., "rpm -Uvh --oldpackage shorewall-1.2-0.noarch.rpm"). @@ -87,11 +93,11 @@ installing the latest version of 1.3.

      conflict with kernel <= 2.2 even though a 2.4 kernel is installed. If this happens, simply use the --nodeps option to rpm (rpm -Uvh --nodeps <shorewall rpm>).
    bulletSee if there are any incompatibilities between your configuration and the - new Shorewall version (type "shorewall check") and correct as necessary.
    bulletRestart the firewall (shorewall restart).
    +  +
  • See if there are any incompatibilities between your configuration and the + new Shorewall version (type "shorewall check") and correct as necessary.
  • +
  • Restart the firewall (shorewall restart).
  • +

    If you already have Shorewall installed and are upgrading to a new version using the tarball:

    If you are upgrading from a 1.2 version of Shorewall to a 1.3 version and you @@ -99,67 +105,67 @@ have entries in the /etc/shorewall/hosts file then please check your /etc/shorewall/interfaces file to be sure that it contains an entry for each interface mentioned in the hosts file.  Also, there are certain 1.2 rule forms that are no longer supported under 1.3 (you must use the new 1.3 syntax). -See the errata for details. You can check your rules +See the upgrade issues for details. You can check your rules and host file for 1.3 compatibility using the "shorewall check" command after installing the latest version of 1.3.

    -
    - - - - - - - - -
    bulletunpack the tarball
    bulletcd to the shorewall directory (the version is encoded in the - directory name as in "shorewall-3.0.1").
    bulletIf you are using +
  • unpack the tarball (tar -zxf shorewall-x.y.z.tgz).
  • +
  • cd to the shorewall directory (the version is encoded in the + directory name as in "shorewall-3.0.1").
  • +
  • If you are using Caldera, RedHat, Mandrake, Corel, Slackware or Debian - then type "./install.sh"
  • bulletIf you are using SuSe then type - "./install.sh /etc/init.d"
    bulletIf your distribution has directory + then type "./install.sh" +
  • If you are using SuSe then type + "./install.sh /etc/init.d"
  • +
  • If your distribution has directory /etc/rc.d/init.d or /etc/init.d then type - "./install.sh"
  • bulletFor other distributions, determine where your + "./install.sh" +
  • For other distributions, determine where your distribution installs init scripts and type - "./install.sh <init script directory>
  • bulletSee if there are any incompatibilities between your configuration and the - new Shorewall version (type "shorewall check") and correct as necessary.
    bulletRestart the firewall by typing "shorewall restart"
    -

    Configuring Shorewall

    + "./install.sh <init script directory> +
  • See if there are any incompatibilities between your configuration and the + new Shorewall version (type "shorewall check") and correct as necessary.
  • +
  • Restart the firewall by typing "shorewall restart"
  • + +

    Configuring Shorewall

    You will need to edit some or all of these configuration files to match your setup. In most cases, the Shorewall QuickStart Guides contain all of the information you need.

    -
    - - - - - - - - - - - - - - - - -
    bullet/etc/shorewall/shorewall.conf - used to set several firewall - parameters.
    bullet/etc/shorewall/params - use this file to set shell variables that you will - expand in other files.
    bullet/etc/shorewall/zones - partition the firewall's view of the world - into zones.
    bullet/etc/shorewall/policy - establishes firewall high-level policy.
    bullet/etc/shorewall/interfaces - describes the interfaces on the - firewall system.
    bullet/etc/shorewall/hosts - allows defining zones in terms of individual - hosts and subnetworks.
    bullet/etc/shorewall/masq - directs the firewall where to use many-to-one - (dynamic) NAT a.k.a. Masquerading.
    bullet/etc/shorewall/modules - directs the firewall to load kernel modules.
    bullet/etc/shorewall/rules - defines rules that are exceptions to the - overall policies established in /etc/shorewall/policy.
    bullet/etc/shorewall/nat - defines static NAT rules.
    bullet/etc/shorewall/proxyarp - defines use of Proxy ARP.
    bullet/etc/shorewall/routestopped (Shorewall 1.3.4 and later) - defines hosts - accessible when Shorewall is stopped.
    bullet/etc/shorewall/tcrules - defines marking of packets for later use by - traffic control/shaping.
    bullet/etc/shorewall/tos - defines rules for setting the TOS field in packet - headers.
    bullet/etc/shorewall/tunnels - defines IPSEC tunnels with end-points on - the firewall system.
    bullet/etc/shorewall/blacklist - lists blacklisted IP/subnet/MAC addresses.
    -

    Updated 7/31/2002 - Tom +

    +

    Updated 8/7/2002 - Tom Eastep

    Copyright © 2001, 2002 Thomas M. Eastep.

    -
    \ No newline at end of file + \ No newline at end of file diff --git a/STABLE/documentation/NAT.htm b/STABLE/documentation/NAT.htm index e3272c554..c72bf1388 100644 --- a/STABLE/documentation/NAT.htm +++ b/STABLE/documentation/NAT.htm @@ -5,13 +5,18 @@ Shorewall NAT - - +
    -

    Static NAT

    + + + + +
    +

    Static NAT

    +

    IMPORTANT: If all you want to do is forward ports to servers behind your firewall, you do NOT want to use static NAT. Port forwarding can be accomplished with simple entries in the @@ -22,7 +27,8 @@ addresses.

    The following figure represents a static NAT environment.

    -

    +

    +

    Static NAT can be used to make the systems with the @@ -31,29 +37,29 @@ /etc/shorewall/NAT file would make the lower left-hand system appear to have IP address 130.252.100.18 and the right-hand one to have IP address 130.252.100.19.

    -
    +
    - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + -
    EXTERNALINTERFACEINTERNALALL INTERFACESLOCALEXTERNALINTERFACEINTERNALALL INTERFACESLOCAL
    130.252.100.18eth010.1.1.2yesyes130.252.100.18eth010.1.1.2yesyes
    130.252.100.19eth010.1.1.3yesyes130.252.100.19eth010.1.1.3yesyes
    +

    Be sure that the internal system(s) (10.1.1.2 and 10.1.1.3 in the above example) is (are) not included in any specification in /etc/shorewall/masq or /etc/shorewall/proxyarp.

    @@ -83,4 +89,4 @@ Tom Eastep

    Copyright2001, 2002 Thomas M. Eastep.
    \ No newline at end of file +© 2001, 2002 Thomas M. Eastep.
    \ No newline at end of file diff --git a/STABLE/documentation/News.htm b/STABLE/documentation/News.htm index 3050387e6..78ec4d63d 100644 --- a/STABLE/documentation/News.htm +++ b/STABLE/documentation/News.htm @@ -5,39 +5,84 @@ Shorewall News - - + -

    Shorewall News Archive

    + + + + +
    +

    Shorewall News Archive

    +
    +

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

    + +

    Features in this release include:

    + +
      +
    • The 'icmp.def' file is now empty! The rules in that file were required in + ipchains firewalls but are not required in Shorewall. Users who have + ALLOWRELATED=No in shorewall.conf should + see the Upgrade Issues.
    • +
    • A 'FORWARDPING' option has been added to + shorewall.conf. The effect of setting this variable to Yes is the same as + the effect of adding an ACCEPT rule for ICMP echo-request in + /etc/shorewall/icmpdef. Users + who have such a rule in icmpdef are encouraged to switch to FORWARDPING=Yes.
    • +
    • The loopback CLASS A Network (127.0.0.0/8) has been added to the rfc1918 + file.
    • +
    • Shorewall now works with iptables 1.2.7
    • +
    • The documentation and web site no longer uses FrontPage themes.
    • +
    + +

    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:

    -
    - - - -
    bulletThe latest QuickStart Guides - including the Shorewall Setup Guide.
    bulletShorewall will now DROP TCP packets that are not part of or +
    bulletThe processing of "New not SYN" packets may be extended by command in the - new newnotsyn extension script.
    + in /etc/shorewall/shorewall.conf. +
  • The processing of "New not SYN" packets may be extended by commands in + the new newnotsyn extension script.
  • +

    7/30/2002 - Shorewall 1.3.5b Released

    This interim release:

    -
    - - - -
    bulletCauses the firewall script to remove the lock file if it is killed.
    bulletOnce again allows lists in the second column of the - /etc/shorewall/hosts file.
    bulletIncludes the latest QuickStart - Guides.
    +
      +
    • Causes the firewall script to remove the lock file if it is killed.
    • +
    • Once again allows lists in the second column of the + /etc/shorewall/hosts file.
    • +
    • Includes the latest QuickStart + Guides.
    • +

    7/29/2002 - New Shorewall Setup Guide Available

    @@ -63,25 +108,25 @@

     In this version:

    -
    - - - - - -
    bulletEmpty and invalid source and destination qualifiers are now detected in +
      +
    • Empty and invalid source and destination qualifiers are now detected in the rules file. It is a good idea to use the 'shorewall check' command before you issue a 'shorewall restart' command be be sure that you don't have any - configuration problems that will prevent a successful restart.
    bulletAdded MERGE_HOSTS variable in + configuration problems that will prevent a successful restart. +
  • Added MERGE_HOSTS variable in shorewall.conf to provide saner behavior of the /etc/shorewall/hosts - file.
  • bulletThe time that the counters were last reset is now displayed in the - heading of the 'status' and 'show' commands.
    bulletA proxyarp option has been added for entries in + file. +
  • The time that the counters were last reset is now displayed in the + heading of the 'status' and 'show' commands.
  • +
  • A proxyarp option has been added for entries in /etc/shorewall/interfaces. This option facilitates Proxy ARP sub-netting as described in the Proxy ARP subnetting mini-HOWTO (http://www.tldp.org/HOWTO/mini/Proxy-ARP-Subnet/). Specifying the proxyarp option for an interface causes Shorewall to set - /proc/sys/net/ipv4/conf/<interface>/proxy_arp.
  • bulletThe Samples have been updated to reflect the new capabilities in this - release.
    + /proc/sys/net/ipv4/conf/<interface>/proxy_arp. +
  • The Samples have been updated to reflect the new capabilities in this + release.
  • +

    7/16/2002 - New Mirror in Argentina

    @@ -92,25 +137,25 @@

    In this version:

    -
    - - - - - -
    bulletA new +
      +
    • A new /etc/shorewall/routestopped file has been added. This file is intended to eventually replace the routestopped option in the /etc/shorewall/interface and /etc/shorewall/hosts files. This new file makes remote firewall administration easier by allowing any IP or subnet to be - enabled while Shorewall is stopped.
    bulletAn /etc/shorewall/stopped extension + enabled while Shorewall is stopped. +
  • An /etc/shorewall/stopped extension script has been added. This script is invoked after Shorewall has - stopped.
  • bulletA DETECT_DNAT_ADDRS option has been added to + stopped. +
  • A DETECT_DNAT_ADDRS option has been added to /etc/shoreall/shorewall.conf. When this option is selected, DNAT rules only apply when the destination address is the - external interface's primary IP address.
  • bulletThe QuickStart Guide has - been broken into three guides and has been almost entirely rewritten.
    bulletThe Samples have been updated to reflect the new capabilities in this - release.
    + external interface's primary IP address. +
  • The QuickStart Guide has + been broken into three guides and has been almost entirely rewritten.
  • +
  • The Samples have been updated to reflect the new capabilities in this + release.
  • +

    7/8/2002 - Shorewall 1.3.3 Debian Package Available

    @@ -120,20 +165,20 @@

    In this version:

    -
    - - - - - - -
    bulletEntries in /etc/shorewall/interface that use the wildcard character ("+") - now have the "multi" option assumed.
    bulletThe 'rfc1918' chain in the mangle table has been renamed 'man1918' to +
      +
    • Entries in /etc/shorewall/interface that use the wildcard character ("+") + now have the "multi" option assumed.
    • +
    • The 'rfc1918' chain in the mangle table has been renamed 'man1918' to make log messages generated from that chain distinguishable from those - generated by the 'rfc1918' chain in the filter table.
    bulletInterface names appearing in the hosts file are now validated against the - interfaces file.
    bulletThe TARGET column in the rfc1918 file is now checked for correctness.
    bulletThe chain structure in the nat table has been changed to reduce the + generated by the 'rfc1918' chain in the filter table. +
  • Interface names appearing in the hosts file are now validated against the + interfaces file.
  • +
  • The TARGET column in the rfc1918 file is now checked for correctness.
  • +
  • The chain structure in the nat table has been changed to reduce the number of rules that a packet must traverse and to correct problems with - NAT_BEFORE_RULES=No
  • bulletThe "hits" command has been enhanced.
    + NAT_BEFORE_RULES=No +
  • The "hits" command has been enhanced.
  • +

    6/25/2002 - Samples Updated for 1.3.2

    @@ -154,16 +199,16 @@

    In this version:

    -
    - - - - -
    bulletA logwatch command has been - added to /sbin/shorewall.
    bulletA dynamic blacklist facility has - been added.
    bulletSupport for the Netfilter multiport - match function has been added.
    bulletThe files firewall, functions and version have been moved - from /etc/shorewall to /var/lib/shorewall.
    +

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

    @@ -172,11 +217,11 @@ my server was almost unusable due to the high load generated by website copying tools like HTTrack and WebStripper. These mindless tools:

    -
    - - - -
    bulletIgnore robot.txt files.
    bulletRecursively copy everything that they find.
    bulletShould be classified as weapons rather than tools.
    +
      +
    • Ignore robot.txt files.
    • +
    • Recursively copy everything that they find.
    • +
    • Should be classified as weapons rather than 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 @@ -202,87 +247,87 @@

    Hot on the heels of 1.3.0, this release:

    -
    - - -
    bulletCorrects a serious problem with "all <zone> CONTINUE" policies. +
      +
    • Corrects a serious problem with "all <zone> CONTINUE" policies. This problem is present in all versions of Shorewall that support the CONTINUE policy. These previous versions optimized away the "all2<zone>" chain and replaced it with the "all2all" chain with the usual result that a - policy of REJECT was enforced rather than the intended CONTINUE policy.
    bulletAdds an /etc/shorewall/rfc1918 + policy of REJECT was enforced rather than the intended CONTINUE policy. +
  • Adds an /etc/shorewall/rfc1918 file for defining the exact behavior of the - 'norfc1918' interface option.
  • + 'norfc1918' interface option. +

    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:

    -
    - -
    bulletA 'filterping' interface option that allows ICMP echo-request (ping) +
      +
    • A 'filterping' interface option that allows ICMP echo-request (ping) requests addressed to the firewall to be handled by entries in - /etc/shorewall/rules and /etc/shorewall/policy.
    + /etc/shorewall/rules and /etc/shorewall/policy. +

    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:

    -
    - -
    bulletSupport for the /etc/shorewall/whitelist file has been withdrawn. If you +
      +
    • Support for the /etc/shorewall/whitelist file has been withdrawn. If you need whitelisting, see these - instructions.
    + instructions. +

    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:

    -
    - - - - -
    bulletThe structure of the firewall is changed markedly. There is now an INPUT +
      +
    • The structure of the firewall is changed markedly. There is now an INPUT and a FORWARD chain for each interface; this reduces the number of rules that - a packet must traverse, especially in complicated setups.
    bulletSub-zones may now be excluded from - DNAT and REDIRECT rules.
    bulletThe names of the columns in a number of the configuration files have been + a packet must traverse, especially in complicated setups. +
  • Sub-zones may now be excluded from + DNAT and REDIRECT rules.
  • +
  • The names of the columns in a number of the configuration files have been changed to be more consistent and self-explanatory and the documentation has - been updated accordingly.
  • bulletThe sample configurations have been updated for 1.3.
    + been updated accordingly. +
  • The sample configurations have been updated for 1.3.
  • +

    5/17/2002 - Shorewall 1.3 Beta 1 Available

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

    -
    - - - -
    bulletSimplified rule syntax which makes the intent of each rule clearer and - hopefully makes Shorewall easier to learn.
    bulletUpward compatibility with 1.2 configuration files has been maintained so - that current users can migrate to the new syntax at their convenience.
    bulletWARNING:  Compatibility with the old +
      +
    • Simplified rule syntax which makes the intent of each rule clearer and + hopefully makes Shorewall easier to learn.
    • +
    • Upward compatibility with 1.2 configuration files has been maintained so + that current users can migrate to the new syntax at their convenience.
    • +
    • WARNING:  Compatibility with the old parameterized sample configurations has NOT been maintained. Users still running those configurations should migrate to the new sample configurations - before upgrading to 1.3 Beta 1.
    + before upgrading to 1.3 Beta 1.
    +

    5/4/2002 - Shorewall 1.2.13 is Available

    In this version:

    - - - - - -
    bulletWhite-listing is supported.
    bulletSYN-flood protection is added.
    bulletIP addresses added under ADD_IP_ALIASES +
    bulletThe order in which port forwarding DNAT and Static DNAT + interface's primary IP address. +
  • The order in which port forwarding DNAT and Static DNAT can now be reversed so that port forwarding rules can override the contents of - /etc/shorewall/nat.
  • + /etc/shorewall/nat. +

    4/30/2002 - Shorewall Debian News

    @@ -294,23 +339,23 @@

    4/20/2002 - Shorewall 1.2.12 is Available

    -
    - - -
    bulletThe 'try' command works again
    bulletThere is now a single RPM that also works with SuSE.
    +
      +
    • The 'try' command works again
    • +
    • There is now a single RPM that also works with SuSE.
    • +

    4/17/2002 - Shorewall Debian News

    Lorenzo Marignoni reports that:

    -
    - - -
    bulletShorewall 1.2.10 is in the +
    bulletShorewall 1.2.11 is in the + Testing Branch +
  • Shorewall 1.2.11 is in the Debian - Unstable Branch
  • + Unstable Branch +

    Thanks, Lorenzo!

    @@ -325,20 +370,20 @@

    In this version:

    -
    - - - - -
    bulletThe 'try' command now accepts an optional timeout. If the timeout is +
      +
    • The 'try' command now accepts an optional timeout. If the timeout is given in the command, the standard configuration will automatically be restarted after the new configuration has been running for that length of time. This prevents a remote admin from being locked out of the firewall in - the case where the new configuration starts but prevents access.
    bulletKernel route filtering may now be enabled globally using the new + the case where the new configuration starts but prevents access. +
  • Kernel route filtering may now be enabled globally using the new ROUTE_FILTER parameter in - /etc/shorewall/shorewall.conf.
  • bulletIndividual IP source addresses and/or subnets may now be excluded from - masquerading/SNAT.
    bulletSimple "Yes/No" and "On/Off" values are now case-insensitive in - /etc/shorewall/shorewall.conf.
    + /etc/shorewall/shorewall.conf. +
  • Individual IP source addresses and/or subnets may now be excluded from + masquerading/SNAT.
  • +
  • Simple "Yes/No" and "On/Off" values are now case-insensitive in + /etc/shorewall/shorewall.conf.
  • +

    4/13/2002 - Hamburg Mirror now has FTP

    @@ -391,12 +436,12 @@

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

    -
    - - -
    bulletThe 1.2.10 Debian Package is available at http://security.dsi.unimi.it/~lorenzo/debian.html.
    bulletShorewall 1.2.9 is now in the +
    + Unstable Distribution. +

    3/25/2002 - Log Parser Available

    @@ -408,39 +453,39 @@

    In this version:

    -
    - - - -
    bulletA "shorewall try" command has been added (syntax: shorewall try +
      +
    • A "shorewall try" command has been added (syntax: shorewall try <configuration directory>). This command attempts "shorewall -c <configuration directory> start" and if that results in the firewall being stopped due to an error, a "shorewall start" command is executed. The 'try' command allows you to create a new configuration and attempt to start it; if there is an error that leaves your firewall in the stopped state, it will automatically be restarted using - the default configuration (in /etc/shorewall).
    bulletA new variable ADD_SNAT_ALIASES has been added to + the default configuration (in /etc/shorewall). +
  • A new variable ADD_SNAT_ALIASES has been added to /etc/shorewall/shorewall.conf. If this variable is set to "Yes", Shorewall will automatically add IP addresses listed in the third column of the - /etc/shorewall/masq file.
  • bulletCopyright notices have been added to the documenation.
    + /etc/shorewall/masq file. +
  • Copyright notices have been added to the documenation.
  • +

    3/11/2002 - Shorewall 1.2.9 Released

    In this version:

    -
    - - - -
    bulletFiltering by MAC address has been added. - MAC addresses may be used as the source address in: - - - - -
    bulletFiltering rules (/etc/shorewall/rules)
    bulletTraffic Control Classification Rules (/etc/shorewall/tcrules)
    bulletTOS Rules (/etc/shorewall/tos)
    bulletBlacklist (/etc/shorewall/blacklist)
    -
    bulletSeveral bugs have been fixed
    bulletThe 1.2.9 Debian Package is also available at http://security.dsi.unimi.it/~lorenzo/debian.html.
    +

    3/1/2002 - 1.2.8 Debian Package is Available

    @@ -463,15 +508,15 @@ http://www.shorewall.net/pub/shorewall/LATEST.samples/two-interfaces.tgz

    In this version:

    -
    - - - -
    bulletUPnP probes (UDP destination port 1900) are now silently dropped in the - common chain
    bulletRFC 1918 checking in the mangle table has been streamlined to no longer +
      +
    • UPnP probes (UDP destination port 1900) are now silently dropped in the + common chain
    • +
    • RFC 1918 checking in the mangle table has been streamlined to no longer require packet marking. RFC 1918 checking in the filter table has been - changed to require half as many rules as previously.
    bulletA 'shorewall check' command has been added that does a cursory validation - of the zones, interfaces, hosts, rules and policy files.
    + changed to require half as many rules as previously. +
  • A 'shorewall check' command has been added that does a cursory validation + of the zones, interfaces, hosts, rules and policy files.
  • +

    2/18/2002 - 1.2.6 Debian Package is Available

    @@ -481,17 +526,17 @@ http://www.shorewall.net/pub/shorewall/LATEST.samples/two-interfaces.tgz

    In this version:

    -
    - - - -
    bullet$-variables may now be used anywhere in the configuration files except - /etc/shorewall/zones.
    bulletThe interfaces and hosts files now have their contents validated before +
      +
    • $-variables may now be used anywhere in the configuration files except + /etc/shorewall/zones.
    • +
    • The interfaces and hosts files now have their contents validated before any changes are made to the existing Netfilter configuration. The appearance of a zone name that isn't defined in /etc/shorewall/zones causes "shorewall start" and "shorewall restart" to abort without changing the Shorewall state. - Unknown options in either file cause a warning to be issued.
    bulletA problem occurring when BLACKLIST_LOGLEVEL was not set has been - corrected.
    + Unknown options in either file cause a warning to be issued. +
  • A problem occurring when BLACKLIST_LOGLEVEL was not set has been + corrected.
  • +

    2/4/2002 - Shorewall 1.2.5 Debian Package Available

    @@ -504,30 +549,30 @@ http://www.shorewall.net/pub/shorewall/LATEST.samples/two-interfaces.tgz

    In version 1.2.5:

    -
    - - - - -
    bulletThe installation problems have been corrected.
    bulletSNAT is now supported.
    bulletA "shorewall version" command has been added
    bulletThe default value of the STATEDIR variable in +
      +
    • The installation problems have been corrected.
    • +
    • SNAT is now supported.
    • +
    • A "shorewall version" command has been added
    • +
    • The default value of the STATEDIR variable in /etc/shorewall/shorewall.conf has been changed to /var/lib/shorewall in - order to conform to the GNU/Linux File Hierarchy Standard, Version 2.2.
    + order to conform to the GNU/Linux File Hierarchy Standard, Version 2.2. +

    1/28/2002 - Shorewall 1.2.4 Released

    -
    - - - - -
    bulletThe "fw" zone may now be given a - different name.
    bulletYou may now place end-of-line comments (preceded by '#') in any of the - configuration files
    bulletThere is now protection against against two state changing operations +
      +
    • The "fw" zone may now be given a + different name.
    • +
    • You may now place end-of-line comments (preceded by '#') in any of the + configuration files
    • +
    • There is now protection against against two state changing operations occuring concurrently. This is implemented using the 'lockfile' utility if it is available (lockfile is part of procmail); otherwise, a less robust technique is used. The lockfile is created in the STATEDIR defined in - /etc/shorewall/shorewall.conf and has the name "lock".
    bullet"shorewall start" no longer fails if "detect" is - specified in /etc/shorewall/interfaces for an interface with subnet mask 255.255.255.255.
    + /etc/shorewall/shorewall.conf and has the name "lock". +
  • "shorewall start" no longer fails if "detect" is + specified in /etc/shorewall/interfaces for an interface with subnet mask 255.255.255.255.
  • +

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

    @@ -540,17 +585,17 @@ errata for details.

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

    -
    - -
    bulletSupport for TCP MSS Clamp to PMTU -- This support is usually required when +
      +
    • Support for TCP MSS Clamp to PMTU -- This support is usually required when the internet connection is via PPPoE or PPTP and may be enabled using the CLAMPMSS - option in /etc/shorewall/shorewall.conf.
    + option in /etc/shorewall/shorewall.conf. +

    The following problems were corrected:

    -
    - - - -
    bulletThe "shorewall status" command no longer hangs.
    bulletThe "shorewall monitor" command now displays the icmpdef chain
    bulletThe CLIENT PORT(S) column in tcrules is no longer ignored
    +
      +
    • The "shorewall status" command no longer hangs.
    • +
    • The "shorewall monitor" command now displays the icmpdef chain
    • +
    • The CLIENT PORT(S) column in tcrules is no longer ignored
    • +

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

    @@ -570,46 +615,46 @@ health.

    In version 1.2.2

    -
    - - - -
    bulletSupport for IP blacklisting has been added - - - - - - -
    bulletYou specify whether you want packets from blacklisted hosts dropped or +
      +
    • Support for IP blacklisting has been added +
        +
      • You specify whether you want packets from blacklisted hosts dropped or rejected using the BLACKLIST_DISPOSITION - setting in /etc/shorewall/shorewall.conf
    bulletYou specify whether you want packets from blacklisted hosts logged and + setting in /etc/shorewall/shorewall.conf +
  • You specify whether you want packets from blacklisted hosts logged and at what syslog level using the BLACKLIST_LOGLEVEL - setting in /etc/shorewall/shorewall.conf
  • bulletYou list the IP addresses/subnets that you wish to blacklist in /etc/shorewall/blacklist
    bulletYou specify the interfaces you want checked against the blacklist + setting in /etc/shorewall/shorewall.conf +
  • You list the IP addresses/subnets that you wish to blacklist in /etc/shorewall/blacklist
  • +
  • You specify the interfaces you want checked against the blacklist using the new "blacklist" - option in /etc/shorewall/interfaces.
  • bulletThe black list is refreshed from /etc/shorewall/blacklist by the - "shorewall refresh" command.
    -
    bulletUse of TCP RST replies has been expanded  - - - -
    bulletTCP connection requests rejected because of a REJECT policy are now - replied with a TCP RST packet.
    bulletTCP connection requests rejected because of a protocol=all rule in - /etc/shorewall/rules are now replied with a TCP RST packet.
    -
    bulletA LOGFILE specification has been + option in /etc/shorewall/interfaces. +
  • The black list is refreshed from /etc/shorewall/blacklist by the + "shorewall refresh" command.
  • + + +
  • Use of TCP RST replies has been expanded  +
      +
    • TCP connection requests rejected because of a REJECT policy are now + replied with a TCP RST packet.
    • +
    • TCP connection requests rejected because of a protocol=all rule in + /etc/shorewall/rules are now replied with a TCP RST packet.
    • +
    +
  • +
  • A LOGFILE specification has been added to /etc/shorewall/shorewall.conf. LOGFILE is used to tell the - /sbin/shorewall program where to look for Shorewall messages.
  • + /sbin/shorewall program where to look for Shorewall messages. +

    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:

    -
    - - -
    bulletUnless you have explicitly enabled Auth connections (tcp port 113) to your +
      +
    • Unless you have explicitly enabled Auth connections (tcp port 113) to your firewall, these connections will be REJECTED rather than DROPPED. This - speeds up connection establishment to some servers.
    bulletOrphan DNS replies are now silently dropped.
    + speeds up connection establishment to some servers. +
  • Orphan DNS replies are now silently dropped.
  • +

    See the README file for upgrade instructions.

    1/1/2002 - Shorewall Mailing List Moving

    @@ -622,24 +667,24 @@ samples. There are two new rules added:

    In version 1.2.1:

    -
    - - - -
    bulletLogging of Mangled/Invalid - Packets is added. 
    bulletThe tunnel script has been corrected.
    bullet'shorewall show tc' now correctly handles tunnels.
    +

    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:

    -
    - - - -
    bulletSupport for Traffic Control/Shaping
    bulletSupport for Filtering of - Mangled/Invalid Packets
    bulletSupport for GRE Tunnels
    +

    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.

    @@ -657,24 +702,24 @@ and the ftp site is at

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

    -
    - - -
    bulletPing is now allowed between the zones.
    bulletIn the three-interface configuration, it is now possible to configure the - internet services that are to be available to servers in the DMZ. 
    +
      +
    • Ping is now allowed between the zones.
    • +
    • In the three-interface configuration, it is now possible to configure the + internet services that are to be available to servers in the DMZ. 
    • +

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

    In this version:

    -
    - - - -
    bulletThe spelling of ADD_IP_ALIASES has been corrected in the shorewall.conf - file
    bulletThe logic for deleting user-defined chains has been simplified so that it - avoids a bug in the LRP version of the 'cut' utility.
    bulletThe /var/lib/lrpkg/shorwall.conf file has been corrected to properly - display the NAT entry in that file.
    +
      +
    • The spelling of ADD_IP_ALIASES has been corrected in the shorewall.conf + file
    • +
    • The logic for deleting user-defined chains has been simplified so that it + avoids a bug in the LRP version of the 'cut' utility.
    • +
    • The /var/lib/lrpkg/shorwall.conf file has been corrected to properly + display the NAT entry in that file.
    • +

    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 @@ -683,11 +728,11 @@ and the ftp site is at

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

    -
    - - - -
    bulletOne Interface -- for a standalone system.
    bulletTwo Interfaces -- A masquerading firewall.
    bulletThree Interfaces -- A masquerading firewall with DMZ.
    +
      +
    • One Interface -- for a standalone system.
    • +
    • Two Interfaces -- A masquerading firewall.
    • +
    • Three Interfaces -- A masquerading firewall with DMZ.
    • +

    Samples may be downloaded from @@ -699,41 +744,41 @@ and the ftp site is at

    In this version:

    -
    - -
    bulletThe handling of ADD_IP_ALIASES - has been corrected. 
    +

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

    -
    - - - -
    bulletA new "shorewall show connections" command has been added.
    bulletIn the "shorewall monitor" output, the currently tracked - connections are now shown on a separate page.
    bulletPrior to this release, Shorewall unconditionally added the external IP +
      +
    • A new "shorewall show connections" command has been added.
    • +
    • In the "shorewall monitor" output, the currently tracked + connections are now shown on a separate page.
    • +
    • Prior to this release, Shorewall unconditionally added the external IP adddress(es) specified in /etc/shorewall/nat. Beginning with version 1.1.16, a new parameter (ADD_IP_ALIASES) may be set to "no" (or "No") to inhibit this behavior. This allows IP aliases created using your distribution's network - configuration tools to be used in static NAT. 
    + configuration tools to be used in static NAT.  +

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

    -
    - - -
    bulletSupport for nested zones has been improved. See +
    bulletShorewall now correctly checks the alternate configuration directory for - the 'zones' file.
    + for details +
  • Shorewall now correctly checks the alternate configuration directory for + the 'zones' file.
  • +

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

    -
    - - - - - -
    bulletShorewall now supports alternate configuration directories. When an +
      +
    • Shorewall now supports alternate configuration directories. When an alternate directory is specified when starting or restarting Shorewall (e.g., "shorewall -c /etc/testconf restart"), Shorewall will first look for configuration files in the alternate directory then in @@ -742,116 +787,116 @@ version:

      2. Copy to that directory any of your configuration files that you want to change.
      3. Modify the copied files as needed.
      - 4. Restart Shorewall specifying the new directory.
    bulletThe rules for allowing/disallowing icmp echo-requests (pings) are now + 4. Restart Shorewall specifying the new directory. +
  • The rules for allowing/disallowing icmp echo-requests (pings) are now moved after rules created when processing the rules file. This allows you to add rules that selectively allow/deny ping based on source or destination - address.
  • bulletRules that specify multiple client ip addresses or subnets no longer cause - startup failures.
    bulletZone names in the policy file are now validated against the zones file.
    bulletIf you have packet mangling + address. +
  • Rules that specify multiple client ip addresses or subnets no longer cause + startup failures.
  • +
  • Zone names in the policy file are now validated against the zones file.
  • +
  • If you have packet mangling support enabled, the "norfc1918" interface option now logs and drops any incoming packets on the interface - that have an RFC 1918 destination address.
  • + that have an RFC 1918 destination address. +

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

    -
    - - - -
    bulletShell variables can now be used to parameterize Shorewall rules.
    bulletThe second column in the hosts file may now contain a comma-separated +
      +
    • Shell variables can now be used to parameterize Shorewall rules.
    • +
    • The second column in the hosts file may now contain a comma-separated list.

      Example:
          sea    - eth0:130.252.100.0/24,206.191.149.0/24
    bulletHandling of multi-zone interfaces has been improved. See the documentation - for the /etc/shorewall/interfaces file.
    + eth0:130.252.100.0/24,206.191.149.0/24 +
  • Handling of multi-zone interfaces has been improved. See the documentation + for the /etc/shorewall/interfaces file.
  • +

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

    -
    - - - -
    bulletSeveral columns in the rules file may now contain comma-separated lists.
    bulletShorewall is now more rigorous in parsing the options in - /etc/shorewall/interfaces.
    bulletComplementation using "!" is now supported in rules.
    +
      +
    • Several columns in the rules file may now contain comma-separated lists.
    • +
    • Shorewall is now more rigorous in parsing the options in + /etc/shorewall/interfaces.
    • +
    • Complementation using "!" is now supported in rules.
    • +

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

    -
    - - - - -
    bulletA "shorewall refresh" command has been added to allow for +
      +
    • A "shorewall refresh" command has been added to allow for refreshing the rules associated with the broadcast address on a dynamic interface. This command should be used in place of "shorewall - restart" when the internet interface's IP address changes.
    bulletThe /etc/shorewall/start file (if any) is now processed after all + restart" when the internet interface's IP address changes. +
  • The /etc/shorewall/start file (if any) is now processed after all temporary rules have been deleted. This change prevents the accidental - removal of rules added during the processing of that file.
  • bulletThe "dhcp" interface option is now applicable to firewall - interfaces used by a DHCP server running on the firewall.
    bulletThe RPM can now be built from the .tgz file using "rpm -tb" 
    + removal of rules added during the processing of that file. +
  • The "dhcp" interface option is now applicable to firewall + interfaces used by a DHCP server running on the firewall.
  • +
  • The RPM can now be built from the .tgz file using "rpm -tb" 
  • +

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

    -
    - - - -
    bulletShorewall now enables Ipv4 Packet Forwarding by default. Packet forwarding +
      +
    • Shorewall now enables Ipv4 Packet Forwarding by default. Packet forwarding may be disabled by specifying IP_FORWARD=Off in /etc/shorewall/shorewall.conf. If you don't want Shorewall to enable or disable packet forwarding, add IP_FORWARDING=Keep to your - /etc/shorewall/shorewall.conf file.
    bulletThe "shorewall hits" command no longer lists extraneous service - names in its last report.
    bulletErroneous instructions in the comments at the head of the firewall script - have been corrected.
    + /etc/shorewall/shorewall.conf file. +
  • The "shorewall hits" command no longer lists extraneous service + names in its last report.
  • +
  • Erroneous instructions in the comments at the head of the firewall script + have been corrected.
  • +

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

    -
    - - - - - - - -
    bulletThe "tunnels" file really is in the RPM now.
    bulletSNAT can now be applied to port-forwarded connections.
    bulletA bug which would cause firewall start failures in some dhcp configurations - has been fixed.
    bulletThe firewall script now issues a message if you have the name of an +
      +
    • The "tunnels" file really is in the RPM now.
    • +
    • SNAT can now be applied to port-forwarded connections.
    • +
    • A bug which would cause firewall start failures in some dhcp configurations + has been fixed.
    • +
    • The firewall script now issues a message if you have the name of an interface in the second column in an entry in /etc/shorewall/masq and that - interface is not up.
    bulletYou can now configure Shorewall so that it doesn't require the NAT and/or - mangle netfilter modules.
    bulletThanks to Alex  Polishchuk, the "hits" command - from seawall is now in shorewall.
    bulletSupport for IPIP tunnels has been added.
    + interface is not up. +
  • You can now configure Shorewall so that it doesn't require the NAT and/or + mangle netfilter modules.
  • +
  • Thanks to Alex  Polishchuk, the "hits" command + from seawall is now in shorewall.
  • +
  • Support for IPIP tunnels has been added.
  • +

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

    -
    - - - -
    bulletA typo in the sample rules file has been corrected.
    bulletIt is now possible to restrict masquerading by - destination host or subnet.
    bulletIt is now possible to have static NAT rules - applied to packets originating on the firewall itself.
    +

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

    -
    - - - - - -
    bulletThe TOS rules are now deleted when the firewall is stopped.
    bulletThe .rpm will now install regardless of which version of iptables is - installed.
    bulletThe .rpm will now install without iproute2 being installed.
    bulletThe documentation has been cleaned up.
    bulletThe sample configuration files included in Shorewall have been formatted - to 80 columns for ease of editing on a VGA console.
    +
      +
    • The TOS rules are now deleted when the firewall is stopped.
    • +
    • The .rpm will now install regardless of which version of iptables is + installed.
    • +
    • The .rpm will now install without iproute2 being installed.
    • +
    • The documentation has been cleaned up.
    • +
    • The sample configuration files included in Shorewall have been formatted + to 80 columns for ease of editing on a VGA console.
    • +

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

    -
    - - - -
    bulletYou may now rate-limit the packet log.
    bullet Previous versions of +
      +
    • You may now rate-limit the packet log.
    • +
    •  Previous versions of Shorewall have an implementation of Static NAT which violates the principle of least surprise.  NAT only occurs for packets arriving at (DNAT) or send from (SNAT) the interface named in the INTERFACE column of @@ -860,129 +905,129 @@ version:

      compatibility with prior versions, I have added a new "ALL "ALL INTERFACES"  column to /etc/shorewall/nat. By placing "no" or "No" in the new column, the NAT behavior of - prior versions may be retained. 
    bulletThe treatment of IPSEC Tunnels where the remote + prior versions may be retained.  +
  • The treatment of IPSEC Tunnels where the remote gateway is a standalone system has been improved. Previously, it was necessary to include an additional rule allowing UDP port 500 traffic to pass through the tunnel. Shorewall will now create this rule automatically when you place the name of the remote peer's zone in a new GATEWAY ZONE - column in /etc/shorewall/tunnels. 
  • + column in /etc/shorewall/tunnels.  +

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

    -
    - - - - -
    bulletYou may now pass parameters when loading - netfilter modules and you can specify the modules to load.
    bulletCompressed modules are now loaded. This requires that you modutils support - loading compressed modules.
    bulletYou may now set the Type of Service (TOS) - field in packets.
    bulletCorrected rules generated for port redirection (again).
    +

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

    -
    - - - - -
    bullet Accepting RELATED connections is now - optional.
    bulletCorrected problem where if "shorewall start" aborted early +
    bulletCorrected rules generated for port redirection.
    bulletThe order in which iptables kernel modules are loaded has been - corrected (Thanks to Mark Pavlidis). 
    + messages were reported. +
  • Corrected rules generated for port redirection.
  • +
  • The order in which iptables kernel modules are loaded has been + corrected (Thanks to Mark Pavlidis). 
  • +

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

    -
    - - - - - - - - -
    bulletCorrect message issued when Proxy ARP address added (Thanks to Jason Kirtland).
    bullet/tmp/shorewallpolicy-$$ is now removed if there is an error while starting the firewall.
    bullet/etc/shorewall/icmp.def and /etc/shorewall/common.def are now used to define the icmpdef and common chains unless overridden by the presence of /etc/shorewall/icmpdef or /etc/shorewall/common.
    bulletIn the .lrp, the file /var/lib/lrpkg/shorwall.conf has been corrected. An extra space after "/etc/shorwall/policy" has been removed and "/etc/shorwall/rules" has been added.
    bulletWhen a sub-shell encounters a fatal error and has stopped the firewall, it now kills the main shell so that the main shell will not continue.
    bulletA problem has been corrected where a sub-shell stopped the firewall and main shell continued resulting in a perplexing error message - referring to "common.so" resulted.
    bulletPreviously, placing "-" in the PORT(S) column in /etc/shorewall/rules resulted in an error message during start. This has been corrected.
    bulletThe first line of "install.sh" has been corrected -- I had inadvertently deleted the initial "#".
    +
      +
    • Correct message issued when Proxy ARP address added (Thanks to Jason Kirtland).
    • +
    • /tmp/shorewallpolicy-$$ is now removed if there is an error while starting the firewall.
    • +
    • /etc/shorewall/icmp.def and /etc/shorewall/common.def are now used to define the icmpdef and common chains unless overridden by the presence of /etc/shorewall/icmpdef or /etc/shorewall/common.
    • +
    • In the .lrp, the file /var/lib/lrpkg/shorwall.conf has been corrected. An extra space after "/etc/shorwall/policy" has been removed and "/etc/shorwall/rules" has been added.
    • +
    • When a sub-shell encounters a fatal error and has stopped the firewall, it now kills the main shell so that the main shell will not continue.
    • +
    • A problem has been corrected where a sub-shell stopped the firewall and main shell continued resulting in a perplexing error message + referring to "common.so" resulted.
    • +
    • Previously, placing "-" in the PORT(S) column in /etc/shorewall/rules resulted in an error message during start. This has been corrected.
    • +
    • The first line of "install.sh" has been corrected -- I had inadvertently deleted the initial "#".
    • +

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

    -
    - - - - - -
    bulletPort redirection now works again.
    bulletThe icmpdef and common chains may - now be user-defined.
    bulletThe firewall no longer fails to start if "routefilter" is +
      +
    • Port redirection now works again.
    • +
    • The icmpdef and common chains may + now be user-defined.
    • +
    • The firewall no longer fails to start if "routefilter" is specified for an interface that isn't started. A warning message is now - issued in this case.
    bulletThe LRP Version is renamed "shorwall" for 8,3 MSDOS file - system compatibility.
    bulletA couple of LRP-specific problems were corrected.
    + issued in this case. +
  • The LRP Version is renamed "shorwall" for 8,3 MSDOS file + system compatibility.
  • +
  • A couple of LRP-specific problems were corrected.
  • +

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

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

    -
    - - - -
    bulletThe common chain is traversed from INPUT, OUTPUT and FORWARD before - logging occurs
    bulletThe source has been cleaned up dramatically
    bulletDHCP DISCOVER packets with RFC1918 source addresses no longer +
      +
    • The common chain is traversed from INPUT, OUTPUT and FORWARD before + logging occurs
    • +
    • The source has been cleaned up dramatically
    • +
    • DHCP DISCOVER packets with RFC1918 source addresses no longer generate log messages. Linux DHCP clients generate such packets and it's - annoying to see them logged. 
    + annoying to see them logged.  +

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

    -
    - - - - - - - -
    bulletLog messages now indicate the packet disposition.
    bulletError messages have been improved.
    bulletThe ability to define zones consisting of an enumerated set of hosts - and/or subnetworks has been added.
    bulletThe zone-to-zone chain matrix is now sparse so that only those chains - that contain meaningful rules are defined.
    bullet240.0.0.0/4 and 169.254.0.0/16 have been added to the source +
      +
    • Log messages now indicate the packet disposition.
    • +
    • Error messages have been improved.
    • +
    • The ability to define zones consisting of an enumerated set of hosts + and/or subnetworks has been added.
    • +
    • The zone-to-zone chain matrix is now sparse so that only those chains + that contain meaningful rules are defined.
    • +
    • 240.0.0.0/4 and 169.254.0.0/16 have been added to the source subnetworks whose packets are dropped under the norfc1918 interface - option.
    bulletExits are now provided for executing an user-defined script when a + option. +
  • Exits are now provided for executing an user-defined script when a chain is defined, when the firewall is initialized, when the firewall is - started, when the firewall is stopped and when the firewall is cleared.
  • bulletThe Linux kernel's route filtering facility can now be specified - selectively on network interfaces.
    + started, when the firewall is stopped and when the firewall is cleared. +
  • The Linux kernel's route filtering facility can now be specified + selectively on network interfaces.
  • +

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

    -
    - - - - -
    bulletAllows user-defined zones. Shorewall now has only one pre-defined +
      +
    • Allows user-defined zones. Shorewall now has only one pre-defined zone (fw) with the remaining zones being defined in the new configuration file /etc/shorewall/zones. The /etc/shorewall/zones file released in this - version provides behavior that is compatible with Shorewall 1.0.3. 
    bulletAdds the ability to specify logging in entries in the - /etc/shorewall/rules file.
    bulletCorrect handling of the icmp-def chain so that only ICMP packets are - sent through the chain.
    bulletCompresses the output of "shorewall monitor" if awk is + version provides behavior that is compatible with Shorewall 1.0.3.  +
  • Adds the ability to specify logging in entries in the + /etc/shorewall/rules file.
  • +
  • Correct handling of the icmp-def chain so that only ICMP packets are + sent through the chain.
  • +
  • Compresses the output of "shorewall monitor" if awk is installed. Allows the command to work if awk isn't installed (although - it's not pretty).
  • + it's not pretty). +

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

    -
    - - - -
    bulletThe PATH variable in the firewall script now includes /usr/local/bin - and /usr/local/sbin.
    bulletDMZ-related chains are now correctly deleted if the DMZ is deleted.
    bulletThe interface OPTIONS for "gw" interfaces are no longer - ignored.
    +
      +
    • The PATH variable in the firewall script now includes /usr/local/bin + and /usr/local/sbin.
    • +
    • DMZ-related chains are now correctly deleted if the DMZ is deleted.
    • +
    • The interface OPTIONS for "gw" interfaces are no longer + ignored.
    • +

    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.

    -

    Updated 7/31/2002 - Tom +

    Updated 8/22/2002 - Tom Eastep

    Copyright © 2001, 2002 Thomas M. Eastep.

    -
    \ No newline at end of file + \ No newline at end of file diff --git a/STABLE/documentation/PPTP.htm b/STABLE/documentation/PPTP.htm index 01cf8da3c..b8a61e6c4 100644 --- a/STABLE/documentation/PPTP.htm +++ b/STABLE/documentation/PPTP.htm @@ -6,27 +6,32 @@ Shorewall PPTP - - + -

    PPTP

    + + + + +
    +

    PPTP

    +

    Shorewall easily supports PPTP in a number of configurations:

    -
    - - - - -
    bullet - PPTP Server running on your Firewall
    bullet +
    bullet + Firewall. +
  • PPTP Clients running behind your - Firewall.
  • bullet - PPTP Client running on your Firewall.
    -

    1. PPTP Server Running on your Firewall

    + Firewall. +
  • + PPTP Client running on your Firewall.
  • + +

    1. PPTP Server Running on your Firewall

    I will try to give you an idea of how to set up a PPTP server on your firewall system. This isn't a detailed HOWTO but rather an example of how I have set up a working PPTP server on my own firewall.

    @@ -39,56 +44,56 @@ how I have set up a working PPTP server on my own firewall.

  • Configuring pptpd
  • Configuring Shorewall
  • -

    Patching and Building pppd

    +

    Patching and Building pppd

    To run pppd on a 2.4 kernel, you need the pppd 2.4.1 or later. The primary site for releases of pppd is ftp://ftp.samba.org/pub/ppp.

    You will need the following patches:

    -
    - - -
    bullet - http://www.shorewall.net/pub/shorewall/pptp/ppp-2.4.1-openssl-0.9.6-mppe-patch.gz
    bullethttp://www.shorewall.net/pub/shorewall/pptp/ppp-2.4.1-MSCHAPv2-fix.patch.gz
    +

    You may also want the following patch if you want to require remote hosts to use encryption:

    -
    - -
    bulletftp://ftp.shorewall.net/pub/shorewall/pptp/require-mppe.diff
    +

    Un-tar the pppd source and uncompress the patches into one directory (the patches and the ppp-2.4.1 directory are all in a single parent directory):

    -
    - - - - - - -
    bulletcd ppp-2.4.1
    bulletpatch -p1 < ../ppp-2.4.0-openssl-0.9.6-mppe.patch
    bulletpatch -p1 < ../ppp-2.4.1-MSCHAPv2-fix.patch
    bullet(Optional) patch -p1 < ../require-mppe.diff
    bullet./configure
    bulletmake
    +
      +
    • cd ppp-2.4.1
    • +
    • patch -p1 < ../ppp-2.4.0-openssl-0.9.6-mppe.patch
    • +
    • patch -p1 < ../ppp-2.4.1-MSCHAPv2-fix.patch
    • +
    • (Optional) patch -p1 < ../require-mppe.diff
    • +
    • ./configure
    • +
    • make
    • +

    You will need to install the resulting binary on your firewall system. To do that, I NFS mount my source filesystem and use "make install" from the ppp-2.4.1 directory.

    -

    Patching and Building your Kernel

    +

    Patching and Building your Kernel

    You will need one of the following patches depending on your kernel version:

    -
    - - -
    bullet - http://www.shorewall.net/pub/shorewall/pptp/linux-2.4.4-openssl-0.9.6a-mppe-patch.gz
    bullet - http://www.shorewall/net/pub/shorewall/pptp/linux-2.4.16-openssl-0.9.6b-mppe-patch.gz
    +

    Uncompress the patch into the same directory where your top-level kernel source is located and:

    -
    - - -
    bulletcd <your GNU/Linux source top-level directory>
    bulletpatch -p1 < ../linux-2.4.16-openssl-0.9.6b-mppe.patch
    +
      +
    • cd <your GNU/Linux source top-level directory>
    • +
    • patch -p1 < ../linux-2.4.16-openssl-0.9.6b-mppe.patch
    • +

    Now configure your kernel. Here is my ppp configuration:

    -

    Configuring Samba

    +

    Configuring Samba

    You will need a WINS server (Samba configured to run as a WINS server is fine). Global section from /etc/samba/smb.conf on my WINS server (192.168.1.3) is:

    -
    [global]
    +  
    [global]
          workgroup = TDM-NSTOP
          netbios name = WOOKIE
          server string = GNU/Linux Box
    @@ -113,9 +118,9 @@ fine). Global section from /etc/samba/smb.conf on my WINS server (192.168.1.3) i
     [printers]
          comment = All Printers
          path = /var/spool/samba
    -     printable = Yes
    + printable = Yes
    -

    Configuring pppd

    +

    Configuring pppd

    Here is a copy of my /etc/ppp/options.poptop file:

    ipparam PoPToP
    @@ -141,14 +146,14 @@ fine). Global section from /etc/samba/smb.conf on my WINS server (192.168.1.3) i require-mppe-stateless

    Notes:

    -
    - - - -
    bulletSince the firewall itself is acting as a WINS server, I have included the - firewall's internal IP as the 'ms-wins' value.
    bulletI have pointed the remote clients at my DNS server -- it has external - address 206.124.146.177.
    bulletI am requiring 128-bit stateless compression (my kernel is built with the - 'require-mppe.diff' patch mentioned above.
    +
      +
    • Since the firewall itself is acting as a WINS server, I have included the + firewall's internal IP as the 'ms-wins' value.
    • +
    • I have pointed the remote clients at my DNS server -- it has external + address 206.124.146.177.
    • +
    • I am requiring 128-bit stateless compression (my kernel is built with the + 'require-mppe.diff' patch mentioned above.
    • +

    Here's my /etc/ppp/chap-secrets:

    Secrets for authentication using CHAP
    @@ -164,11 +169,11 @@ or without a domain being specified. The system I connect from is my laptop so I give it the same IP address when tunneled in as it has when it is in its docking station.

    You will also want the following in /etc/modules.conf:

    -
         alias ppp-compress-18 ppp_mppe
    +
         alias ppp-compress-18 ppp_mppe
          alias ppp-compress-21 bsd_comp
          alias ppp-compress-24 ppp_deflate
    -     alias ppp-compress-26 ppp_deflate
    -

    Configuring pptpd

    + alias ppp-compress-26 ppp_deflate
    +

    Configuring pptpd

    PoPTop (pptpd) is available from http://poptop.lineo.com/.

    Here is a copy of my /etc/pptpd.conf file:

    @@ -178,14 +183,14 @@ station.

    remoteip 192.168.1.33-38

    Notes:

    -
    - - - -
    bulletI specify the /etc/ppp/options.poptop file as my ppp options file (I have - several).
    bulletThe local IP is the same as my internal interface's (192.168.1.254).
    bulletI have assigned a remote IP range that overlaps my local network. This, +
      +
    • I specify the /etc/ppp/options.poptop file as my ppp options file (I have + several).
    • +
    • The local IP is the same as my internal interface's (192.168.1.254).
    • +
    • I have assigned a remote IP range that overlaps my local network. This, together with 'proxyarp' in my /etc/ppp/options.poptop file make the remote - hosts look like they are part of the local subnetwork.
    + hosts look like they are part of the local subnetwork. +

    I use this file to start/stop pptpd -- I have this in /etc/init.d/pptpd:

    #!/bin/sh
    @@ -225,249 +230,249 @@ station.

        ;;
    esac

    -

    Configuring Shorewall

    +

    Configuring Shorewall

    I consider hosts connected to my PPTP server to be just like local systems. My key Shorewall entries are:

    -

    /etc/shorewall/zones:

    +

    /etc/shorewall/zones:

    - +
    - - - + + + - - - + + + - - - + + + -
    ZONEDISPLAYCOMMENTSZONEDISPLAYCOMMENTS
    netInternetThe InternetnetInternetThe Internet
    locLocalMy Local Network including remote PPTP clientslocLocalMy Local Network including remote PPTP clients
    +
    -

    /etc/shorewall/interfaces:

    +

    /etc/shorewall/interfaces:

    - +
    - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + -
    ZONEINTERFACEBROADCASTOPTIONSZONEINTERFACEBROADCASTOPTIONS
    neteth0206.124.146.255noping,norfc1918neteth0206.124.146.255noping,norfc1918
    loceth2192.168.1.255 loceth2192.168.1.255 
    -ppp+  -ppp+  
    +
    -

    /etc/shorewall/hosts:

    +

    /etc/shorewall/hosts:

    - +
    - - - + + + - - - + + + - - - + + + -
    ZONEHOST(S)OPTIONSZONEHOST(S)OPTIONS
    loceth2:192.168.1.0/24routestoppedloceth2:192.168.1.0/24routestopped
    locppp+:192.168.1.0/24 locppp+:192.168.1.0/24 
    +
    -

    /etc/shorewall/policy:

    +

    /etc/shorewall/policy:

    - +
    - - - - + + + + - - - - + + + + -
    SOURCEDESTPOLICYLOG LEVELSOURCEDESTPOLICYLOG LEVEL
    loclocACCEPT loclocACCEPT 
    +
    -

    /etc/shorewall/rules:

    +

    /etc/shorewall/rules:

    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDEST - PROTODEST
    - PORT(S)
    SOURCE
    - PORT(S)
    ORIGINAL
    - DEST
    ACTIONSOURCEDEST + PROTODEST
    + PORT(S)
    SOURCE
    + PORT(S)
    ORIGINAL
    + DEST
    ACCEPTnetfwtcp1723  ACCEPTnetfwtcp1723  
    ACCEPTnetfw47-  ACCEPTnetfw47-  
    ACCEPTfwnet47-  ACCEPTfwnet47-  
    +

    Note: I have multiple ppp interfaces on my firewall. If you have a single ppp interface, you probably want:

    -

    /etc/shorewall/interfaces:

    +

    /etc/shorewall/interfaces:

    - +
    - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + -
    ZONEINTERFACEBROADCASTOPTIONSZONEINTERFACEBROADCASTOPTIONS
    neteth0206.124.146.255noping,norfc1918neteth0206.124.146.255noping,norfc1918
    loceth2192.168.1.255 loceth2192.168.1.255 
    locppp0  locppp0  
    +

    and no entries in /etc/shorewall/hosts.

    -

    2. PPTP Server Running Behind your Firewall

    +

    2. PPTP Server Running Behind your Firewall

    If you have a single external IP address, add the following to your /etc/shorewall/rules file:

    -
    +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDEST - PROTODEST
    - PORT(S)
    SOURCE
    - PORT(S)
    ORIGINAL
    - DEST
    ACTIONSOURCEDEST + PROTODEST
    + PORT(S)
    SOURCE
    + PORT(S)
    ORIGINAL
    + DEST
    DNATnetloc:<server address>tcp1723  DNATnetloc:<server address>tcp1723  
    DNATnetloc:<server address>47-  DNATnetloc:<server address>47-  
    +

    If you have multiple external IP address and you want to forward a single <external -address>, add the following to your /etc/shorewall/rules file:

      +address>, add the following to your /etc/shorewall/rules file:

     

    - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDEST - PROTODEST
    - PORT(S)
    SOURCE
    - PORT(S)
    ORIGINAL
    - DEST
    ACTIONSOURCEDEST + PROTODEST
    + PORT(S)
    SOURCE
    + PORT(S)
    ORIGINAL
    + DEST
    DNATnetloc:<server address>tcp1723-<external address>DNATnetloc:<server address>tcp1723-<external address>
    DNATnetloc:<server address>47--<external address>DNATnetloc:<server address>47--<external address>
    -

    3. PPTP Clients Running Behind your Firewall

    + +

    3. PPTP Clients Running Behind your Firewall

    You shouldn't have to take any special action for this case unless you wish to connect multiple clients to the same external server. In that case, you will need to follow the instructions at http://www.impsec.org/linux/masquerade/ip_masq_vpn.html. @@ -477,7 +482,7 @@ file:

    loadmodule ip_conntrack_pptp
    loadmodule ip_nat_pptp

    -

    4. PPTP Client Running on your Firewall.

    +

    4. PPTP Client Running on your Firewall.

    The PPTP GNU/Linux client is available at http://sourceforge.net/projects/pptpclient/.    Rather than use the configuration script that comes with the client, I built my own. I also build my own kernel as described above @@ -492,90 +497,90 @@ below).

  • Define rules for traffic two and from the remote zone.
  • Here are examples from my setup:

    -

    /etc/shorewall/zones

    +

    /etc/shorewall/zones

    - +
    - - - + + + - - - + + + -
    ZONEDISPLAYCOMMENTSZONEDISPLAYCOMMENTS
    cpqCompaqCompaq IntranetcpqCompaqCompaq Intranet
    +
    -

    /etc/shorewall/interfaces

    +

    /etc/shorewall/interfaces

    - +
    - - - - + + + + - - - - + + + + -
    ZONEINTERFACEBROADCASTOPTIONSZONEINTERFACEBROADCASTOPTIONS
    -ppp+  -ppp+  
    +
    -

    /etc/shorewall/hosts

    +

    /etc/shorewall/hosts

    - +
    - - - + + + - - - + + + -
    ZONEHOST(S)OPTIONSZONEHOST(S)OPTIONS
    -ppp+:!192.168.1.0/24 -ppp+:!192.168.1.0/24 
    +
    -

    /etc/shorewall/rules

    +

    /etc/shorewall/rules

    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDEST - PROTODEST
    - PORT(S)
    SOURCE
    - PORT(S)
    ORIGINAL
    - DEST
    ACTIONSOURCEDEST + PROTODEST
    + PORT(S)
    SOURCE
    + PORT(S)
    ORIGINAL
    + DEST
    ACCEPTfwnettcp1723  ACCEPTfwnettcp1723  
    ACCEPTfwnet47-  ACCEPTfwnet47-  
    +

    I use the combination of interface and hosts file to define the 'cpq' zone because I also run a PPTP server on my firewall (see above). Using this @@ -706,7 +711,7 @@ traffic through the PPTP tunnel:     ;;
    esac

    Finally, I run the following script every five minutes under crond to - restart the tunnel if it fails:

         #!/bin/sh
    +  restart the tunnel if it fails:
         #!/bin/sh
          restart_pptp() {
              /sbin/service pptp stop
              sleep 10
    @@ -722,10 +727,10 @@ traffic through the PPTP tunnel:
          echo "Attempting to restart PPTP"
     
          restart_pptp > /dev/null 2>&1 &
    -
    +

    Here's a script and corresponding ip-up.local from Jerry Vonau that controls two PPTP connections.

    Last modified 7/11/2002 - Tom Eastep

    -Copyright © 2001, 2002 Thomas M. Eastep. \ No newline at end of file +Copyright © 2001, 2002 Thomas M. Eastep. \ No newline at end of file diff --git a/STABLE/documentation/ProxyARP.htm b/STABLE/documentation/ProxyARP.htm index 0757c9c71..c42ae0a9d 100644 --- a/STABLE/documentation/ProxyARP.htm +++ b/STABLE/documentation/ProxyARP.htm @@ -5,46 +5,59 @@ Shorewall Proxy ARP - + - + -

    -

    Proxy ARP

    -

     

    + + + + +
    +

    Proxy ARP

    +

    Proxy ARP allows you to insert a firewall in front of a set of servers without changing their IP addresses and without having to re-subnet.

    The following figure represents a Proxy ARP environment.

    -

    + +
    +

    +

    +
    +

    Proxy ARP can be used to make the systems with addresses 130.252.100.18 and 130.252.100.19 appear to be on the upper (130.252.100.*) subnet.  Assuming that the upper firewall interface is eth0 and the lower interface is eth1, this is accomplished using the following entries in /etc/shorewall/proxyarp:

    -
    + +
    +
    - - - - + + + + - - - - + + + + - - - - + + + + -
    ADDRESSINTERFACEEXTERNALHAVEROUTEADDRESSINTERFACEEXTERNALHAVEROUTE
    130.252.100.18eth1eth0no130.252.100.18eth1eth0no
    130.252.100.19eth1eth0no130.252.100.19eth1eth0no
    + +
    +

    Be sure that the internal systems (130.242.100.18 and 130.252.100.19  in the above example) are not included in any specification in /etc/shorewall/masq or /etc/shorewall/nat.

    @@ -53,13 +66,41 @@

    The lower systems (130.252.100.18 and 130.252.100.19) should have their subnet mask and default gateway configured exactly the same way that the Firewall system's eth0 is configured.

    - +
    +

    A word of warning is in order here. ISPs typically configure + their routers with a long ARP cache timeout. If you move a system from + parallel to your firewall to behind your firewall with Proxy ARP, it will + probably be HOURS before that system can communicate with the internet. You + can call your ISP and ask them to purge the stale ARP cache entry but many + either can't or won't purge individual entries. You can determine if your + ISP's gateway ARP cache is stale using ping and tcpdump. Suppose that we + suspect that the gateway router has a stale ARP cache entry for 130.252.100.19. + On the firewall, run tcpdump as follows:

    +
    +
    	tcpdump -nei eth0 icmp
    +
    +
    +

    Now from 130.252.100.19, ping the ISP's gateway (which we will + assume is 130.252.100.254):

    +
    +
    	ping 130.252.100.254
    +
    +
    +

    We can now observe the tcpdump output:

    +
    +
    	13:35:12.159321 0:4:e2:20:20:33 0:0:77:95:dd:19 ip 98: 130.252.100.19 > 130.252.100.254: icmp: echo request (DF)
    +	13:35:12.207615 0:0:77:95:dd:19 0:c0:a8:50:b2:57 ip 98: 130.252.100.254 > 130.252.100.177 : icmp: echo reply
    +
    +
    +

    Notice that the source MAC address in the echo request is + different from the destination MAC address in the echo reply!! In this case + 0:4:e2:20:20:33 was the MAC of the firewall's eth0 NIC while 0:c0:a8:50:b2:57 + was the MAC address of the system on the lower left. In other words, the gateway's ARP cache still + associates 130.252.100.19 with the NIC in that system rather than with the firewall's + eth0.

    -
    -
    - -

    Last updated 5/16/2002 - +

    Last updated 8/17/2002 - Tom Eastep

    Copyright2001, 2002 Thomas M. Eastep. \ No newline at end of file +© 2001, 2002 Thomas M. Eastep.
    \ No newline at end of file diff --git a/STABLE/documentation/Shorewall_index_frame.htm b/STABLE/documentation/Shorewall_index_frame.htm index 61975d387..707727ca4 100644 --- a/STABLE/documentation/Shorewall_index_frame.htm +++ b/STABLE/documentation/Shorewall_index_frame.htm @@ -7,60 +7,97 @@ Shorewall Index - + -

     Shorewall

    -
    - - - - - - - - - - - - - - - - - - - -
    bulletHome
    bulletShorewall 1.2 Home
    bulletFeatures
    bulletRequirements
    bulletDownload
    bulletQuickStart Guides
    bulletInstallation/Upgrade
    - /Configuration
    bulletDocumentation
    bulletReference Manual
    bulletFAQs
    bulletTroubleshooting
    bulletErrata
    bulletSupport
    bulletMailing Lists
    bulletMirrors - - - - -
    bulletSlovak Republic
    bulletTexas, USA
    bulletGermany
    bulletArgentina
    -
    bulletNews Archive
    bulletCVS Repository
    bulletQuotes from Users
    bulletAbout the Author
    + + + + + + + + +
    +

    Shorewall

    +
    + + +

    Quick Search
    - - + + +

    + +

    Extended Search Forms

    +

    Copyright2001, 2002 Thomas M. Eastep.

    +

    -

    +

    -

    Copyright2001, 2002 Thomas M. Eastep.

    - -
    + \ No newline at end of file diff --git a/STABLE/documentation/blacklisting_support.htm b/STABLE/documentation/blacklisting_support.htm index 46370f176..d6f57f189 100644 --- a/STABLE/documentation/blacklisting_support.htm +++ b/STABLE/documentation/blacklisting_support.htm @@ -6,50 +6,55 @@ Blacklisting Support - - + -

    Blacklisting Support

    + + + + +
    +

    Blacklisting Support

    +

    Shorewall supports two different forms of blacklisting; static and dynamic.

    -

    Static Blacklisting

    +

    Static Blacklisting

    Shorewall static blacklisting support has the following configuration parameters:

    -
    - - - - - -
    bulletYou specify whether you want packets from blacklisted hosts dropped or +
      +
    • You specify whether you want packets from blacklisted hosts dropped or rejected using the BLACKLIST_DISPOSITION - setting in /etc/shorewall/shorewall.conf
    bulletYou specify whether you want packets from blacklisted hosts logged and at + setting in /etc/shorewall/shorewall.conf +
  • You specify whether you want packets from blacklisted hosts logged and at what syslog level using the BLACKLIST_LOGLEVEL - setting in /etc/shorewall/shorewall.conf
  • bulletYou list the IP addresses/subnets that you wish to blacklist in /etc/shorewall/blacklist
    bulletYou specify the interfaces whose incoming packets you want checked against + setting in /etc/shorewall/shorewall.conf +
  • You list the IP addresses/subnets that you wish to blacklist in /etc/shorewall/blacklist
  • +
  • You specify the interfaces whose incoming packets you want checked against the blacklist using the "blacklist" - option in /etc/shorewall/interfaces.
  • bulletThe black list is refreshed from /etc/shorewall/blacklist by the "shorewall - refresh" command.
    -

    Dynamic Blacklisting

    + option in /etc/shorewall/interfaces. +
  • The black list is refreshed from /etc/shorewall/blacklist by the "shorewall + refresh" command.
  • + +

    Dynamic Blacklisting

    Dynamic blacklisting support was added in version 1.3.2. Dynamic blacklisting doesn't use any configuration parameters but is rather controlled using /sbin/shorewall commands:

    -
    - - - - - -
    bulletdeny <ip address list> - causes packets from the listed IP - addresses to be silently dropped by the firewall.
    bulletreject <ip address list> - causes packets from the listed IP - addresses to be rejected by the firewall.
    bulletallow <ip address list> - re-enables receipt of packets from hosts - previously blacklisted by a deny or reject command.
    bulletsave - save the dynamic blacklisting configuration so that it will be - automatically restored the next time that the firewall is restarted.
    bulletshow dynamic - displays the dynamic blacklisting configuration.
    +
      +
    • deny <ip address list> - causes packets from the listed IP + addresses to be silently dropped by the firewall.
    • +
    • reject <ip address list> - causes packets from the listed IP + addresses to be rejected by the firewall.
    • +
    • allow <ip address list> - re-enables receipt of packets from hosts + previously blacklisted by a deny or reject command.
    • +
    • save - save the dynamic blacklisting configuration so that it will be + automatically restored the next time that the firewall is restarted.
    • +
    • show dynamic - displays the dynamic blacklisting configuration.
    • +

    Example 1:

    -
         shorewall deny 192.0.2.124 192.0.2.125
    +
         shorewall deny 192.0.2.124 192.0.2.125

        Drops packets from hosts 192.0.2.124 and 192.0.2.125

    Example 2:

    -
         shorewall allow 192.0.2.125
    +
         shorewall allow 192.0.2.125

        Reenables access from 192.0.2.125.

    Last updated 6/16/2002 - Tom Eastep

    @@ -57,6 +62,6 @@ Eastep

    Copyright © 2002 Thomas M. Eastep.

    -
    + \ No newline at end of file diff --git a/STABLE/documentation/configuration_file_basics.htm b/STABLE/documentation/configuration_file_basics.htm index d103c1eb8..7071256c0 100644 --- a/STABLE/documentation/configuration_file_basics.htm +++ b/STABLE/documentation/configuration_file_basics.htm @@ -6,55 +6,60 @@ Configuration File Basics - - + -

    Configuration Files

    + + + + +
    +

    Configuration Files

    +

    Warning: If you copy or edit your configuration files on a system running Microsoft Windows, you must run them through dos2unix before you use them with Shorewall.

    -

    Files

    +

    Files

    Shorewall's configuration files are in the directory /etc/shorewall.

    -
    - - - - - - - - - - - - - - - - -
    bullet/etc/shorewall/shorewall.conf - used to set several firewall - parameters.
    bullet/etc/shorewall/params - use this file to set shell variables that you will - expand in other files.
    bullet/etc/shorewall/zones - partition the firewall's view of the world - into zones.
    bullet/etc/shorewall/policy - establishes firewall high-level policy.
    bullet/etc/shorewall/interfaces - describes the interfaces on the - firewall system.
    bullet/etc/shorewall/hosts - allows defining zones in terms of individual - hosts and subnetworks.
    bullet/etc/shorewall/masq - directs the firewall where to use many-to-one +
      +
    • /etc/shorewall/shorewall.conf - used to set several firewall + parameters.
    • +
    • /etc/shorewall/params - use this file to set shell variables that you will + expand in other files.
    • +
    • /etc/shorewall/zones - partition the firewall's view of the world + into zones.
    • +
    • /etc/shorewall/policy - establishes firewall high-level policy.
    • +
    • /etc/shorewall/interfaces - describes the interfaces on the + firewall system.
    • +
    • /etc/shorewall/hosts - allows defining zones in terms of individual + hosts and subnetworks.
    • +
    • /etc/shorewall/masq - directs the firewall where to use many-to-one (dynamic) Network Address Translation (a.k.a. Masquerading) and Source - Network Address Translation (SNAT).
    bullet/etc/shorewall/modules - directs the firewall to load kernel modules.
    bullet/etc/shorewall/rules - defines rules that are exceptions to the - overall policies established in /etc/shorewall/policy.
    bullet/etc/shorewall/nat - defines static NAT rules.
    bullet/etc/shorewall/proxyarp - defines use of Proxy ARP.
    bullet/etc/shorewall/routestopped (Shorewall 1.3.4 and later) - defines hosts - accessible when Shorewall is stopped.
    bullet/etc/shorewall/tcrules - defines marking of packets for later use by - traffic control/shaping or policy routing.
    bullet/etc/shorewall/tos - defines rules for setting the TOS field in packet - headers.
    bullet/etc/shorewall/tunnels - defines IPSEC, GRE and IPIP tunnels with end-points on - the firewall system.
    bullet/etc/shorewall/blacklist - lists blacklisted IP/subnet/MAC addresses.
    -

    Comments

    + Network Address Translation (SNAT). +
  • /etc/shorewall/modules - directs the firewall to load kernel modules.
  • +
  • /etc/shorewall/rules - defines rules that are exceptions to the + overall policies established in /etc/shorewall/policy.
  • +
  • /etc/shorewall/nat - defines static NAT rules.
  • +
  • /etc/shorewall/proxyarp - defines use of Proxy ARP.
  • +
  • /etc/shorewall/routestopped (Shorewall 1.3.4 and later) - defines hosts + accessible when Shorewall is stopped.
  • +
  • /etc/shorewall/tcrules - defines marking of packets for later use by + traffic control/shaping or policy routing.
  • +
  • /etc/shorewall/tos - defines rules for setting the TOS field in packet + headers.
  • +
  • /etc/shorewall/tunnels - defines IPSEC, GRE and IPIP tunnels with end-points on + the firewall system.
  • +
  • /etc/shorewall/blacklist - lists blacklisted IP/subnet/MAC addresses.
  • + +

    Comments

    You may place comments in configuration files by making the first non-whitespace @@ -65,8 +70,8 @@

    Examples:

    -
    # This is a comment
    ACCEPT	net	fw	tcp	www	#This is an end-of-line comment
    -

    Line Continuation

    +
    # This is a comment
    ACCEPT	net	fw	tcp	www	#This is an end-of-line comment
    +

    Line Continuation

    You may continue lines in the configuration files using the usual backslash ("\") followed @@ -76,41 +81,41 @@

    Example:

    -
    ACCEPT	net	fw	tcp \
    -smtp,www,pop3,imap  #Services running on the firewall
    -

    Complementing an Address or Subnet

    +
    ACCEPT	net	fw	tcp \
    +smtp,www,pop3,imap  #Services running on the firewall
    +

    Complementing an Address or Subnet

    Where specifying an IP address, a subnet or an interface, you can precede the item with "!" to specify the complement of the item. For example, !192.168.1.4 means "any host but 192.168.1.4".

    -

    Comma-separated Lists

    +

    Comma-separated Lists

    Comma-separated lists are allowed in a number of contexts within the configuration files. A comma separated list:

    -
    - - - -
    bulletMust not have any embedded white space.
    +
      +
    • Must not have any embedded white space.
      Valid: routestopped,dhcp,norfc1918
      Invalid: routestopped,     dhcp,     - norfc1818
    bulletIf you use line continuation to break a comma-separated list, the + norfc1818 +
  • If you use line continuation to break a comma-separated list, the continuation line(s) must begin in column 1 (or there would be embedded - white space)
  • bulletEntries in a comma-separated list may appear in any order.
    + white space) +
  • Entries in a comma-separated list may appear in any order.
  • + -

    Port Numbers/Service Names

    +

    Port Numbers/Service Names

    Unless otherwise specified, when giving a port number you can use either an integer or a service name from /etc/services.

    -

    Port Ranges

    +

    Port Ranges

    If you need to specify a range of ports, the proper syntax is <low port number>:<high port number>.

    -

    Using Shell Variables

    +

    Using Shell Variables

    You may use the file /etc/shorewall/params file to set shell variables that you can then use in some of the other @@ -123,9 +128,9 @@ Shorewall programs

    Example:

    -

    NET_IF=eth0
    - NET_BCAST=130.252.100.255
    - NET_OPTIONS=noping,norfc1918

    +
    NET_IF=eth0
    +NET_BCAST=130.252.100.255
    +NET_OPTIONS=noping,norfc1918


    @@ -134,7 +139,7 @@ Shorewall programs

    -

    net $NET_IF $NET_BCAST $NET_OPTIONS

    +
    net $NET_IF $NET_BCAST $NET_OPTIONS
    @@ -144,7 +149,7 @@ Shorewall programs

    -

    net eth0 130.252.100.255 noping,norfc1918

    +
    net eth0 130.252.100.255 noping,norfc1918
    @@ -152,7 +157,7 @@ Shorewall programs

    Variables may be used anywhere in the other configuration files.

    -

    Using MAC Addresses

    +

    Using MAC Addresses

    Media Access Control (MAC) addresses can be used to specify packet source in several of the @@ -184,7 +189,7 @@ Shorewall programs

    hyphens. In Shorewall, the MAC address in the example above would be written "~02-00-08-E3-FA-55".

    -

    Shorewall Configurations

    +

    Shorewall Configurations

    Shorewall allows you to have configuration directories other than /etc/shorewall. The shorewall start @@ -223,6 +228,6 @@ Eastep - + \ No newline at end of file diff --git a/STABLE/documentation/copyright.htm b/STABLE/documentation/copyright.htm index bb00660e8..b4af82bdd 100644 --- a/STABLE/documentation/copyright.htm +++ b/STABLE/documentation/copyright.htm @@ -6,12 +6,17 @@ Copyright - - + -

    Copyright

    + + + + +
    +

    Copyright

    +

    Copyright ©  2000, 2001 Thomas M Eastep
     

    @@ -24,6 +29,6 @@ Thomas M Eastep
     

    -
    + \ No newline at end of file diff --git a/STABLE/documentation/dhcp.htm b/STABLE/documentation/dhcp.htm index 928262e97..c66b6fe65 100644 --- a/STABLE/documentation/dhcp.htm +++ b/STABLE/documentation/dhcp.htm @@ -6,50 +6,55 @@ DHCP - - + -

    DHCP

    -

    DHCP Server on your firewall

    -
    - - -
    bullet + + + + +
    +

    DHCP

    +
    +

    DHCP Server on your firewall

    +
    bullet + file. +
  • When starting "dhcpd", you need to list those interfaces on the run line. On a RedHat system, this is done by modifying - /etc/sysconfig/dhcpd.

  • -

    A Firewall Interface gets its IP Address via DHCP

    -
    - - - - -
    bullet + /etc/sysconfig/dhcpd. + +

    A Firewall Interface gets its IP Address via DHCP

    +
    bullet + file. +
  • If you know that the dynamic address is always going to be in the same subnet, you can specify the subnet address in the interface's entry in the /etc/shorewall/interfaces - file.

  • bullet + file. +
  • If you don't know the subnet address in advance, you should specify "detect" for the interface's subnet address in the /etc/shorewall/interfaces - file and start Shorewall after the interface has started.

  • bullet + file and start Shorewall after the interface has started. +
  • In the event that the subnet address might change while Shorewall is started, you need to arrange for a "shorewall refresh" command to be executed when a new dynamic IP address gets - assigned to the interface. Check your DHCP client's documentation.

  • + assigned to the interface. Check your DHCP client's documentation. +

    Last updated 1/26/2002 - Tom Eastep

    Copyright © 2001, 2002 Thomas M. Eastep.

    -
    + \ No newline at end of file diff --git a/STABLE/documentation/download.htm b/STABLE/documentation/download.htm index 72bffc4d3..73418d31b 100644 --- a/STABLE/documentation/download.htm +++ b/STABLE/documentation/download.htm @@ -6,12 +6,17 @@ Download - - + -

    Shorewall Download

    + + + + +
    +

    Shorewall Download

    +

    I strongly urge you to read and print a copy of the Shorewall QuickStart Guide @@ -19,8 +24,8 @@

    Once you've done that, download one of the modules:

    -
    - - - - -
    bulletIf you run a RedHat, SuSE, Mandrake, Linux PPC or +
      +
    • If you run a RedHat, SuSE, Mandrake, Linux PPC or TurboLinux distribution with a 2.4 kernel, you can use the RPM version (note: the RPM should also work with other distributions that store @@ -29,29 +34,29 @@ If you find that it works in other cases, let Installation Instructions if you have problems - installing the RPM.
    bulletIf you are running LRP, download the .lrp file (you might also want to - download the .tgz so you will have a copy of the documentation).
    bulletIf you run Debian and would + installing the RPM. +
  • If you are running LRP, download the .lrp file (you might also want to + download the .tgz so you will have a copy of the documentation).
  • +
  • If you run Debian and would like a .deb package, Shorewall is in both the Debian Testing Branch and the Debian - Unstable Branch.
  • bulletOtherwise, download the shorewall module (.tgz)
    + Unstable Branch. +
  • Otherwise, download the shorewall module (.tgz)
  • +

    The documentation in HTML format is included in the .tgz and .rpm files and there is an documentation .deb that also contains the documentation.

    Please verify the version that you have downloaded -- during the release of a new version of Shorewall, the links below may point to a newer or an older version than is shown below.

    -
    - - - -
    bulletRPM - "rpm -qip LATEST.rpm"
    bulletTARBALL - "tar -ztf LATEST.tgz" (the directory - name will contain the version)
    bulletLRP - "mkdir Shorewall.lrp; cd Shorewall.lrp; tar - -zxf <downloaded .lrp>; cat var/lib/lrpkg/shorwall.version"
    +
      +
    • RPM - "rpm -qip LATEST.rpm"
    • +
    • TARBALL - "tar -ztf LATEST.tgz" (the directory + name will contain the version)
    • +
    • LRP - "mkdir Shorewall.lrp; cd Shorewall.lrp; tar + -zxf <downloaded .lrp>; cat var/lib/lrpkg/shorwall.version"
    • +

    Once you have verified the version, check the errata to see if there are updates that apply to the version that you have @@ -61,145 +66,145 @@ AND ISSUE A "shorewall start" COMMAND. SOME CONFIGURATION IS REQUIRED FIREWALL WILL START. IF YOU ISSUE A "start" COMMAND AND THE FIREWALL FAILS TO START, YOUR SYSTEM WILL NO LONGER ACCEPT ANY NETWORK TRAFFIC. IF THIS HAPPENS, ISSUE A "shorewall clear" COMMAND TO RESTORE NETWORK CONNECTIVITY.

    -

    Download Latest Version (1.3.6): Remember that updates to the mirrors +

    Download Latest Version (1.3.7): Remember that updates to the mirrors occur 1-12 hours after an update to the primary site.

    - +
    - - - - + + + + - - - + + - + + .lrp - - - + + - + + .rpm - - - + + - + + .rpm - - - + + - + + .lrp - - - + + - + + Download .lrp -
    SERVER LOCATIONDOMAINHTTPFTPSERVER LOCATIONDOMAINHTTPFTP
    Washington State, USAShorewall.netDownload .rpm
    +
    Washington State, USAShorewall.netDownload .rpm
    Download .tgz 
    Download - .lrp
    + .lrp Download .rpm 
    Download .tgz 
    Download - .lrp
    Slovak RepublicShorewall.netDownload .rpm
    +
    Slovak RepublicShorewall.netDownload .rpm
    Download .tgz 
    Download - .lrp
    + .lrp Download .rpm  
    Download .tgz 
    Download - .rpm
    Texas, USAInfohiiway.comDownload .rpm
    +
    Texas, USAInfohiiway.comDownload .rpm
    Download .tgz 
    Download - .lrp
    + .lrp Download .rpm  
    Download .tgz 
    Download - .rpm
    Hamburg, GermanyShorewall.net + Hamburg, GermanyShorewall.net Download .rpm
    Download .tgz
    Download - .lrp
    + .lrp Download .rpm  
    Download .tgz 
    Download - .lrp
    Martinez (Zona Norte - GBA), ArgentinaCorreofuego.com.ar + Martinez (Zona Norte - GBA), ArgentinaCorreofuego.com.ar Download .rpm  
    Download .tgz 
    - Download .lrp
    + Download .lrp Download .rpm  
    Download .tgz 
    - Download .lrp
    +

    Browse Download Sites:

    - +
    - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + Browse - - - - + + + + -
    SERVER LOCATIONDOMAINHTTPFTPSERVER LOCATIONDOMAINHTTPFTP
    Washington State, USAShorewall.netBrowseBrowseWashington State, USAShorewall.netBrowseBrowse
    Slovak RepublicShorewall.netBrowse - BrowseSlovak RepublicShorewall.netBrowse + Browse
    Texas, USAInfohiiway.comBrowseBrowseTexas, USAInfohiiway.comBrowseBrowse
    Hamburg, GermanyShorewall.netBrowseBrowseHamburg, GermanyShorewall.netBrowseBrowse
    Martinez (Zona Norte - GBA), ArgentinaCorreofuego.com.arBrowse + Martinez (Zona Norte - GBA), ArgentinaCorreofuego.com.arBrowse - Browse
    California, USA (Incomplete)Sourceforge.netBrowseN/ACalifornia, USA (Incomplete)Sourceforge.netBrowseN/A
    +

    CVS:

    @@ -211,12 +216,12 @@ Shorewall component. There's no guarantee that what you find there will work at all.

    -

    Last Updated 8/05/2002 - Tom +

    Last Updated 8/22/2002 - Tom Eastep

    Copyright © 2001, 2002 Thomas M. Eastep.

    -
    + \ No newline at end of file diff --git a/STABLE/documentation/errata.htm b/STABLE/documentation/errata.htm index 40eaa27dc..6adf735d5 100644 --- a/STABLE/documentation/errata.htm +++ b/STABLE/documentation/errata.htm @@ -10,15 +10,19 @@ - + - -

    Shorewall Errata

    + + + + + +
    +

    Shorewall Errata/Upgrade Issues

    +

    - - - IMPORTANT

    + IMPORTANT

    1. @@ -58,36 +62,111 @@ dos2unix
    -

    - -         

    - -
    - - - - - - -
    bullet +
    bullet + Problems in Version 1.1 +
  • - Problems in Version 1.2
  • bullet + Problems in Version 1.2 +
  • - Problems in Version 1.3
  • bullet + Problems in Version 1.3 +
  • - Problem with iptables version 1.2.3
  • bullet + Problem with iptables version 1.2.3 on RH7.2 +
  • - Problems with kernel 2.4.18 and - RedHat iptables
  • bulletProblems installing/upgrading RPM on SuSE SMP
    -

    + Problems with kernels >= 2.4.18 and + RedHat iptables +
  • Problems installing/upgrading RPM on SuSE
  • +
  • Problems with iptables version 1.2.7 and + MULTIPORT=Yes
  • + +
    -

    Problems in Version 1.3

    +

    Upgrade Issues

    -

    Versions >= 1.3.5

    +

    Version >= 1.3.7

    + +

    Users specifying ALLOWRELATED=No in + /etc/shorewall.conf will need to include the + following rules in their /etc/shorewall/icmpdef + file (creating this file if necessary):

    + +
    	run_iptables -A icmpdef -p ICMP --icmp-type echo-reply -j ACCEPT
    +	run_iptables -A icmpdef -p ICMP --icmp-type source-quench -j ACCEPT
    +	run_iptables -A icmpdef -p ICMP --icmp-type destination-unreachable -j ACCEPT
    +	run_iptables -A icmpdef -p ICMP --icmp-type time-exceeded -j ACCEPT
    +	run_iptables -A icmpdef -p ICMP --icmp-type parameter-problem -j ACCEPT
    +

    Users having an /etc/shorewall/icmpdef file may remove the ". + /etc/shorewall/icmp.def" command from that file since the icmp.def file is now + empty.

    +

    Upgrading Bering to + Shorewall >= 1.3.3

    + +

    To properly upgrade with Shorewall version + 1.3.3 and later:

    + +
      +
    1. Be sure you have a backup -- you will need + to transcribe any Shorewall configuration + changes that you have made to the new + configuration.
    2. +
    3. Replace the shorwall.lrp package provided on + the Bering floppy with the later one. If you did + not obtain the later version from Jacques's + site, see additional instructions below.
    4. +
    5. Edit the /var/lib/lrpkg/root.exclude.list + file and remove the /var/lib/shorewall entry if + present. Then do not forget to backup root.lrp !
    6. +
    +

    The .lrp that I release isn't set up for a two-interface firewall like + Jacques's. You need to follow the instructions for + setting up a two-interface firewall plus you also need to add the following + two Bering-specific rules to /etc/shorewall/rules:

    +
    +
    # Bering specific rules:
    +# allow loc to fw udp/53 for dnscache to work
    +# allow loc to fw tcp/80 for weblet to work
    +#
    +ACCEPT loc fw udp 53
    +ACCEPT loc fw tcp 80
    +
    + +

    Version >= 1.3.6

    + +

    If you have a pair of firewall systems configured for + failover, you will need to modify your firewall setup slightly under + Shorewall versions >= 1.3.6.

    + +
      +
    1. + +

      Create the file /etc/shorewall/newnotsyn and in it add + the following rule
      +
      + run_iptables -A newnotsyn -j RETURN # So that the + connection tracking table can be rebuilt
      +                                    + # from non-SYN packets after takeover.

    2. +
    3. + +

      Create /etc/shorewall/common (if you don't already + have that file) and include the following:
      +
      + run_iptables -A common -p tcp --tcp-flags + ACK,FIN,RST ACK -j ACCEPT #Accept Acks to rebuild connection
      +                                                                    + #tracking table.
      + . /etc/shorewall/common.def

    4. +
    + +

    Versions >= 1.3.5

    Some forms of pre-1.3.0 rules file syntax are no longer supported.

    @@ -95,26 +174,60 @@ dos2unix

    Example 1:

    -
    	ACCEPT    net    loc:192.168.1.12:22    tcp    11111    -    all
    +
    	ACCEPT    net    loc:192.168.1.12:22    tcp    11111    -    all

    Must be replaced with:

    -
    	DNAT	net	loc:192.168.1.12:22	tcp	11111
    +
    	DNAT	net	loc:192.168.1.12:22	tcp	11111

    Example 2:

    -
    	ACCEPT	loc	fw::3128	tcp	80	-	all
    +
    	ACCEPT	loc	fw::3128	tcp	80	-	all

    Must be replaced with:

    -
    	REDIRECT	loc	3128	tcp	80
    +
    	REDIRECT	loc	3128	tcp	80
    -

    Version 1.3.5-1.3.5b

    +

    Problems in Version 1.3

    + +

    Version 1.3.6

    + +
      +
    • + +

      If ADD_SNAT_ALIASES=Yes is specified in + /etc/shorewall/shorewall.conf, an error occurs when the firewall + script attempts to add an SNAT alias.

    • +
    • + +

      The logunclean and dropunclean options + cause errors during startup when Shorewall is run with iptables 1.2.7.

    • +
    + +

    These problems are fixed in + + this correct firewall script which must be installed in + /var/lib/shorewall/ as described above. These problems are also + corrected in version 1.3.7.

    + +

    Two-interface Samples 1.3.6 (file two-interfaces.tgz)

    + +

    A line was inadvertently deleted from the "interfaces + file" -- this line should be added back in if the version that you + downloaded is missing it:

    + +

    net    eth0    detect    + routefilter,dhcp,norfc1918

    + +

    If you downloaded two-interfaces-a.tgz then the above + line should already be in the file.

    + +

    Version 1.3.5-1.3.5b

    The new 'proxyarp' interface option doesn't work :-( This is fixed in @@ -122,13 +235,13 @@ dos2unix this corrected firewall script which must be installed in /var/lib/shorewall/ as described above.

    -

    Versions 1.3.4-1.3.5a

    +

    Versions 1.3.4-1.3.5a

    Prior to version 1.3.4, host file entries such as the following were allowed:

    -
    	adm	eth0:1.2.4.5,eth0:5.6.7.8
    +
    	adm	eth0:1.2.4.5,eth0:5.6.7.8

    That capability was lost in version 1.3.4 so that it is only @@ -141,14 +254,14 @@ dos2unix

    This problem is corrected in version 1.3.5b.

    -

    Version 1.3.5

    +

    Version 1.3.5

    REDIRECT rules are broken in this version. Install this corrected firewall script in /var/lib/pub/shorewall/firewall as instructed above. This problem is corrected in version 1.3.5a.

    -

    Version 1.3.n, n < 4

    +

    Version 1.3.n, n < 4

    The "shorewall start" and "shorewall restart" commands to not verify that the zones named in the /etc/shorewall/policy file @@ -157,7 +270,7 @@ dos2unix good idea to run that command after you have made configuration changes.

    -

    Version 1.3.n, n < 3

    +

    Version 1.3.n, n < 3

    If you have upgraded from Shorewall 1.2 and after "Activating rules..." you see the message: "iptables: No @@ -167,82 +280,82 @@ dos2unix must add an entry to /etc/shorewall/interfaces. Shorewall 1.3.3 and later versions produce a clearer error message in this case.

    -

    Version 1.3.2

    +

    Version 1.3.2

    Until approximately 2130 GMT on 17 June 2002, the download sites contained an incorrect version of the .lrp file. That file can be identified by its size (56284 bytes). The correct version has a size of 38126 bytes.

    -
    - - -
    bulletThe code to detect a duplicate interface entry in +
      +
    • The code to detect a duplicate interface entry in /etc/shorewall/interfaces contained a typo that prevented it from - working correctly.
    bullet"NAT_BEFORE_RULES=No" was broken; it behaved just like "NAT_BEFORE_RULES=Yes".
    + working correctly. +
  • "NAT_BEFORE_RULES=No" was broken; it behaved just like "NAT_BEFORE_RULES=Yes".
  • +

    Both problems are corrected in this script which should be installed in /var/lib/shorewall as described above.

    -
    - -
    bullet +
      +
    • The IANA have just announced the allocation of subnet 221.0.0.0/8. This updated rfc1918 file reflects that allocation.

      -
    + + -

    Version 1.3.1

    +

    Version 1.3.1

    -
    - - - - -
    bulletTCP SYN packets may be double counted when +
      +
    • TCP SYN packets may be double counted when LIMIT:BURST is included in a CONTINUE or ACCEPT policy (i.e., each - packet is sent through the limit chain twice).
    bulletAn unnecessary jump to the policy chain is sometimes - generated for a CONTINUE policy.
    bulletWhen an option is given for more than one interface in + packet is sent through the limit chain twice). +
  • An unnecessary jump to the policy chain is sometimes + generated for a CONTINUE policy.
  • +
  • When an option is given for more than one interface in /etc/shorewall/interfaces then depending on the option, Shorewall may ignore all but the first appearence of the option. For example:

    net    eth0    dhcp
    loc    eth1    dhcp

    - Shorewall will ignore the 'dhcp' on eth1.
  • bulletUpdate 17 June 2002 - The bug described in the prior bullet + Shorewall will ignore the 'dhcp' on eth1. +
  • Update 17 June 2002 - The bug described in the prior bullet affects the following options: dhcp, dropunclean, logunclean, norfc1918, routefilter, multi, filterping and noping. An additional bug has been found that affects only the 'routestopped' option.

    Users who downloaded the corrected script prior to 1850 GMT today should download and install the corrected script again to ensure - that this second problem is corrected.
  • + that this second problem is corrected. +

    These problems are corrected in this firewall script which should be installed in /etc/shorewall/firewall as described above.

    -

    Version 1.3.0

    +

    Version 1.3.0

    -
    - - -
    bulletFolks who downloaded 1.3.0 from the links on the download page +
      +
    • Folks who downloaded 1.3.0 from the links on the download page before 23:40 GMT, 29 May 2002 may have downloaded 1.2.13 rather than 1.3.0. The "shorewall version" command will tell you which version - that you have installed.
    bulletThe documentation NAT.htm file uses non-existent + that you have installed. +
  • The documentation NAT.htm file uses non-existent wallpaper and bullet graphic files. The - corrected version is here.
  • -

    + corrected version is here. + +
    -

    - Problem with iptables version 1.2.3

    +

    + Problem with iptables version 1.2.3

    @@ -257,9 +370,9 @@ RedHat released this buggy iptables in RedHat 7.2. 

    you are currently running RedHat 7.1, you can install either of these RPMs before you upgrade to RedHat 7.2.

    -

    Update +

    Update 11/9/2001: RedHat has - released an iptables-1.2.4 RPM of their own which you can download from + released an iptables-1.2.4 RPM of their own which you can download from http://www.redhat.com/support/errata/RHSA-2001-144.html. I have installed this RPM on my firewall and it works fine.

    @@ -272,20 +385,20 @@ you are currently running RedHat 7.1, you can install either of these RPMs corrects a problem in handling the  TOS target.

    To install one of the above patches:

    -
    - - -
    bulletcd iptables-1.2.3/extensions
    bulletpatch -p0 < the-patch-file
    +
      +
    • cd iptables-1.2.3/extensions
    • +
    • patch -p0 < the-patch-file
    • +
    -

    Problems with kernel 2.4.18 - and RedHat iptables

    +

    Problems with kernels >= 2.4.18 + and RedHat iptables

    -

    Users who use RedHat iptables RPMs and who upgrade to kernel 2.4.18 may +

    Users who use RedHat iptables RPMs and who upgrade to kernel 2.4.18/19 may experience the following:

    -
    # shorewall start
    +     
    # shorewall start
     Processing /etc/shorewall/shorewall.conf ...
     Processing /etc/shorewall/params ...
     Starting Shorewall...
    @@ -303,7 +416,7 @@ Aborted (core dumped)
     iptables: libiptc/libip4tc.c:380: do_check: Assertion
     `h->info.valid_hooks == (1 << 0 | 1 << 3)' failed.
     Aborted (core dumped)
    -
    +

    The RedHat iptables RPM is compiled with debugging enabled but the user-space debugging code was not updated to reflect recent changes in the @@ -314,8 +427,8 @@ Aborted (core dumped) "iptables -Uvh --oldpackage iptables-1.2.5-1.i386.rpm").

    -

    Problems - installing/upgrading RPM on SuSE SMP

    +

    Problems + installing/upgrading RPM on SuSE

    If you find that rpm complains about a conflict with kernel <= 2.2 yet you have a 2.4 kernel @@ -326,13 +439,29 @@ Aborted (core dumped)

    Upgrading: rpm -Uvh <shorewall rpm>

    -

    - Last updated 8/4/2002 - - Tom Eastep -

    +

    Problems with + iptables version 1.2.7 and MULTIPORT=Yes

    + +

    The iptables 1.2.7 release of iptables has made + an incompatible change to the syntax used to + specify multiport match rules; as a consequence, + if you install iptables 1.2.7 you must

    + +
      +
    • set MULTIPORT=No in + /etc/shorewall/shorewall.conf; or
    • +
    • if you are running Shorewall 1.3.6 you may + install + + this firewall script in /var/lib/shorewall/firewall + as described above.
    • +
    +

    + Last updated 8/22/2002 - + Tom Eastep

    Copyright © 2001, 2002 Thomas M. Eastep.

    -
    + \ No newline at end of file diff --git a/STABLE/documentation/errata_1.htm b/STABLE/documentation/errata_1.htm index 374972241..b64dc819a 100644 --- a/STABLE/documentation/errata_1.htm +++ b/STABLE/documentation/errata_1.htm @@ -6,15 +6,20 @@ Shorewall Errata for Version 1 - - + -

    Shorewall Errata for Version 1.1

    + + + + +
    +

    Shorewall Errata for Version 1.1

    +
    -

    To those of you who downloaded the 1.1.13 updated firewall script prior -to Sept 20, 2001:

    +

    To those of you who downloaded the 1.1.13 updated firewall script prior +to Sept 20, 2001:

    @@ -24,7 +29,7 @@ of the firewall script. This has now been corrected. I apologize for any confusi this may have caused.

    -

    Version 1.1.18

    +

    Version 1.1.18

    @@ -34,8 +39,8 @@ this may have caused.

    -

    - Version 1.1.17

    +

    + Version 1.1.17

    @@ -47,8 +52,8 @@ this may have caused.

    problem is also corrected in version 1.1.18.

    -

    - Version 1.1.16

    +

    + Version 1.1.16

    @@ -61,16 +66,16 @@ in the firewall script. To correct this problem, install the - Version 1.1.14-1.1.15 +

    + Version 1.1.14-1.1.15

    There are no corrections for these versions.

    -

    - Version 1.1.13

    +

    + Version 1.1.13

    @@ -85,8 +90,8 @@ in the firewall script. To correct this problem, install the - Version 1.1.12 +

    + Version 1.1.12

    @@ -103,16 +108,16 @@ file. This incorrect file results in many error messages of the form:

    . This problem is also corrected in version 1.1.13.

    -

    - Version 1.1.11

    +

    + Version 1.1.11

    There are no known problems with this version.

    -

    - Version 1.1.10

    +

    + Version 1.1.10

    @@ -148,24 +153,24 @@ Install the script into the location pointed to by the symbolic link This problem has also been corrected in version 1.1.11.

    -

    - Version 1.1.9

    +

    + Version 1.1.9

    -
    - -
    bulletThe shorewall "hits" command lists extraneous service names in the final +
    + + -

    Version 1.1.8

    +

    Version 1.1.8

    -
    - -
    bulletUnder some circumstances, the "dhcp" option on an interface triggers +
      +
    • Under some circumstances, the "dhcp" option on an interface triggers a bug in the firewall script that results in a "chain already exists" error. This version of the firewall script @@ -175,22 +180,22 @@ the symbolic link /etc/shorewall/firewall.
      This problem is also corrected in version 1.1.9.
      -
    + + -

    Version 1.1.7

    +

    Version 1.1.7

    -
    - -
    bulletIf the /etc/shorewall/rules template from version 1.1.7 is used, a warning +
      +
    • If the /etc/shorewall/rules template from version 1.1.7 is used, a warning message appears during firewall startup:

          Warning: Invalid Target - rule "@ icmp-unreachable packet." ignored

      This warning may be eliminated by replacing the "@" in column 1 of - line 17 with "#"
    + line 17 with "#" +

    @@ -205,6 +210,6 @@ ignored

    Copyright © 2001, 2002 Thomas M. Eastep.

    -
    + \ No newline at end of file diff --git a/STABLE/documentation/errata_2.htm b/STABLE/documentation/errata_2.htm new file mode 100644 index 000000000..29250ef7d --- /dev/null +++ b/STABLE/documentation/errata_2.htm @@ -0,0 +1,439 @@ + + + + + + Shorewall 1.2 Errata + + + + + + + + + + + + +
    +

    Shorewall 1.2 Errata

    +
    + +

    + + + IMPORTANT

    + +

    + + If you use a Windows system to download a corrected script, be sure to +run the script through +dos2unix + after you have moved it to your Linux system.

    + +

    + + When the instructions say to install a corrected firewall script in + /etc/shorewall/firewall, use the 'cp' (or 'scp') utility to overwrite the + existing file. DO NOT REMOVE OR RENAME THE OLD /etc/shorewall/firewall + before you do that. /etc/shorewall/firewall is a symbolic link that points + to the 'shorewall' file used by your system initialization scripts to + start Shorewall during boot and it is that file that must be overwritten + with the corrected script.

    + + +
    + +

    Problems in Version 1.2

    + +

    Version 1.2.13

    + +
      +
    • + +

      Some users have reported problems installing the RPM + on SuSE 7.3 where rpm reports a conflict with kernel <= 2.2 even + though a 2.4 kernel RPM is installed. To get around this problem, use + the --nodeps option to rpm (e.g., "rpm -ivh --nodeps + shorewall-1.2-13.noarch.rpm").
      +
      + The problem stems from the fact that SuSE does not + include a package named "kernel" but rather has a number of packages + that provide the virtual package "kernel". Since virtual packages have + no version associated with them, a conflict results. Since the + workaround is simple, I don't intend to change the Shorewall package.

      + +
    • +
    • + +

      Shorewall accepts invalid rules of the form:
      +
      + ACCEPT <src> <dest>:<ip addr> all <port number> - + <original ip address>
      +
      +
      The <port number> is ignored with the result that all + connection requests from the <src> zone whose original destination IP + address matches the last column are forwarded to the <dest> zone, IP + address <ip addr>.  + + This corrected firewall script correctly generates an error when + such a rule is encountered.

      + +
    • +
    + +

    Version 1.2.11

    + +
      +
    • + +

      The 'try' command is broken.

    • +
    • + +

      The usage text printed by the shorewall utility + doesn't show the optional timeout for the 'try' command.

    • +
    + +

    Both problems are corrected by + + this new version of /sbin/shorewall.

    + +

    Sample Configurations:

    + +
      +
    • + +

      There have been several problems with SSH, DNS and + ping in the two- and three-interface examples. Before reporting + problems with these services, please verify that you have the latest + version of the appropriate sample 'rules' file.

    • +
    + +

    All Versions through 1.2.10

    + + +
    +
    + + + + + + + + + + + + + + + + +
    ZONEHOST(S)OPTIONS
    loceth2:192.168.1.0/24routestopped
    locppp+:192.168.1.0/24 
    +
    +
    + +

    All Versions through 1.2.8

    + +
      +
    • + +

      The shorewall.conf file and the documentation + incorrectly refer to a parameter in /etc/shorewall/shorewall.conf + called LOCKFILE; the correct name for the parameter is SUBSYSLOCK (see + the corrected online documentation). Users of the rpm should + change the name (and possibly the value) of this parameter so that + Shorewall interacts properly with the SysV init scripts. The + documentation on this web site has been corrected and + + here's a corrected version of shorewall.conf.

      + +
    • +
    • + +

      The documentation indicates that a comma-separated + list of IP/subnet addresses may appear in an entry in the hosts file. + This is not the case; if you want to specify multiple addresses for a + zone, you need to have a separate entry for each address.

      + +
    • +
    + +

    Version 1.2.7

    + +

    Version 1.2.7 is quite broken -- please install 1.2.8

    + +

    If you have installed and started version 1.2.7 then before trying + to restart under 1.2.8:

    +
      +
    1. Look at your /etc/shorewall/shorewall.conf file and note the directory + named in the STATEDIR variable. If that variable is empty, assume + /var/state/shorewall.
    2. +
    3. Remove the file 'lock' in the directory determined in step 1.
    4. +
    +

    You may now restart using 1.2.8.

    + +

    Version 1.2.6

    + +
      +
    • + +

      GRE and IPIP tunnels are broken.

    • +
    • + +

      The following rule results in a start error:
      +
      +    ACCEPT    z1    z2    + icmp

    • +
    + +

    To correct the above problems, install + this + corrected firewall script in  /etc/shorewall/firewall..

    Version 1.2.5

    + +
      +
    • + +

      The new ADDRESS column in /etc/shorewall/masq cannot + contain a $-variable name.

    • +
    • + +

      Errors result if $FW appears in the + /etc/shorewall/policy file.

    • +
    • + +

      Using Blacklisting without setting BLACKLIST_LOGLEVEL + results in an error at start time.

    • +
    + +

    To correct the above problems, install + this + corrected firewall script in /etc/shorewall/firewall.

     

    + +

    Version 1.2.4

    + +
      +
    • This version will not install "out of the box" without + modification. Before attempting to start the + firewall, please change the STATEDIR in /etc/shorewall/shorewall.conf to + refer to /var/lib/shorewall. This only applies to fresh installations -- if + you are upgrading from a previous version of Shorewall, version 1.2.4 will + work without modification.

    • +
    + +

    Version 1.2.3

    + + +
    + +

    Alternatively, edit /etc/shorewall/firewall and change line 1564 from:

    + +
    +
              run_iptables -A blacklst -d $addr -j LOG $LOGPARAMS --log-prefix \
    +
    + +

    to

    + +
    +
              run_iptables -A blacklst -s $addr -j LOG $LOGPARAMS --log-prefix \
    + +

    Version 1.2.2

    + +
      +
    • The "shorewall status" command hangs after + it displays the chain information. Here's + a corrected /sbin/shorewall. if  you want to simply modify your copy of + /sbin/shorewall, then at line 445 change this:
    • +
    + +
    + +
           status)
    +           clear
    + +
    +
    + +

    to this:

    + +
    +
    + +
           status)
    +           get_config
    +           clear
    + +
    +
      +
    • The "shorewall monitor" command + doesn't show the icmpdef chain - this + corrected /sbin/shorewall fixes that problem as well as the status + problem described above.
    • +
    +
      +
    • In all 1.2.x versions, the 'CLIENT PORT(S)' + column in /etc/shorewall/tcrules is ignored. This is corrected in this + updated firewall script.  Place the script in /etc/shorewall/firewall. Thanks to Shingo Takeda for + spotting this bug.
    • +
    + +

    Version 1.2.1

    + +
      +
    • The new logunclean interface option is not + described in the help text in /etc/shorewall/interfaces. An updated + interfaces file is available.
    • +
    • When REJECT is specified in a TCP rule, Shorewall + correctly replies with a TCP RST packet. Previous versions of the + firewall script are broken in the case of a REJECT policy, however; in + REJECT policy chains, all requests are currently replied to with an + ICMP port-unreachable packet. This + corrected firewall script replies to TCP requests with TCP RST in + REJECT policy chains. Place the script in /etc/shorewall/firewall.
    • +
    + +

    Version 1.2.0

    + +
    + +

    Note: If you are upgrading from one of the Beta + RPMs to 1.2.0, you must use the "--oldpackage" option to rpm + (e.g., rpm -Uvh --oldpackage shorewall-1.2-0.noarch.rpm).

    + +

    The tunnel script released in version 1.2.0 contained + errors -- a corrected + script is available.

    + +
    + +
    + +

    + Problem with iptables version 1.2.3

    + +
    + +

    There are a couple of serious bugs in iptables 1.2.3 that + prevent it from working with Shorewall. Regrettably, +RedHat released this buggy iptables in RedHat 7.2. 

    + +

    I have built a + corrected 1.2.3 rpm which you can download here  and I have also built + an + iptables-1.2.4 rpm which you can download here. If +you are currently running RedHat 7.1, you can install either of these RPMs + before you upgrade to RedHat 7.2.

    + +

    Update + 11/9/2001: RedHat has + released an iptables-1.2.4 RPM of their own which you can download from + http://www.redhat.com/support/errata/RHSA-2001-144.html. + I have installed this RPM + on my firewall and it works fine.

    + +

    If you + would like to patch iptables 1.2.3 yourself, the patches are available + for download. This patch + which corrects a problem with parsing of the --log-level specification while + this patch + corrects a problem in handling the  TOS target.

    + +

    To install one of the above patches:

    +
      +
    • cd iptables-1.2.3/extensions
    • +
    • patch -p0 < the-patch-file
    • +
    + +
    + +

    Problems with kernel 2.4.18 + and RedHat iptables

    +
    +

    Users who use RedHat iptables RPMs and who upgrade to kernel 2.4.18 may + experience the following:

    +
    +
    # shorewall start
    +Processing /etc/shorewall/shorewall.conf ...
    +Processing /etc/shorewall/params ...
    +Starting Shorewall...
    +Loading Modules...
    +Initializing...
    +Determining Zones...
    +Zones: net
    +Validating interfaces file...
    +Validating hosts file...
    +Determining Hosts in Zones...
    +Net Zone: eth0:0.0.0.0/0
    +iptables: libiptc/libip4tc.c:380: do_check: Assertion
    +`h->info.valid_hooks == (1 << 0 | 1 << 3)' failed.
    +Aborted (core dumped)
    +iptables: libiptc/libip4tc.c:380: do_check: Assertion
    +`h->info.valid_hooks == (1 << 0 | 1 << 3)' failed.
    +Aborted (core dumped)
    +
    +
    +

    The RedHat iptables RPM is compiled with debugging enabled but the + user-space debugging code was not updated to reflect recent changes in the + Netfilter 'mangle' table. You can correct the problem by installing + + this iptables RPM. If you are already running a 1.2.5 version of + iptables, you will need to specify the --oldpackage option to rpm (e.g., + "iptables -Uvh --oldpackage iptables-1.2.5-1.i386.rpm").

    +
    + +

    + Last updated 5/24/2002 - + Tom Eastep +

    + +

    Copyright + © 2001, 2002 Thomas M. Eastep.

    + + + \ No newline at end of file diff --git a/STABLE/documentation/fallback.htm b/STABLE/documentation/fallback.htm index 6244a2a5e..b3219c5e1 100644 --- a/STABLE/documentation/fallback.htm +++ b/STABLE/documentation/fallback.htm @@ -5,40 +5,47 @@ Shorewall Fallback and Uninstall - - + -

    Fallback and Uninstall

    + + + + +
    + +

    Fallback and Uninstall

    + +

    Shorewall includes a fallback script and an uninstall script.

    -

    Falling Back to the Previous Version of Shorewall -using the Fallback Script

    +

    Falling Back to the Previous Version of Shorewall +using the Fallback Script

    If you install Shorewall and discover that it doesn't work for you, you can fall back to your previously installed version. To do that:

    -
    - - -
    bulletcd to the distribution directory for the version +
      +
    • cd to the distribution directory for the version of Seattle Firewall that you are currently running (NOT the version - that you want to fall back to).
    bulletType "./fallback.sh"
    + that you want to fall back to). +
  • Type "./fallback.sh"
  • + -

    Warning: The fallback script +

    Warning: The fallback script will replace /etc/shorewall/policy, /etc/shorewall/rules, /etc/shorewall/interfaces, /etc/shorewall/nat, /etc/shorewall/proxyarp and /etc/shorewall/masq with the version of these files from before the current version was installed. Any -changes to any of these files will be lost.

    +changes to any of these files will be lost.

    -

    Falling Back to the Previous Version of Shorewall using -rpm

    +

    Falling Back to the Previous Version of Shorewall using +rpm

    If your previous version of Shorewall was installed using RPM, you may fall back to that version by typing @@ -46,16 +53,16 @@ installed using RPM, you may fall back to that version by typing prompt (Example: "rpm -Uvh --force /downloads/shorewall-3.1=0noarch.rpm" would fall back to the 3.1-0 version of Shorewall).

    -

    Uninstalling Shorewall

    +

    Uninstalling Shorewall

    If you no longer wish to use Shorewall, you may remove it by:

    -
    - - -
    bulletcd to the distribution directory for the version - of Shorewall that you have installed.
    bullettype "./uninstall.sh"
    +
      +
    • cd to the distribution directory for the version + of Shorewall that you have installed.
    • +
    • type "./uninstall.sh"
    • +

    If you installed using an rpm, at a root shell prompt type "rpm -e shorewall".

    @@ -64,4 +71,4 @@ type "rpm -e shorewall".

    Tom Eastep

    Copyright2001, 2002 Thomas M. Eastep.
    \ No newline at end of file +© 2001, 2002 Thomas M. Eastep.
    \ No newline at end of file diff --git a/STABLE/documentation/gnu_mailman.htm b/STABLE/documentation/gnu_mailman.htm index a6ac24881..702ff74be 100644 --- a/STABLE/documentation/gnu_mailman.htm +++ b/STABLE/documentation/gnu_mailman.htm @@ -6,15 +6,22 @@ GNU Mailman - - + -

    GNU Mailman/Postfix
    -the Easy Way

    -

    The following was posted on the Postfix mailing list on 5/4/2002 by Michael -Tokarev as a suggested addition to the Postfix FAQ.

    + + + + +
    +

    GNU Mailman/Postfix +the Easy Way

    +
    + +

     

    +

    The following was posted on the Postfix mailing list on 5/4/2002 by Michael +Tokarev as a suggested addition to the Postfix FAQ.

    Q: Mailman does not work with Postfix, complaining about GID mismatch

    A: Mailman uses a setgid wrapper that is designed to be used in system-wide @@ -43,13 +50,13 @@ mailinglist: /var/mailman/scripts/post mailinglist
    mailinglist-admin: /var/mailman/scripts/mailowner mailinglist
    mailinglist-request: /var/mailman/scripts/mailcmd mailinglist
    ...

    -

    The Shorewall mailing lists are currently running Postfix 1.1.7 together -with the stock RedHat Mailman-2.0.8 RPM configured as shown above.

    +

    The Shorewall mailing lists are currently running Postfix 1.1.7 together +with the stock RedHat Mailman-2.0.8 RPM configured as shown above.

    Last updated 5/4/2002 - Tom Eastep

    Copyright © 2001, 2002 Thomas M. Eastep.

    -
    + \ No newline at end of file diff --git a/STABLE/documentation/images/DMZ.jpg b/STABLE/documentation/images/DMZ.jpg deleted file mode 100644 index 5dad01fd05a07390e40794297af18d9c3f6c6643..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22962 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 diff --git a/STABLE/documentation/images/DMZ2.jpg b/STABLE/documentation/images/DMZ2.jpg deleted file mode 100644 index 7e5917f28a32d576c794c5c15dbbf8d2de4339eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25994 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 P&G`Q&Ee;oF|9=wz-x}g_ diff --git a/STABLE/documentation/images/DMZ3.jpg b/STABLE/documentation/images/DMZ3.jpg deleted file mode 100644 index 05c7bbf1577c1a9042caec54ac3912c467c7ea00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22893 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 diff --git a/STABLE/documentation/images/DMZ4.JPG b/STABLE/documentation/images/DMZ4.JPG deleted file mode 100644 index 7054b0566f208de99c888d1fa550d2f8d4550038..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26127 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

    oX8&KZmP>w>YO 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 Uq)7&^$)QcOQU1V&3;+L{073LU6951J diff --git a/STABLE/documentation/images/DMZ5.JPG b/STABLE/documentation/images/DMZ5.JPG deleted file mode 100644 index 384247221b03eebf60df39d24c455aa9251e19a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26088 zcmd431z1(vx&}O9kqaJ5x)o5A?rv!bQ91;X7U>ojf}kKs2?$D;bT`r^A>Ae2jWmmY zF5P;z?6c3g_x|U<|HWrL;&9F}$C&FIW4zz{zGGaBTzm!a6lCOO03;+Nz!3ZcT#N%! z00tTwIvOelIyyQgCI%Fn5Q>e3g-u3q1(%SDoQ9f;oRX53p7jRpHD)?WN=Ck$%o*v0-s0xr<>MC+l)5b~ zBP%DbaPPjlhNhObj`1TCQ!{f5O9w|MXBSsDcb^x&elK772ZV*cjfjkT7afz7oRXTB z{xKu7u&B7Cw5+_MvZ1l5xuv!3b9-O^z~IpE$mrP2?A-jq;?nZU>dx-o{F*XktM< zCLNdBHqk@-UMMj=_YA`hqHEuK_FwCm_y4G8zdH7hevJXx5G3%+gWv;Vz~KpFk{9$p z^|{H3E2SuoN_h8gKBggf?&N^Zf9i4nU(^!>-{u#=Ae zaqJn-3Z97C;RBg_51eYsu;W#E2z`W&hhG;QTH`W#jpVAdc{{5lvg%3(y8{uB=G;kb- z@7M6Bb^#94k9S_41N&lUl!{>c20V*eX!apJ7r>8dHKk%0A#bf87?ch=Rw=2-_9uD6 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 Y3ltJAufVo z2!sQM!nQylKS>a1#~uWd`vL;7zRGMidI$ok8EdJjmb*xh?>b-p%y7`OiVxARAnj@LK)W#W?4wM&c{^9p3X)lEcD=zL(- z5t}vaN_^gRMa)cE^hx3cRw2&?w}5+!^B%&>t4Cv@OMgO}VT8;hH2$ot5e0FJrzK?w z1Ceus!aW#2p?p+8|GBL4AcfA0a~4Ei-Xft^UbYwI0{`bh5^DEs5CnN9Tp0G>0UY*4 z@bcMa4ibWKWmrvf$`0BoDLVF&62Nb77v+Q!Fw<1~b%K@eKUAuv`(t9;rZGEZ@GF9q zlG;T|PYhHzVdt+?!&O@DG*C+Ef~b`N7M`Sl2>2)25{TomgVmk_c<37{u3$sEW?0s- zcF|($$=7<7R_uG{^2inqdMYeXsZzyfbk8sC}1 zFNL)x5Qd^Zk^w^x`-CEiA%BbB7~-64f}_ip?pEbw8sh|8u6dOjkVDL7)3eg#l zGBUASA(H3z0)E@O1~yZY^E2)pUM z0ea!>widq=b=lh+&%9xYid#7An6LHMJ@u61QL-7dQ`)a+ggt#QVWHrfXD}h#4tF0LjFAlpF{>qLpq(qv^aFdI)=E5<`@sEdaM-Gy{@WfiZ6m80^~%5ZFPA&Nr> zyWc1ch=&IpVH;Y93h8v8Qn52eLeQJP&GD(|gJrk-9h^^Hu+ zTsLEglVBi&uHmUGp*Cwpi~ zdCmdBjmO@}#qvGl;kV{b_5r4Hi<`n#Ab2?C6S958=faQZobr^w(7{K>*7oXaV1*hGs z#yTxf4U$Jw#jG(eQaFFW=2j3XRqW?H1dru$DKH(OFBu~_;B9g19JmryktAgr!+)GA zg*OZp&wXPnkERvl>mj++huqGCM^vhcGMiQvvQS3PJBPd7nPF%iq@DSpEIaVWpddg1 zH33zp_y0S8+A79W6+&hFXZaHsdpEX!Qj~i2?EkUSIHUOldH?VAxG6DDTfwsvHy`y7 zsn>6-JA7=WAg_Yz#eDvF&y%)Xvrvqb4(X7c%C747sy~%Ku%ey3SvM^kxl5&?EOe;| z5^7Nu5F$s%DCAGa{wp7MXI$&^$}St6v)!sk6( z_B*J!20ZXF3izRbwxq#@9lDMpF-d@0**=w~H6P0=VSC;wr1+I; z9lvxD3e!CVd^TwfhK4TTr!B>|EoH1N!F5$vPmjrxvDpuUyq|6HCE-sRkrmdCsaztT zIRJbA)DA`<{rBhg8<#43=7f~av}j^yh^6REATaORN3z@O%`XF|E~9Pno69$E zxB1h%nH{A`IYDat&JJG=Y7=dK>&Snpca*G7U>2g!A^u82?Jm4$6FxoO9w&gev^hx} z$VeGxu98wgU~9bzTo7J$<$f6mmVu|WAY_vq$NKHrQWAn_1!8j3gB-eQ^WHQ;b zYN+D51TpTR)@?!Z9ighC=%5OO#jx!oUUl?v^&Gj?S$X@m_)EU}Xy3HqPj`cHJUZz5 z94S@x&M&89scqkqt1wCwy*%XHRkY+M6Bi>tcn38~CGI}47mFNQ34rAsCT6<`sA$vf z>a!~nFxap3A)52L!X+>EnYMEH*jrbrF9EFmZBi)P&*?kzY{S!|-y@?-YxB~G7oQHB zkA~zYOEq1-D$m6$;ehy-Cs(DVzG;;7bS;N($Yn*(LC@1x^SPRGzTW zjgSOi++G(@Frm6v@Rro&VoO7*dAG8~3Jg1`&6zZSuzw9rrrV8_(caQ?!%e@P-jNEq zkcAz|;>Hd}Wz&nzeFSK%fM#AOfle>nUG^`1+pkpdLKXyAqBtSdTF{l)^wEHRsKT%@FTDYJC( zgw6)Gsp=@4);XpOSBP_`;@CMVQpDU2IjhYf43OTs8sY+9^Yc<~{Zrda&5z-2)eqCU=bg+x5GURZ z18e%DLpaOEwrZ?S;&PwNIeUiJ7yl4=t~86q<%$=EnA__ZhVTCrlsGFInKZfQ5qe|c zBymNt=O0j37?dcDkx<`W3ikSTyf*gm7^WYz9U_$YSe#my@71`TtjjrH!Mive>zHSR zM!mz%%bnWrLwk0&Up=R7|Bn|q>|D8o0#RbV`QG(P5tp>OMI$dRXX%xTZ`IC-&%F_| zSF}P#kZd6b^sfk$@X!Kua&B8)`-hj|`**EVyk8x+}plwU})42WOUKBow`krb#jvGd)I%&FlD(Vwm7|C=Q!Y)64R!>*wpc~%kOW0qjFSxcY8nfUC6|ZJe_WKj0 zgyJ2(eGRar4aOOhYgUiWfqh(`YJKOlHJhn^;B?B`E5zGpT9zI@$Sh(KUPosbshak& zVsKztLHdGHkm7P{NFcv*Y-@e!+tjQtuxpohi5^@FFJSI}##+dHJu081fgPX(sTpt#?kdUb1BxUY;(*)!U|@z$-!-A`<+MJ?m*YN6}H z72g$@&7Km_FnCu*>kWxv6FLzf>7={df6Z{fZkf|;05NLb*pB>S)d)i)ushQi^<6qb z;H|mmecqq@SfCqKb;9h2x3V0VeWmJnXe290o$wYo-PGex;kk{K(9OnB+oIgC^*fw5B;T!SqJ0<6{ zNdk5W-cyEJ4cZ?;zJRu*T1hoGShv*)B%%79#^#<_@61INy(s5JEC0)zdQ|~X zl&TOruXE=6yrfW@EA;dkB1MmV9J8t9fiu?f^JsogLo0;10Q~XuNPB6bxrn8;&6C2^ z&6T&zz+T1_9YX4{#iWUIvxBRmnz!^k`Ax0Sf2%2M2>3wzeK18$g@ZBmP1jf;U5|fmk)gh z9@-*^+Nq+QR`~AzH?s#4mlXI{Z0+BxH!hU`lnoRhO8wI#c+1oG0Bg$JtR$Do&bk}$ zX0Te+rE|tyW-`Nv(#N4Jio5`5V(3-B%v+q!*dR)@TnU$n(;ARd=VNPw!HAr<@x7PE zc$xMC?6m!lo&R4;M?UCqt=?_gQ9$LNNik>|T&jK?dV}R(Z6WvGrL{=xN6x&v+$zG4 z$uF~DMCvmVz_>u<+Ca%>6hEf;KIGCK|MxPmdH+vf|1*;RImZ8j!DTZ1zhLlx_l}WM zfE`x4IA4ud;xru}H&7xhuN2S|4ZMIhR+53@EY8GD9ZAIP78&GR32la8N=1dQ63ReC z`0&G{j{@Q%k=f(vfo`G&EKClPuSqXAz%XSGpbotaxfs)t;7|&EircX$b$DW@&6fk& zxou*HH+$|CjtTi|l4@|PDv$g_TVtaTqqd4331Nrdjs;^f?iu{Mf@d z#BTE!R?{gkSy4HX94J*)&ohEI3SbJq1acEvz-)QgYc?isNGdqE0Zm9ZmsnsU2jBd7 zPW5~L`D|5q-BddDALzF4r_(Zc+fE}VQ#%D`M&P)-*rwxWVn|ki#CM=B%FO@(1z;k5 zXDSRT3Y&p>#z#_N^D35P=2plEq{u!Gricct%dp$duDs+xFScGTZmcOiq38D(H6+tlvVn6<4$qE1~mJmAw^+d*hb{M8ie~AS* zDKASepz!^F&~G35K;X^g^}k!mH;0dTx`B8T+D)3nDZ^lz$)H|ApTG_@X1dA^qk2)ChFxW`V& zaCY;Q?WqHTYhJK;ioW;yKLNRCv^xUkerQc~wD>wOk^nWqRzADP9Ul%PHlS~6Upk4s z4Y^Diwt{wba~C0f<^1C5Pf~TZ(te>v}mEWP#~ik-zx(cr}&c=;1D64CDt-jP5A zS^a-a-V*&shl#&x9KywSW@CZ}+U}&eSPBCB_$70XuQuIrlPAL3m|0se{YEbFzk*@* z$BH*|yf`Yk_Li{ZKpZ-@NW6@upWcV{{Z%qRP?`l>{h$@@?Z&k2&twL4AF=K&#ZTfJ zsm>YC#QK2dCm<4PQoZ_Y!C{@Q!y~D@>j;&`5^UQid~E(k`WZ2<#ZCO%))L>D&VxJK zmwx<3t9`qS9O|e6yV@5JG_y?%aahS1<2>F#oFxzOggA*LpnRH%1J<9nE;(l5Sq6&Y z5eQS>ghW=dXCVZ9uV*!UM4?9E)*9t&$tMGWp@tqTFFTq)mU#U)Oe6ta&3uddX?qsG zG!b5&?Ynk?OKhQ4(#vdMLK3a?Z$X30iT%TrQ&BDG+7N0=N|rsw${H9~?W9-{3MC{lpMFyJnyo+lWt#k6xzVY)HR>9=kr_1%SJOM zTwL8tyJRVxQ$Abi)>;AyX{?uwBFobRBd@H4S}U4?gy9FT7Z>FQFBZv~%`4a3^Z-vN zbt}_2wDu$HQ;jbSLB4fkGy7vu7W+?HK7T)RRnVwqt!vXser%Zp5J<9*)va?A9F9i` zpV>6qnxi92!nrrcak2^gG?d}yq%qLNVsZ@%&hn0e^ed53)KzAHZ?2?!m~G{9Fd%u_ znow9eI`ZMR$_D-XJt}73je)dUrwiimt{4lrEy91_YDMnnxi+<^NMq$lLf>Ob_Wrv@ zH7{yaPNlCYqsxk=y;3~?7zXd&zow~rfG0~=d&Q7_$_YJd_41FX=w=tZ(CSG z6289E&s4ftOBS)1AT7=V_o=-kPuzJ9`&}acTPw!gQaUk90Pt0vvCJIvRu*xQ?ik`J@Qz zrCAvdS`N6s{b6VfNXNK!oN-CIkE`rhucnaTH1rU1yk$fGF!#b!(a#mVH=Dr;aRw$d z57{mR*#;kUZ8NJ5G}EkEsKD}sr83Un4n9>L5YquZJ4o4lUb6ogB|)4S`$SytPt7_} zI_TU_72j9D@1eS4TuByy>Peeu^X)KJ+raSKVO=*Hogc->8|%7&cNEC*cbL_#Yk&~& z=^OrPhbBt-8FLaVNPiD>vc*X@)D!*VEyASeM4Hpy1Z42=KnHwHlEM&eGn!R95jXME zfw(nsbD4rxQE0w%5P(|4!w;u^i*JQ&Xe7f4J#mXAZNy{|C>-Jc!k}}q44Nu|&XNx( zQ=-U~4x6KBXHqVoW&x+pCV-P`#`oe_kqtY=GD=$^^=48yy?_$dak1>s*>@9eaD*Vw zbb8y1oaaZn-15fystDTskvO2Ku0bQJ$#C!kE5Yl}e1sZ}utpCxn%#L7_Q{sg(R zh82S9to}}vByM&W$4Sl?{FFf*`6T0Ww7xeMOdR4iF#4d2f9-Ny&dOzrp zWS*kEA2ixPV^F!j_?(e@&x(oThPdCf&uVW1QW0`Y0KQRh%To9Tvm3i}lTa_wW1>PC zWB*nxS{~uC=;!*>ttmA9#F}=wi`8q7bOaQ}0tVJuP{K$SbR)Oy=OBK}!RzgSgKt^P zEu-my+-&+2-(-~AP<0X0R!Ft5|JF3|nc+5q7;EuJwVZ0^G zp(=9_SL7bvQ|j$-TAlWKHct0qpAe`sx&2{0L4UW+?C9yyu|9q=tu0avaO9@->K>wh zYL~5Fd^Q*b;$~BGAn_F`5rJnINsNwIvdtNbT#P-+)V9s5aCdH1A;aMDjad(aHlrC6 z&oVw+5B|~XeU^%nXu0Y2$d$I)Z4$x-PrY#*>hAcsUWuiAv{(K+(Y}x%q#tbFkD*Go zC8>P+oiI@XM>oynWADTb?#pOuDZIeMW3lmD?e4HDy%>*rqN5~a43u7xl;>upB1Ru8 zo2gJHrGUN%@POzr~c4c=y@~N9sOJ+xG&3pS^^IoE4m!_d1*&|o&9)5WFLdCA45vHV_m~vO0#=Zi_JBjV4MmHxL{tx2OccN{cwhHk#sY1Ax9_S-FLk{g#gRchaQZ;V9 zr9~+L^oX4_h zhN*;Ck5**rC4HUWu^bdL=QZ@Mj4sBP`rZA~YY!?aEbRQaNquzU!at7}TAFZ?`Z^=)ES-zf52N7FCtpa(49+p9`r#yNJctaA^YiHfOe|=a}+|;gzOY&EWcaF zF1dKDVzM0LyTBJK?pn{lw)O`uiGh=a7a1<8eglt zf>26OQV~sj94%_K`Dt?CG&(PyjV@pp(|zf?|0G4#{CGoJk!yTKd5>|?m%pVToY0Zw z_s4ep^m|35Jmfe#yH=b@S88`WQ!UNNz-F|5!9ZegEVz|pan&})k9dCdWxM~Bp41&4 z^LP}M$Z4YX>6=a=rm4J%c_f#5M^@vD>T`}W6|a`FGMIUM4Cgl~k8|!qh3e&n0SBR5 zoJP;#>sw}?*jfMCc#p^TEQ0Nu>U9`bW{Iz`da4OoF!-r`MLaLvQ zvR)uzuy&k%_@aEzfefZ?eR}E^D)r8<{dWf$v^KAeAU@v$s{t+j$ztnPa*l^C#iNk5`n!Ln-&AsV&TST|V3xnIg_QU!Th!t^qgyb->0g9jd6kd;hSgt7 zNB;I2ZQ*Ffi(}3N5%T?7BKk@$f3q@pC4C3PYnBX!k z>lNHBef*^Qm+v2)J06LBVXCa*9yrsQH0Nlj)xTT*>8+`bZqIG0mTwNxF6^U97{BF1r~Ib|AN~#v6=*1AI6fp03EemxW`|ImGF0bD zxP{Z z?{CvLWq4b#`cIZ$2X(7pm!EF7rwBslasSdp?9_c2odY;y+jFNG^Evlo2nu}>o7ejx zG_h+#3$Lv$ThH+t{z)rfs*CBB?@ZLmbgoF`a1RHaVS}x^ z)8c4;`bp@t{I0I0-*oZ2kiff(`OOuNV^iD$_x|QC=p#}cbylSxEhDQ7HwDdTmD5J` z6pr5G2NYT0J(HCiK6*(f2_FZP`3CipW;6+$?Cw^MnY(H%Y4(suC9b|>DU^f>QU+x` z%y!9F&ekYKC~9T2IjO0Hke?m)vMj&6^0OFped@>})_lk<8M-UK>ucgn$lB;HC~tPV z7pWL)d$ER?BHtQYK+?^!yEV@({EFW%H_3S6?O4eCtmDaGT>ObBg_*u?rvMI~YYW+`R!1@@jo29KUhc9&y%VZv1yf{+uyWw@^ z=Eo3PdyNIwSxeckocR1Ng{Qo8`FD@Zlr$H-$VJO=$vcGK7>$T|?%cTd8KfiH0swI8 z(es%%I65n+jLvprlPb2v`v_~NTC^UI>0FkcWr7_KjK5Xp0;W1<8tctb32CuO!tNYM z1d?XWbtoWCvN89Xx33KEJeaX8+K%cnO4XAzBoO0X*7KbcHKibSQ~6bjF<}6))yMQI zFtBn=621sjI!T=HzNUJ9da!DsfSIuG1&)tw0LMl+=^8Y{rtM&agB~tB{*tulZ)Ld~ zLvjIX8B3&)(PS4HI(ib^!%WzcJv=- zjSl5L-BZPq^pWB*KSLy!*tV10PvJ z;PHv!mzGNC5-I*(TX|uhnRZ5>=LXT?vrT|_X)L%oR}5wO^(VeA!O){+-w{UfYRoD% z4A;4HZ-e|)0PLM@!gghn7bKRjolg4c#I59L1uE}p5yMk^B2g(Yex7gEE8Pq4H>eVs z0ZQ3(uCnhd#ar4&k%R3xMNJ1NWNE?DiE7pPdE2IarVH~Nqt1&L&8#?#?LPfW-LhjT zuGh%GXPf*p1-OLqbF*@(43p5`kL>-(C)_M(l|`N}Fol_O%!`9CHWBJt=~sKp3CueP zHJiv2dd1UR#jPA-*z zP<$XQTiYHOs%~54RGeK3NpaD?*PDVb!Eo!o^@^ReYM62=NSwqDMn6%2V-S_SKi!fa zP4mJxb6{<0nifHkneoEQZ`dXe9p@=>+hVfannmt`0I62&jWdPKe_ogf)hiSyl4rsN z7^&~&pVqi0x=$8)HY&CR`6_+Us-Z|?*F^hS{+cp31nt)EMt<17HcCZs^?0AHwzIt? zk~3b~w`3`Vu92PksBqmW0p}Op8$Rjg<^N~@J#<}9eizL78tMLwRky+p;}Nsy@YZwj zsq7}*MSvAQEiZRTA36WKDFJW9E!o5Ei!~*I#h=r>b4bFCDk?XI?ymZt=G~-{3;`c; zoycgNWM;+dRnpe}xUWkSpO~j<_lCdcC?Naq-|*8_13W-bK#yb##0dCYTiiaWsPel{6!(`Uz0^?ovqo*-88m2G%5j~yHJEsv1w8iWt2mDFS$f)=A8VVAxEdZ@ zNw0G4ox6(7Sg>roFRRocK55qq<8mi=-an8{1>eoisXNgS^31Y9I_+_K$OP|5ID4}# zoogK~$o=))w(e9$V~UhQa<@*3h~P(*@$Se^f}1j&BYR8z#oKl88{zE%0-SaBpPO`j zD=63pLmrdskrX=>nzvGdCXmzDfrQzY{6n*+)3EEOlej(tF?k0e&0sbvL$W6B)2oR< z8#t&#;HxekPFc4*68L0GTFRO8kLbJ8R%-W+qz7^t%j+K*f@g8@O?IuPw1U^^mL(Lk zz1r^WKYs}8_+YDeTWDa=DRcKmOOE@aI;RgdB)VOZ6HjA0rl{^sgUJ;ncX6^3jNXi^ z%4mMQ1EYm)Qd`^gr5 z-M7DZ&0q1;(x{y|n)Qb8{a)12w2>bunBbg6KG4deEzx)%sw4n$#|A@^P|c4;UopV zWzQ3JHAsir2!7}3L?;UKjo?(aKIzgh7%x|_w=K}}h!WzJ^v9Ekf~*Ycw~Dbj@5At? z=@2hyrKoN$HieN;N`La+Yro$5%H*8kZy8gDq@*2TjHK#Z#5z#LIXf}D5Ajvn!oqdX zW?jFkGH|c=_3_I)_iWLFX5}Po{Lk|VHmWLVB8z58`{nZ9Yb<63iq84(D4}a+okC+9FEDEh``zZ?U#<+VB`qc?fnDjH1lc(*fv=HM0moCKE&xI2!V_v)75%%n>UV87p(dj+c{-A`aQ*I8$2 zVUPrhjbhpMi(B>%)_K?8H}48#=r94yB@ePCVu<-NBYWA|0pn^6(@|XRaqYPEla4i> zTc*1Uu<(19E;EUJq@m<{?9}4%*r%EKw(?xnYCPEbcm1c ze77V470EvAelkSR^Q^exE^{?v)Cd`Lb>Q2Tl=~y@yC1&m9Ky4kwd&vQaal7%{5o+-l(o|4>aQMFZRu44pLYbvHdY<+unY;Z&slx!yNlkME@eWm9mLJqNOQ`DPGPwh_=ds-thljB&nuz%<^WbWd=&xP+v zZdvyWtq~6ic-QhGDA->{dr5l6v#7A;FNFM55RxK#+F>=kcH0gXvtcjwsODDk&b9f+ z()Hq9(s!m7U4>lh8mjiAC(K0rhtsX*Hqe;=FFzSg6)xA38j$GmEm15GJZ zkvxKSVs5gUXF&z}86Y`y`*}3;e*@hTPZF!srZ$QsdB_qT#M8;}kTE}=jrwFt?LRB( zk(;hNMAlb#L!oiIy8fMg)`mF3Ye-7?+ph2_fq{M6o#T;nHkR2mNB&cb4!Xh`{oJy@ zFe<+}1@p7IbE%yf#)MxLt3NG)lg-mm2dAt4Pe+`tkI6c~)K;Etq|bcV==Y) zwerye$Bi3^9GXvC3{Mi<=iWMKvD6pV7s&05L9OfgR4_g5dXZ*g2M{jNI}NIcg~VLt zUYobppa9NPrEPmv+LSU)MB~DrA3Hf6@{|ZJH8l|R8ef%wSf7R%yg+QyC>1qddDGfs z(;xKx&WR>Mwi>Ixh}%tR!hE+DuXBL}Ch1L~Q-q719xm++LAw9w>L$5b8x+wih%A>^EK87IVIdPf=-^WorT08pe0;ii zb#sQM?dwz6{-6!pCe_;js;8sHLK5OlWNO!FeU4PUGgMeC;== z_#f)_)N9;TcZ~YNMN?yA&Gd4y4e-SwoT(jB=X>NCw98urKk<^4SAMJ8hWN2%pUe~t z&i~|jUu6y*@m)4x<{pguqOz0>VIeB(>qQ_2V4b>Dmg!o zxx-_lf7u6FFxkH_TP-V}jOd&PX9NreTVJo+997D{H-}98oYudkPu8C#)X53&DFK_)}aSU32 z>f1Aiw1G#=SX$&R13hf3($Xvabjilg3O*GClFEO>Hk_!XK7OZ*S-o@h8tEBLuJ~CR z*81CH*RrdJQXkr{Y$Fg{KLi8am7i?Iei)s&~B|_ z;PsnPa#@K_ACNlh3JfW$n;KtrcyT4%W)uq5$+s?KJ%8|y`!&y}IMCgsxc%bKCGU-z zsGka5-uE~e;n?;1S!)I*`p3z+y??rYpX7646PY1JSDC%vjgg_B_E;pL#P2snBgLOL zsFq|1aa7+JV!mJTM|^IOE?<^nm*bRT1wLJuMY7;GYYjR~^%Od8Gn=cp+Fpt{SA5q+ zLvENwGqRyUf)9>rNsHJHdDWdm`K93a&puh`g%o{3)(DindHPeRWc%}l7TdE=MWj`v z;hLn*2K>bZ5hTI46Xn0ejpH3>r6;@+Kf^jsPcSG{+lUVZ{MC%g^tWC&9(&K$l!Z#! zoL9D9i)M*OoCu369=#7P?!f0^{xehZe!my3lL+)vT^2~>H3=SehU@$c_iUL_AyU^< zL2+RcJ9^*3BHC|~5+HW2kuxWlHdrFcitKFO(&u4x6T@GcQ-x5-MMB$(@@R5A|Klnn zavY{@f<%%XC|RlK$7i;Th7QfKuMd(}0{veuONp=#rpp-+TWaBt>%{VF4RM?qzw%?3Bwk4%Xe3!KGkq`Ggusycj-EywHR( zFp=yCg?+(HUk%>Du7KC7oQSp@I*p#9K0-eI5F|;_S89eY${?-XaLP;?PW8{#WX+5N?zDRnJ>Kkr1!l?z`|gRkZBdb0!K>FGl4V zs}K^=1>PWPwVjZSahp;6!}@q;Y6pR^D(Tlh`O9ekG*pKorr|Q#IcF3VTLe$2K*5qY z$(mTPb(s6~Y?+AVG!YsCe*kS%Q}SsW#SgUKp$ZQsH@x4&#&ouDMaK&+^!-f;(sHx1#a`}MU?vDnG`+B;LbCKJLhQ)pAM<>Q1|>?2DEF>;d@0EQ zy4(STPx90Qd|?wR_SsZdp_gZ(_a_7d!j(nBIapgcBot*S$WdvN5fnhDJ&2S-+MuxC zYAJZ#SeaVwS}u%>=7T-M6WMUyyxor}^=*IB`LGO6-UFX8F=!@+D`Uv-#(3ISmSc8A z-qAhcen4`p_~1F6axN$7tXiYXtqhmZA(yi3Ujjl5TS8%|RUU>JG141#RsCw&-_PkN z7R2Je)>#Ap4#KNI@HQ2B9u2=)XGbR$nObVTfc;qKro+c3hFkg|goG`H1BjG@nt!aT z*MToGc0KXdZ1pVnL-L)=mawJ78kn??MpUs`QQH&fi91vWT2hK#1Cf^T0jIVrfAva| zr|?(3H`dp2uqw~}8^d42Z#WjATmi_z$}K8bg_|$Duk^u#JduSpCP9sXUS<=9Vqk%G zMlU}xQ-2n)2eV0yadO?QQ9GdNe)sX7o+S0&<>`10;q>Q^?8!-rN^H0uf0MrJtTN8$ hqy37y{A2qC6+H#`dD*Y_ED-RcrLM15`N%%v{{SR3kHP=| literal 0 HcmV?d00001 diff --git a/STABLE/documentation/images/TwoNets1.jpg b/STABLE/documentation/images/TwoNets1.jpg index f7962f37754424d3b89493b470bccab6353f7448..3c10145daed2a4e6e2a6fe440c558ac62fb7cce4 100644 GIT binary patch literal 28579 zcmeFZby$^ax;Xs8qT!+h>5z~{x>HFJ0qJh(?s5@=(j}mDhjgc;fPhGMcc*kLey=lg z=4|(NzKJvEeCLk?>%A7&T2I{ZJa^yRP2Md6*iWTor2sfMIKTk>1@2~mCjbf(5;77Z z3NkV>Dk=&Z1|Av)Iywds?ma9#GGYpHGGbCvN*Y!=N-Ab*Qc`+e24*&PE-o$#I(}h3 z4k1=fE{-3Iz@eg|VxVIXqM;FTJRp6*@lXHUwE{ROaE0(&5I8CT9tRGB19$fspa1|k zL=f5^0RQC&4jzJlh=h!SiiQpjsKy51;UExr1PCG`0s=VN2mBsDz(K@)z%Gt-PstFO z$^nnVFFFH-`f+(1{)?eQ8criee^j*l1cXGyv=8a%85p^^d3gEw1)fMqN=eJeK2=sx zRa4i{)G{_PeQ9QHVd>=T;_Bw^;TiBcFzC(O;E{7FW@YE(=H(ZBtf;K2 zuBol7Z)orM+}YLrrKfjzWOQtNVsdJFX?bOJZGB^NYy0T<`^o9q`Niec54_+2$e+>r zD`vmL3kSpt9svP@fcyh5ICwYkf#4t@K43?}6<0zwbht;w;fI3vI69-e4V9Yn#UZ|t z;}F_?8m=YUqaUdK3A29;G5>!Fv%eztpLk6J7!Wv+c@P{x6ga=4&-6w6#luNEaWd&G zZkNH`nlVMRVn0Y1kg~qpAYut$o`kO(A!H zd4z?Bx%a0!N6oV0)G$m;dPw8wjdt#q+puPX-mDxNDyvA3<#%)!p@0X9uB-446A-@Q zQ0@1RYz!M};!OQbaHXk|gI;i;l<=IvB#f8(X<1^m6Q|h=EHME&!!mj^AtD+|@4^#0 zNU1`$=H%v;ZbYORCA+pZm`fxGD`P=&QbR_MaE1U5ar%dhHqT2Ct=E_V*YJ^32 zFAB>nx^QRrQ;G^so!xt(YK`{?&RpKtEHL+k*UyTb3=s93ZfV)X#~ukRPbgG}Ov7bL z%uwr?d|2%f$-YXpiX6tw$?+B{8&lT!aKKX9S!uo-O_=TE6ckpV3p4ETnW?}MriTn3 zc-v%YSaNDTn~=0w)hJ<&nVLp-vo_QdW6O&^8Q?1kX@Y9hCT>U`#pjS0AQrzS4hve5 ziGC#)6jq9P2lzZ|l%8u{b?GTpm!)d1KF*QP)ew(C7Ud|!3=?#t@JmN)aC^%&r>#8d zd`%LU>cbyx>*|>Q6%{>o)nH>d+*r4A2$!NNcrDSD3Gq`E3v)#jhwI0%Lw>sS603F| z*J)^^x1oiZ9oeU*$DJ?e-!bMNC#B;%!qy>2_d06Ps6I8F5kzbE()1F^J+>FbRn?8+=zoyCeqE4(Yq&|0auTK`_^ESG&Z$ycXTaq|#pYoVM*%*^MQZSwoW z!}Al*Ei_%cmR=(Ue~p$B4N-$V6k=6S?gU%})<5OByFK-hdy&>x`{E-C5%cFoM6!W9 zK<5NMM^E7hVHzd$r(t{VTk z@{p+JK*6{w`tqLGJtavz;J@vWkC6!BiIG;3MEvl65fF&6B(mFGD!cZswU;(46P+d( zqn`F8o9e=p=7KW{@gF{(P^{5TVtQ|D0BvOEKvuiL>3rf=WRd9eS?#esxy1F;F){5UsdcKJmU`mTr!MTP6ZEw%_PVL+7 zQ`P#jC&a6xd=&0kRJJMIJz(x!E1tbK9VL^<0C|Y4Tt}*i7{Vl=k8M8alQ1w=WW;M; zYD-fm$x*PWa_X+RbO5mIhCd|1qpPi`4PFZU5}p;TlI?+P(7NP^OvYEJ zqKNQ#d{#H996{fL{cYF`(y?z0ft!v=Y@}zwZD95tU3(x!^+}SOB%HBVdz7;Ha}*OFb>3Gg_ipky2b*-cgnA8X0$h6Oca*ceoW2S# zkQB(*W4`U9U(-KgF~yzv<}b5KMkMovn;VcMD{fN1rz4FZD|GEWg%4QpgrRj8v~DF9 zhy-TOZUyJ|=W2cmG03SDYt}Lza_}2HIW0z`hc6;F4KJO74Vc-X)JR3Zks3-^PBPC`%S9`01TVxlqjWd3oz0F&qUeJ16V$kv69+EifAHA5q?T?hh*~0BAG1hLW-a>H=JM=ns5{MDaWEMb4|_@AsGIgzGi3s);SO7 zYKPOkCl5ygs{N3WH?0H?Is|;y1I@C_Q~8QsLtn--Jnci5Vk;^VT#58fK267HLFU&uN!_B*)SVx=+pW6DKLDzdS$M@Lw)XtzzfmV0r3t<-Bfd;eKI zdPawEcne8P6WD2^rbb34>IBRry*%y!Gz+`1h}tZ%?-C(XHZZ9tW)nhV49+uT+&9QP zNeHqW-&n@76a$y6EYLT?qT|%ALUy4Qd!6lk94Km&Gw6y7b(1o8K)es9U)U8c6X(-I z*QD(E4kx^c*xL`9%**x3U*bcg(7Ldm^Y!#}gPW=zNm#io>!VK1O3_rs99xj{=oAWw z?S8l-hoWuRMNYYh5^vq7kw|=9qjuEwURAS%z$7dkvk`DQ>32RAD(Rv`Vwes@{RD} zkmw0o^&K!ICq{;drzG}=hfGQmf8gR?+M8x#I+&kY%N2t;Bt0{P9{9xrNjrRW^Hzl7 z4k+`cxB^Q2>+b;gJK#&ef5Nl*zhvUC!2jiEAemZ@DKDU~wnOM9d;{9X4f-8Gh4tnR z*rh;*`O^QI7~rh5V+A2@@E{fH-{MvOI9Uppbg9H3X;e#LAzHuY3sc%5-A(KO8g!Cz z;tr5xasEMinCwPS%Pzjv9grFCEAU&(oiCEyeOVt%xF$MlCiIi%Ir%eMHw1)5b|NC0 z0KX_cnkYn%`Nqv*;LEkVBF;E<$B*9=5T6-c?7EFZ~_f#WaZWS-_DtZP}lLU#>F`XETku%)^=vdtp zC!9LaMcUdsfH(_wpCUqZ^JU!~&?;vKMp$^lUiTVftCS9^O^18oYMV&uaGKF#Q z4j7?@soM3VqeWh5yyCk9G7?wr063PGi!qABvKxmx;0bp(3|Ghp zwt6VnXB--8rnxM-moY1PhX#ktw`{G&+zm6*<~A0WIK zcz$S`TuWe>TbD#NKShWX6_H1m85Wl2FdBt|EG_B&b%B`s%fsW1!y>hBQl}Bi%PKZ` z866U+^FVSzi3ZZM!Qs>lo7#Fkt1as3Oz zJK#nV@RI+7dRt#OY~+Ss5frr?vflw0Azu#Bmw&gS=#ndFXP-RMgf1H20Y`XndtBSje z?|{Kirgwl}omFCHzUC4|<_2-la7 zX6f!(58Gk3%uBV-B1yR;nB_gu4Fo)-+aA2<-lAD{OQc#k1kX#x{ZjeSI10H&&F9qS zI_ziDPI_jCD=?aQ(Ib&JyuHVQLdJQhOl&v9?hzu@v+gsB#Ag20USZ+uQ_F8XzpNNx zb-q_b9uV+0t(tk!vCftu8dWGFuM;vUi7O>Q6-W^%3d%!rd2)IEKPiut>e|s_n+LVm z+*z0A_uQs6%pfH~4N1glH<#1UMP=ww!|b2NVg2S4_JTWLASDlm$a@En6c7ARb^JTQ z)#&ELW);cYw`dilKyJny-n9&vHg3?)|SzFoLQQN05m`m!DUc9pE( zEdS>Xk;Dr;6q4kg8QcMVBOn+(!~4|`8w%1p*i-B0c;qwVaKW?|?Kxg&QQK_Dvi{krLL3OZJmA z7pi8fas^I>8gHM?cQAinrc04g50SBq)oZ2IYeghz?4BxDU1g3I#g$1*Z_Q1bWzWdQ z{VSIyj_J8z>Tp%xTH`MiPl2SKv#g%8yxSVl%d;l%4w!+yvd9d@&9xqMkrNbl0O!9l zz}hnmw<|^(afaHrw|(wVeA81A-s1;&qu^lx)r!bO+6BfPup}RICdyK7=Z=YW)7WzH zmoZ~;xibDt>OLGhB3iL*>ek6FU4o;o6AAJxwH%eP4)HwSqe zI#V8gxoS*jInQl=7QHE8$8&zoc3IEa2utrdbW# zAVCjvyYt(aEokg@EBG*qSQZe--{b&vv3t_7dkWXq(C>R-l)`rahUfEJP5@^Az^~e5aDOdwg=+8xs8uv4Js!1j z3H83Ld4XCc8Z5n_e}TJC5$^Ng4nReUy#qvtUb%cPs%e)=!IFBx6mriZi&g$`W7@1$MOH-IwP*@GbM1aU(2P{{?f z>~|J6)3Jc#N1~hPCD6sp9ni5ETGfLN66o9kZIYk|M^XyS^c8}90grP!E2w7uLrY=2 z($OG&#dMwS07L@)8{1E?5a1At>O0K0VFQN7+Hx^RF1c|F=Q41ErwdAPFkJ)LK(i&u z$oi%&Gp^{}!j-7oo`3n~g))A|@AlF^YPks^SU3aY-BK*hcyNn9E%Xx}E(a%y$i6=z zv-uMq6D>nx>)(uhC&>hEX#vV$^4Uj^UTX=*CEo;XVsTcN>Ky{;+;; z5ISIf2OMOG;ekRP6gu?{SeJVgwqmQ#qR*&tUI7N(9E0#>xR1FrD+&Ng=CZl)Ls#xS)uxYFSa--apNE0 z3dan#fIJ8`)qOuLbWUkJ!&hK5yqA&GAHgi5vEjhS;y+1N>8JH8u!*p;v}B1Ny!G`B zq~FbkjGBG=~Jad{z-*=T;CMksDhpk zW;s)QpBBB|R74b|n~tQLF8S-Kynm%Fp!{!~gQRLyrA;Y|49;m5)5O?3L(YB?*aW@kjT<{KLKk>`TM33W zLv<0IV4&3<{rDO-1^RWJCH}ume*Xxo@&8eRfC0ImBbtA6@^9mEfAeoC#a>lkMky5G zE%S7Ypu^HPx}iLNIq`HfNqol&YqEC$N?H&Ir2cTrA)4r6aR@zx0)``s2Ku}$InYHs z=#ume)hiOv|lYnOm_eP-UYPD zOkZ};#JP94aEpGW4ug}1;X&K!mRha|PD*d!BX5|DLIBVddacj_J$baHe}PDG0WS0R zVA0S+JM8jvSQN$V=XsMW%baLh+4w2j^h4NFS(*shl5tSq{no7no7cQy;zex^{ zJ=-C_J(C{5GGI9QMLGa^i?!b#%& z@0;fQ<<>!4P9S(naQNPg=#!6UWJUn;s^WE}pfasM+x`M-Jj|59=T zN*VA5f64H<1FXTAm(hecXf6Is(7)!w|05^<-~L|dEu1S7x|G87G)6Ldw`i%xOv$$s zn}K>KWcW9k;olYwZQP*V0W{w`^w0jBKKdbNe~zG~WBUIkrT>qBkNNW=Mp#wQZ#>EH%8mOmSM)A<)?U zm$Iz@t>K7l=b?frlA}9-HPhw0r`f)luy8*7DV~brY@59awmfMr9eYoCfVJV+a{+Q` z@)I}~{HJ{yBisz8AstGU4Kb`VGIZ(;r@)Z}aaV#9l;t&XTykx++1J_#7mIsjj_Iq4 zh|~1>i*^3nk9g+I*CU-+FDBV~V^F^AqflOl05KsEUT;~9zq3A!AUtQ>kM<8M2QX4s zqmb(h{&Cm!Uzf@u%j@VeT2>#jf@moTqW$xGT34^5=;5^(b6^E|TT09g;kU)f)~VP+Q8l;)OXbB&MMAYKyP&o%un)AefIX=J)s zFx#QB5m6GMlD!ph;{vuBbAk%;EX%nXTyBe3EnO>TzE%J}s4px%HbSOR=~7if2uB-x zs1a3_dT3GsJUH6lE5hQ#C-kP2{v0R=8sz_dDiW?DBZf}WHLN0v%pvZaXt`;lW16A* zh#>N$5xpSZ<3WvTL+ay$bs@Cxl`h|&yKhZ@qN*%Dkz=w^P#(ocmoGr+{Nfa65Tb(N zgT)26zO3Cye}iLz9F#XwVqJ~G^0Gck3V*a~hf+$7wgb>eO=DHyE4F#^tgI+f8`GXAGFhnz96SEWehhF*;}njme8Hou%dY)_9iGW4y9>-_;NhX!dgUbHpXhy03utjIoC)OU10bwTW)CH3t5~ z?XY;;c_~9Jvc!e)%I3)tCAMX)1Kl^dJwd#b?ihOoy2Mj+76bw}b$E-}S&nj98s^|Y z2+AisQj?W}^#Uz-x93&WqkC%iXo%k(&+2qD%#vjTY*!A$zWnsO7hazm9*lE+Vnnc# zd%H(7a?@$0_?B$NJ6R@2y#$$QB(Y7q zO{M*rtFlgl|5T6|eRFHFNwRAvU}NbDQ7((=FR`^5eum^_!6U*M192hRbO;C-RTn(` zMibD=!`9Vk9AOowl)Q)@43xwV4{8?mRw_J7V(NW1Ou(qIVY!hR(NV2bdw80Y>O0L{ zRI8{Rvnq?%Y5HPcC#oa5j~G~gMQg#XV3lX-IIB~sy{*QCM{fH-jh7yMk4zgw>bboD zT)$hKoa%6~OOixQlbZRkdmfxNg^(>7R2AR#zvcx0){6XFe=mv9n;*_?A}b{>uZ0(l zH_O*0Sc~_!!>>utTjTQ6zzv!u?r%qw=4e}aT21O9vk7LUga^E{UrGBI0<^`Tx+I~Ef?rglZLQaiS0^WFQQHt@fnz>uYJBe8H)e(wU`_Of_RJK!`AUQu+%bya z<>j$Pt?*?!mOw*oC=4GTR$`<&CbGaXS%-q)zhwL61?nm}{4HNeM|UsnVQXzHOnCp1 z4Q1V>9OT{raT%p6<>IZS^x^ZkhxzB>v>UOs-P7~k1EMcID%05VN~9c;@AVKBlYGMb z1|yR~?-1_%bfHAU@$~6K0Ac{c^gUWgt%3`x89x)nEAC8Ym$2osKx>zRU!^I3JL${c zwL$STU^zGTe%2z3o<#|(DhqSoJ8{xR>ge`0Iln#|YDzPrZ7jm65g`_fTv;d4>C%!? zRw``nxzV+CjV}9;SsNh6ecOY-(9M&j_zrlJGsHUYQEXas%@uZhkGeoNJAPZ^>S_?N zQS{;%yb2{&H-!X0mpwJTE$_iO7G8^P@1F%u%)^q+Xv;chWKy zV{E0iuBK5Y`~CzvNs%9^ze3wAGS5*}UQW(5 z>~HIFm5q3ld&^PD)Hpnknq^MrLLR`DOUbBE++T7eu|x1j)31sYrPJ17$>|U0RI40k z(OT}6HdUwJqLIgou7T?SQ+4*@ZIB;&THUJuM2(#2h%_qi#$9Xf;TtATiQbs0)Q$6( zD_>UPzw?$~+6z;aw@;i6xm{#Vzbd>LOFTBDHOLHM%Km50*ssprf9W&OsrM6IO?9_| zwf!iXv`R0sLz$Yjm`5KhvRz@?5Mwa|wTf5y3|}h}8e9QDm(wa|N zd0>ZtJ-2l{$y`2NiL&Y{OZaT48D$pI$|EvnwD?B1IC)1ckWe6wEM}W4$yF*Z^ic`d z0MbsvnWKlBT7%E$!RA5NhOW-%SjY&N)gK;(ur3`!-yS5=W9DT(VT(oc{$L_=-_(G! zjzRrdi6iDxe5-K_!Wr@YJ6!}fHFf%-2AO2GHC-}76Kuz#A`TSFFn^{V+J^XrR#EHv zxK)9PfcbgN9HZR{9BrX;U(dDZea+x6mjqGIN#dKCri?5e!*(wdzV(#$l)fLe{UF@z zXXUhLBig|MX2}dktF;^D>if{Xvy{ct<6-mJ*9?|Dc%1g2mb7MKI^gkG_95+liU)1X zj{3uGm-xA4N&L?-P2~-^ysYD0~RN= z`?)Zg2LTRt3@rZB^s^q;q4u*Ua}f?PiKTCHMw^V6_ROD0cVrh2nNY?@=SYen8vwJi zXAsg=XCo)ici#nq2j(IL^tnzBiem6A@(_>NXabZY&h+b~LU^s+w62 z=kx6HwWQIy5|+(bGR$X-g4n&IX*ORS;|hJA&HE^VvWk_ybkjD`p<1fGygsppQrgwU zZD>IgsgPMN^eBJ8Cx?q**dsCgb?)%qncupAuf%%@#FIm|%7pc{zBh5EG%N1~H)S5O z^Qm4Ci? xIHt@}7VFdBy1?+)V-Q_L=R(`6OdON|%W3Eh?jWYD#uwA_TL^L8Kgf zFeBRTws;3z5ub?O5O&-FoocK1I$Z4VJDbY;5%S6TsSSF!rNj~J#YxwFY5wGu6l`nN zBxPwAcNOGoX|#UBF=_Z<^kR|@D2MPNtW1vU-_X6n0t4}-V7{U)O!P(-6z-~CB-g^v zzX|rC*Rk%IeCtV%k_q=0@4&=Fp*}49SNez4n_DVJm{*%x8vTdIh3pbN5X|c-G0GQB zqC|;-a@B+Ny4sPFmzCAmx}y$)9d_#|Hxodde0N|^YtL3y8O7Vx%)<}LO(_Cxr!NZx8O z;OLmjs*x77!6h(0twC)o6bP!#vrvz}Upqk#b`0dA8*R>zKQnpYZKEdaM_I$hVKq>- z^QG9?csYq7E1HE{@XTWRrSS%OA~T4VSi5 z7eD+U{<2D+(JIM>P}G&-CZld?+@^`1(&Iv>oqOd)-~8(w5;x1U+K;zh1oT?nh2I`p zd8p0HtR!dPG`-bTEpKB)p)sqG@{x2R$2gLlueHD8q!tQM%6TcIPll9Pa4 zzoN`)F#D(^iNA^c|E2Gp^yp%{?tgFNeWUy=b?^ZJwmd|*YxmIjYk3x?2S%SSDq=9Y zPCr;Z6ztOIV0Wg=UagHP`Pt54L*r9bpeEa3+8Z~)R2TtjtfN$=M> zZWqV2w^f2Ww{&U&(vAM(K2OKxyxyg99Ld+CAyHzhiLo_yz0xDnx3mf9o@O~~Tte@& zp?@$sMmS?J4P96DH^Vbgt!b~SK&ZgB^6Z-PmXniW`}j~VP5 ztZZ93J+yD%V0UhDU8r=6jGy+js5LH3Ol{bAu2Sdzds91Z-@FG4TjJHL-#BIXqZFq{ zpis$V1V5H0wZvBvYXvX?NVTla#0_mN#R=1n==ogU9YB!^4{~;a&Aj|TC^`GeS6Hcr1&4GN?g9= z<5NTx4sG0qikCr?dIvb^$KH$Mt%p7v+Ze9a$I*V0JwK;AyN${v+Q8nbyj%A0 z>_gC8#;8AmQy4Dx;#lDT-bKLkYOlgQCb62DNRst5ooF0Kdk*;;WE!ll!Yw_f%F&a? z!b=uA=KIsCK{B>0L_*SO^t97`j+i>x&< zHtP4YRZ8)z6?LifIixmi8gsJNCI-v0H+CW^(S;Z4y48@PGO=1Ezn%9V-cl$s6=ycL zGvvJ7cS=r){Jem;jZ3(EgrEEZ;-4TfQzr6S=6-{fcAxg7L`?$QtdytFbJABvA1ytR zqKitng*k=~AV5D_xqb#U^PM_jgSv7M3jWhSuwX`g4;TM5jLd zo}+fTHR$cb-4g9xPj37Ui+O?OCZlMLtwcZlCa%3_M9Aa(_^!9;YMB?q!=e|k;p(JE z=evmpBDrLXK29NTU-HQ|t19VNx;4{MV3j>} zeaz#gsuD58xk%Ox2=nLI*~EHD0RN3>P)5YEc0cj5{KI2u4jBWWO)xgb^z}`V#)?yT z1vVQg+H9sT$H|;-NeOY+)i*gbaqO0u{gR4wN+K$U^Fekw z4vjzG(C8YCZWZ0ZWLbCuDtE8E;SoWq~9@ zwM^z5!5@W&BuX5uxJm8oNE!o&Qf4Lm@ke?>0In5q2muC0oYBd6mP+A!obm>WnUVgzOZWySg-x?j-e?4{dyKF!LicX z{!^<>eg)Nd=P!H5eytHy4!CW273!*MKaH}mT(p;R<4i3#Mv+TMYei^+UcE{M$Uavzw>D<$&QfVjFe%mC$SiYm5*rS_ z2LaOl47}Zf@!`hSmHVs;eSKzhgl9!qh*Kmp=#hJk%EBiE_mxFwjOS?F(DSC(zU@o+ z#t!JLH`rJ`hfNN;ka6}OznZe4ZTV2^+P|&N_vIT%aQ%+>^KuJ2kv#Y(`Fc9?E)K+f z>+e`sGYMK}UkFEUEQx*Rv!M^DK>Ne$dG+llRaMElo0jU*5*Dp z^Srly)7wB86`9IPl!HGCUol(#yRm0NB;Mr}uU_2&yq7+0^yXj$Cuk!WETg-SsxmI% zes})1qMJk-ndLj1lHb_-7<@6(N_tv#C)T3BWjQxlc5A$zxd@Pve=K-mdc^YSHs$L* zR73jn@oz_6;*<#AGiZ(y;#!dnjW=JR8RJ@cdj2Rl8>7XEJ&#NdcAUBr+DE>A;F%nI zWz-U<<5l1W zCwH#aGhAq!1h`|W?6bSSeM+RRo|dFw(hfpquT|uu3|lX~&HJ2of(91$n9z((93 z$oU*HKAK*iZWI|qnq}o>H zUu1-dCgy3Ec--;0M5H0W%UZ-)yGC6qYnnB!@zqw$`oRLFNtzQlRo?$jnMmgY^aXc&wPIRh+aCdn#>RhR1O_N{AcZ%0?D zHQG1Z*VIx;^Iz87G)e)=@vE;HHeI?e&~MFxp}UMNSF$#`ff5W|1Z!%|rK7B%{MGo6 z9#=eWGOVZLcxZC+RgE*}&khUYu5dX-(R!dr+E2cH_-L8vv0LEyQX#h|z*jf{e|Sh! zHREZ;S|L8|dI{I`=40%u>>ymCf z)a88Dagd}oi`+fkMqV>7v$DTdtRFA5l@`$IRSwd z_bd)bsTbN583w~9w*)izp3BQK3Y8pRdoXYS0ee9J0K3kR^?*E!M3sqJoNdo+Qy#MM z8c;GZe^Q~ zO}OPliT)c9cD122ZId&Q#9ak2B zmp2A)kfp%H!KvW&4vB|=MSLu?m->ZwPn1XMOAit4j}ZhLK&7wF5oQigT&BE(WqI{X zlj~W#;!}^|hE5`HY*#xMmI#MrlOr{*VjePTx!N+nZ0A5WlXw2dwQ6pZXy3ldvG2@#*L)gm_Lu?!7^ZtpLf@iuPMVF6}# zrP9YeIZq$PUHiO?s)Z}>qmSgUA=9J(M(B$rF6m_NPW`mDHUzO@T*5v*f+kYEKG-;1 z3J1QMssvw5XN8W)=&LLx87=<6Won7^*IGAJ;vREo6HJToy^l80lRn(n z@2}8)hN9?JL1%=^6x1)B5Yel;p1viHv=F zJ;LoHvvpO|%<8Z6f3gk~>IeXuWbno~Gi61p@~zxP1WoYIbpMiI{25D&|h z@)h@Yjb_HDmhtzKY*9p7YAoaU&MfQkX|RcQn6lS zaVn$Sx}vha3i%7#S`zM9LLYt8#AAC(@OZ<8q+uT|idm8_KI?lrEMpSR(^oW~-w((t-2q`;iv6_HE~EsPSzh!84!6*4w9tvREiO?v#Bxlq{&lW5V$qVFje{rM5#`AfXCM!6$#bu{EKXjj6v`oR}rClF&`9N!{+g0d5zB0Qft*W2ti)?_5f6SkNsrK3E zQx58Jw@cyBX{}B45L%B^Kbc-$uBH{S^_6RuZNmN7k{+s8uc2(>Z3vDi2u^A{!LW8P zrIa>jb_XC6KyMr)cbTA_`YZ;xs1HPa7e1&T0Mofn+L(9O7*2cLe7`^LU0QKI- zi5h{IDJby=Dr1>yHg7R2UH|O7fB1{@PO)tRy}W8(rvRt#%TUEFdr(QcCwW`l!^m7C9_X_^{^ ziVo_hQ=}gW7L5_-@S7)%In;5RzP&U5y+vMSvcawi(Ftcdo*`J0%s^yg(wbKR|^ z8XLnRtLGPHf)ONr`CTcShNGUuF{6@JmaMVVE*(H>{0eA~FJiTlt?8$|p0yY%LWAgK z9&#y%r}L-)98ylhlan(R@k-NLl4~90_8b~9&*j+pnLo$K;mXp)$Z{Jscd+(l1>~90 zF$mAt=^yiNh`ax(|S59 zs;>GOIzB~pd&-~=wG*sGCL3996c>30+n8mmxY%n6QdxR*YJ+Bez+up}(<=}UF%p&C z9YxGIRI4n!x%&)1%F=JjaIT5&>nb*u5lVNjxE_67XsbF$Q-84rOGghzG2a-R;}C;{ z;D>LR!yWdQ^>b0JZ0D8?nrL4x$-lDO6M+(6PBV0?KUu%rGh9CE!K$a4|bD z2*sxOrnJJlm#SAD+MJ$I=rtc_g4ckIM_m%kCk+HfHz1K9xUZ5eH$J6@{}djW`oWAW zB{2JbeEEh6n-sNV56zM^geLZ4EM&t4i+GFJ=C(iE|4jKMTvPn~u&i+nq8k?bJ8Tg> zuSG|P7u(IO!zXzmJlFEGF;C8-;(7M?vB4|!q>LhAp~ZR-X%GL6%W^;Cd~eq_!^2Mm zN0&9xQ|%+N90s^;V&4F2nw8RG{o!hDVJii>9inGZ<))YK3Yi!fdwV?)u*H#weOZSz zYqic&%!)P4zw4Bq1)hD!fW$L?)F?k8H5RFsQ$31^%hr>#;cJX59u*#$(duE;W*|bN zrhnkRF+sY52iGELXeq)v!nHHGJ7#-etA}H6Tvp@JEAbpsGbn}-5V1k3mYbHZW!d0O zaK>45R+;X;suzZJd_^t^Xl7Qb>y4y+mQU|?EX~iUuaBYK=#%fwa?79%LS)S;nY7>q zErZ!kTW-{*P-isRmt9~wWn$KI5J^9z__VPD;l7%~?AGghF1R|EFM7S`s7ZvSmQqtV zFrjB($3yO)cU*O5=6Cm5vf@D({BNMCOxl0Orq2q*W^Yi|`E0zDQ7dDWD=a;b5aDXk zEXRiAJz_xvXBSJmN6?FvmtW0XJ&j4%o5H$jJJxYu6wOVTU0H@dQ0g!qu&dT3dC^=M zLvfEa#mn;R(33~;^+xRRA*wypxl$-S8;Mh)sz<^NNbFkzMbcRk1C|$O$Y0e&Ln3o@ z%8s4~FQaBv9GlHJ=Ik|3y*%o6PB*DC?IJWz(;+>{>syRO6C{X~sjYVE@nW7~7ir95 zbUM(f;_z0(6ng(mGHY5%-sg(FAv)pnTjeg-!=r*Nt=v?vO6|+7(>YXod{jZVYVH-) z+U|g4W?d3i2r>SQ^#|4m_V&-TZQoH`8|g$|VB-&OHNYYZV;WrZESz`FV;EE#Zq@T| zB%L1@(H(Miz6>X(&#b~309D23oz8m;6p7tW=d5hzOzNo5hcVN43E#4{sqv!ysCaK( z5cR9lj$gOxllYX<(!$lzA6-7fx@*rz)Cw4=i~prJSN+j)(uc((WGio}Fw)Voo0mTy#kN7X;5MDrv5-G=K~zGPg$1k% zg#~mUKgipLcVCm~{u)^0Uxcc^Bt&|ahefob_bS?Yo}yOsG>yF|t~3H4AOBqLElfE` z2yISy6H=2|SAXMa&E=6h%1l)|N;TS2DHPv;jv8xj53^9J<{_J6N}Vji!o9eC zaMTNstrvf85dhQVZ(5eM^SAZLNjuCcwnxZt=Z&t7&nAz0Kc*WR<6u7jL2Y%g)$j=V z=FzM3w6hdmGx=r{BcIEI$O@b8Ymb3Gf4D&GdHapIZ+JA}F~Z(O%fPA54W z4o2pEc`YhrqPm8kZokc9{%Q}LK5V+VSokae24D(a#`ZT0y>zq7WpNfZ&skvT2hdF8S|`Vqt{RNu+gOb0 z484lBz*>DLPD3z?<6M4L;&LNhU==ac0c9>sCb7eMY|do~8gq=w z&7Tl;^*YEN>tn_x-W|}8*?_1jff9nRVgRrKB^HK9+%3V%ajp?yK<3^pF5{MU1OfOz zH%h{ewKOcI*%NL}J3F}7M$-5V5i~*1#YuG9x4;y4m zh9AU}d@%4ji7~W;^tyh=2yG7-8)hFMjqy~qq0<@J+tpWWY*2D2)amoUqet&!wsyEb zIl;WppwSJfw(Rm2{|N1lPa#i%1MgQ5+422I;TKbav zTP+`(-#m2)7vzznd&@o3`l>Cf)0p7qd~_Z0O-mdRKZUxo&h@-}(U+lcWtE9+WHhAM zP%Bg6wrH6f)okNktK87G8fEOO{?4vaI^6^b6zO4nII#1P{k$X?hbr7S93MvtBq-c2 z({_e`xB3LWR^O#z9_-oaO&EV>GyZw9-iO8O)yIuRRf2B(=FW9v>(KLDmo6Xs4=0wJ z&I6bh0us4i+LFA_*d~#yQHeS|wdQCHHsm`L{0PU2K(l~uwbBr z2iRTa763h@1g#hrc5nS7X5C#MLCI^rL>G>ndS+uuBwjRIX%5ox?C`oCzI?FPjQ1k^ z3|a*>vk+03Y`VD((w(>6_3#q9y_osFVY};4>DKpj*%ma~4@F0-bFa!#iWT|kf zu&B(#ai2#W(cf5EUx#uRSG{L);V{&aT{23ihpcuXFA83In;qT1pOW-^`0LX_W?JhH zsq!luy`iyH8JC_>vIucHWo!CM6Vz&KI=V<+h28I_#bBCIbNw+ubsELvO9-hO^Gmw3 zpg1sg26o1Q;VZPrJAh8DyCc77p)>ViU9G&(vY=Sx|7-6&gPQ8rJst!p!9fs#&_RMA zy%zyNQ6O&w1?dn#X+j7+O0S~y5(E(uQF@n>&_O8yq)7`U0#XD4fk+7*@4jG&HafLRVxoY3X`^Q^qMq+QcBKh6I zTBWH?JXuz`$ELmAao6MXJeP~XWgcHX?qf^R8OGA3XbD!~_Km_fs-aqoM%a)7p+Zm< zql)VlZ2V+cw+~r?b!$bjJC00%Yh>g%4n5(yP z#7^%W2$nO(RDu*meplwfM;~Ikm4Oz~b)ETo;9BUMT5}LsIzoF@XEDmmFhN6`MTm?} zNJgC zNc4H8|27Pnil*nruzddDhZ`~#K`W_I>v~_|8FmR!e(f|Vj{TTq8(ZSCu6Wb0!FC0v zw49FFYBOie_8e23y!Zm`J`NTm7kqPjQI)ONcG2*R=%P-)j~zJU znU(?L*#TEP(PIDVt9tm6=J_h?Lk?X2yqP#QZTtRQw36#*pSHj(T1}dygee0~hdW%C zR*(fX>76EfUfhl2!`bzNo+Qa$@^?8?s3bHrQ_aJIZIU{n2%+s2oNI=-1!;w;g1==C zLyZP1iO1z@LD#LFHjm0xY-XyIi4A44{lb)eimN8|PeM^k^+P;zwao1V!HN7R8+W_? zr@qKAYUOTs+0HAk%?^UXbDU)13NLdfCgGAZK758^YIKzO*!zDsIGz?g=Dj(3$00l4 z+)6?^CXy8}NheTRE@qQjS~(JVTrn3!cfpMVkXvuUYqrZ;qjiO9x#W1ymT#BuQ|u9~ zu=+!so$#)wey7o0ym8JG+Vd)~?D+LS<~!l;U||>vN}s8x?vr!qvBQnbd6UNV$Erd= ziT(gJkgT3L1QSee9KX86%>nnc@of2)8W$-CK6bw+!yW+&nn&6x}W|K^rLo8A<8izGgAVtMV6Enypk!PdOzveR+h_@4RdK zMeD_T9@}#rY1{LBXCAJa%lO#8G9rzBt%nT0NtJ0(Cv3!C^!py`*yJsDn?|6>N9a&X z1<&SD+OrZL-)&^f7z$Ivpu#IyU3P zC+wdl1Tr#TN+UYXQ?R^!iF(6!i}TZI9^2~?hBX1FV3gnG#ea3BT8>3e&Y~shu_Ycb zcX?&i>XZ+nisNN(=|MU?d-6kL>cu}mxjrpzsn!p>4)t~j z|K)kU5bd1tJ-4<4^-1sA?L%EvJl7}u2bM$z_MCxU=}+l{6(eF;mEdYqD~qZ3m}ZxA zB{4|=hQLH%R+L*&f6sPS2@Q?DVS#kwi#G!oe<)0WoJc%>Pm|}-aWB|SJzQS$Twfv4 z!osyg<9UnyOY=U655T8&9j!``z<3 zSKpOAYxlfgZ?uNP7F^q9n^UN+#OXKXI`Bv1Urnn7?dExUXmH9prw3xgW(I87cFtzS=H4o3e#ww;FSuzZU#XXOqtmiL8B*vXxh8KxyCIgxZ1D?2 zHya<cLyA`G4N9O9OgBSQBo%h3hA z0~V(20i>h;;U1t{=~_-^?%e04%^JcYv^H0bZBK8cH21)34$oL$NK`g<#Saga|ObS-`kwhhkty&K-YkM*m%Lx0UsGe?w;2YacW5 za!Kafb!=<|vi@^Hq-iAdG*3S7Zg=_ZGUv|L^0NtO$@7S5x`j+&r-Qq6p>B*{9(#Ji zL0%moUvlv<#ZTqk%ph<2RxwD=$L@^gCh>NX@L`W=e<%iHYrv`PE4wAR#% zRYsblsW0JNH#4}3ZR6*6N_A!EixCn-)8qxqsT=2Vsv?MsQV{Xj499YF5cXfNOZ=P} zjk?yZ+p@%n*~q$;gU`g0&{1a-8%=!aaoaz>Sh-{l`m3cL=J}Auz+e( zv$#*QJVDL9fEOPk?W;y!$1nHZ{)8|GjAm4h(vOl|o{z^8aW0?Zh_$7Ez0xN9rmj{M znLkDB5XU~QQhrHEEb+7Ja4=?%je4-JAtmD3-|#Ttkk$rt`In_5wI3j6aczU|v~!$& zskpSSWYRODQ1dRv*q8>)9!c`jp4j1K3P{gQAO|InmP{M@mifE9aL~8yf)-V6P*IC0 zX8#%xf8zY_AXs%KAoiw=K~GnNDVZ8C<<>kAt5(C5mSXVY2)hfWX4EXBo%~PA$FT4> zdw#>$0n=gn;>!9$Vdl!ZwG2!lR(L>zMhQgGy;JHeeCm<8TD78I%7}yE3w`2}Of#*> z3kqw^P&2j@+P5Q;E^c-$quKR9$*$NPO}`IcR4{(2O6+PR(L4Y@vK+u`FQ3vV8Cdut z#>7c{BaX-!8FNO8!Ji3Fdm(@LNYXaX6oy2J&sC3ISn&^c$2;XvaW(AlMS!($dPGkG zBLI)jX{U#~VDFM22q<<`3B?*k^o91K-$O zyCxkPpJ6m9d@6S|Y|64jy0$JBkKr@T6De(^NTm$ZQc|l#Qo=~wk0Zq~orVMqz2lkG z#p7P>j6{>yR7+Rt$rrMj zPrv077@@}?iX&aDZx$qJB^L|kJP7mgSkRJ+G|+n& zA9fh^hLx_F%QtAp&y9c3xpi5{%=T=EUfkK^53lPMceZdrbD0binZ%J*($n~Lyn z%vFvnew9wmhA@=cmxT$bNek2#ls>L+OQxu3!9Fb%ldbanYQ^0^x58z@7~l;_t}9Hr=)#NZr;zEg9STKV6wE3#-_MbB2odmlkw>Sy8Mtj+MFqVajM@ zW9JOt-_upS3)Hn^j|h^ehuojMu4TRT2FEv|m5)TTf#61V zdz_wfq>C!@*|4s!OuT1$J}2nju7So^WX-S~QH}E^Zn%Wc6eXUheI7Y}c4?>B`|ryB z=l|&cWlN*JFzw?OBkG2|AG5{j4efJiY8R&15?B}LvI9Mu25Z&G%`h!ha#mTW4xU8(a@;0$aV$R~2I|rla z1wAkm7I<3G(`XlBVBq`yE+_W{xZjTR>1}GY1R(j;)AfxfxMIaE!)fn-&T!$Tc~QO4qGSObbIX69y!hzTlo2NNHDk)kP^&5In%bt{op+b zKv+a&(FuLGN|z9<8jekGI?^+MBUD`Cm?^uGqUe}r-$L#Chp2TrV7B?wmeW8c_8JA6 z^#-=&96LX*i?7zfNK)XG)?Bvp%OYyTD+5}7Y)$m^wD4>gl#a`zz~}}g2&4pJkp4AA z{cnWc|LG?~^JBt)ZE5PTit_5`pL=Khr>*SwublxGi)YGDutzscH8tkdd14>7IyW8s z0IgcL8$F`b_@`e*shXKWMYYJ( z4_n$Q6J6#Z$I2X>=P8#}kJt~?SD91PS>(p)PyW*h{5+rHRf3kvti086@J{)hNGk^o z``)%~Gqcgg*bk8T$%PU=4w|1I{Zspgi)xv@dL`NK20TDv`<@-_spxI{s1Fl^mkn;- zey}%OxIDGnAHh<#h>G(bLy>oouN)CxxIk09=c(h6KaKov9&nr=jNj8WX|X;=?nS?S z9NNKkppqh94BNwpy>oT$e_yZ!lQ_wIU;?gsjZr#}6}@x3b=l{xmp)gDLUkkKH2GtN zK=!p^{gvn4bq46JUS;VooNuk9{^`Y>I6T!qu*;4Snz@wu{~dq01809s{1;sIiRb_T literal 28579 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

    S>?bO%G35*hGsYB)EZxFQ-})Z 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 diff --git a/STABLE/documentation/images/TwoNets1.png b/STABLE/documentation/images/TwoNets1.png new file mode 100644 index 0000000000000000000000000000000000000000..c425132ea775ce53780122c48998389435f77896 GIT binary patch literal 21885 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 literal 0 HcmV?d00001 diff --git a/STABLE/documentation/images/basics.jpg b/STABLE/documentation/images/basics.jpg deleted file mode 100644 index b04001249b857286a1e2ca7258cfcf13bdbd2602..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16042 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 A7XSbN diff --git a/STABLE/documentation/images/basics1.png b/STABLE/documentation/images/basics1.png new file mode 100644 index 0000000000000000000000000000000000000000..9b3e58db55a699b8dea7ade4f4553482b633cbf3 GIT binary patch literal 20322 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 UEqSJGD#QQ;p00i_>zopr03F`JegFUf literal 0 HcmV?d00001 diff --git a/STABLE/documentation/images/dmz1.png b/STABLE/documentation/images/dmz1.png new file mode 100644 index 0000000000000000000000000000000000000000..a5454ebffeb903f6c28f6a74976c917c5a3f1797 GIT binary patch literal 26287 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 literal 0 HcmV?d00001 diff --git a/STABLE/documentation/images/dmz3.png b/STABLE/documentation/images/dmz3.png new file mode 100644 index 0000000000000000000000000000000000000000..b7d8b23fc5f5c403e571f51c2189f4ecbd3e9bdf GIT binary patch literal 28424 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 literal 0 HcmV?d00001 diff --git a/STABLE/documentation/images/dmz4.png b/STABLE/documentation/images/dmz4.png new file mode 100644 index 0000000000000000000000000000000000000000..6e79d5d912104de9feea3595c1c801ed8a9856bd GIT binary patch literal 31790 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 z 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 literal 0 HcmV?d00001 diff --git a/STABLE/documentation/images/dmz5.png b/STABLE/documentation/images/dmz5.png new file mode 100644 index 0000000000000000000000000000000000000000..ffd5b9bddc172aa19ad326a0aab909b5e504d561 GIT binary patch literal 32715 zcmdqJ^;?u(*FFvdV+;IYIpy^eIlarD6(TqDERk{N6I=6h=_bS ziHL$;5D^`MUj;1@5qSv`5v^Dd5lJKv5z)D()N4x-5d~_f$lurVG5g)9*~zcuyZH2i z;pjCiisR>keIJiXYd~a0> zm6K6`Uro^X?Ejg;Ve!K*-<6eB%Y9@Cr=DF(k3p)x8W6xwf=d< z)fd_ngffU=Nsz@f!h=v6_lyVb14&v$=uzIGUL>rjfQay^DiR2bgp}cvHb_hmWmrg= znq=jjy9&f$#BSK_s&I${4-rl}g%NUy2>suR9%yP4K`pS2Rcv#B5V^}82)95|Xa zR0E#6Y`s6qGh3P(R9-Rim2z@c=bhv7R82J_rtaveo3k%>+t>MIyNn4!Ij53Px(hMyM*3RUWk#UtM{Z5>s@};A`j(j- z+fohj_Bu)h((W*o;R#!qFoae#RQY2t#UiJurFk-IF#XO$dwWeatAVstw5&Phn;%J{E*(xCwXA?`mDz z$X>@4k+00qut?@UWLRoJnp~*Ms;OoY{%3TDL>sd5Ig~~_oei2~Mb{Iv9HxmydER`6 z7Jqb{6m1x+LuPiR>*Iva+7Nm|Ce~H`r_VrqRsQA7{0s4Joj zxcp*_!JSJax3uFSN~GA|8&LEpvc8uJ7N?tTjNa(d?m&L~Z2g^2`atn?IM~4V;$*i5 z-(G&nZfW-V%G9)uC-N0hyXfFMgyaXJ$I zmgG2vA z06t$_-J*e-Mx!;#1m!WZFeLUz8pd=Vz~RnU%ID`QyxR4AB7U(}YN|YW`?tNF;ly`x z91|;Yh8;GpLxkq0vn`8&tn#>Ws@L5Xxf>WbQ7l-7_gUZ$h3o)aE@DKLy@Z6oA5)vA z{(5B4)zpIAQDm2r!)yRd4Pk@XYFj8kA6~$Efwg5|VMhG#D0&OQ5C{jH$kgC7-AK;l z;}>=aK{Mi!9Qm?VPFPV6(R7T9y4gn`Qd~q7d7M1PmnH}`6ecusA43JimZ>#vkbKv& z5CG6mwQ(UCQ5FW#ZC&WgQqoM7Vh~C6JJ}h26sB)vJ7c3XkK$p{HI>DD1>*`o(?_Js zT!!XW;0sHec>LlOjM`;0|Smi0Wcou+x>9V!`#sz0|WGZd)&+=pPT}KY8lh->hvU z@R=7$%`p&?XU4vGbF`|UI#+7MhM%MSIYdeSF9p9L*Y z5jhqui%<~IpXlYh;E3#&D}D^N*xGN(_B1X|8w(0egNW;HbF}fArNP%n)`cxTA0%({ z1fQecb#r!w^J%^*vYNLQuzen`NQ$oG z7JzC^69NAuBf0WJJN+$$u@X;gTWE*;guHl-&r|`!b{6~Qpb zMG&6G^cMM%ApU|-7Fd!HD)9CL5Gyd~_3q3TS*Qg-ngI)$M+ny&U>!n;UjpY+CLV#J z#kCNv`tT7wu&Y|rt$bitiTswoy;Qq{bA8{J+ZWPt4#s8pO`_*eU^x*1f{RN&E{}j* zGysSI_Yw?;;K4LtN+mi|C5$^z5KnT2_I%K^n#2*msi0L)zA2(r80Po^*pFPXV1T~k zCBn5JlV6fvlf%e?3XLxcX(WTmgarwts$scMoj4{oo|&7l@$(t3c?m{B3K2w2MG#~e z{`Xs%%W$z5Kp&nAC_6&yA?DqN4ZkY}MNS#-N(FTWg5$`=N0czt0EWyBNa;ov(8}qg zFeX`ma>cd5%E0-3{%hcQrr`Z{ zdrDnISt8^+>!L!Ou{0OKru87c%ADi#3)Jp4^Dza?ZD6=+chrbHhMz`EX~kxuI>X_x z?XT*~q=SA;764UB5b7f_-7bzm^Y}3x)ZpAMO0}|32qUknrymAokUA>#3i1p5dQ_~V zmkAc9HQh_7V5oiTE$%IrqvmD8o_|A0>f?aPh&r7Sv-QiOYf+* zc|Uqb->oz!^DQ%aRAjRE&Ut92uV-CeTa`A*zXV!HchfALX;0ZvAj)biR3v@;MhVtxKI712f z&lJnD$26PBN(eMwD_t1K$fV}z(6)F92`kmS)4cKZ%DpHfD7t`;bcP((4eSt~Jr4i= z%V7F9et~)Uh!rLQYs_L@DOp5UPDd)l6eUt9zo<4d2I|3`1N?YvN4)5fWnq=70#J1PXFPteE@~4*I%c@pyRY)CTlYf{=M`69NFoFQj)#adL!W3( z=S{IKS3ql8|1$R4EUomdl9o~dEVfCZ|J+WgX>yoeAvkOK3}zqQM*P{`Q?7R;Miw#X zGlqf^Bo{c>;MMv+88*-=@x9h&j%5f=J-MFy4delEt}3S6%SUUlrI$#Gre{y*0%tba zMsk*w<$q~gB!QJ$>m$4P&_G7i^XXn7*K!4AZJF&YekrYM&<`MG*^9gO@A=d0tJj>J z4d8zU-al98j{Gz|Ob;9yD_piSciz$TPMAs`zRt#@r)4K|x)3jP5rQaS>B5N0l(*iw z;4>GMdPf+5knOAYVeot%;96gn6b5>D(i!U;cE4b`G?nXHkop%cq{w2rKwKxm(mef? zpaJ_Av1w=CF-Vi=WKXeObChctEk?i@m`Ug#)D*M`Ah9eBZU+RB7$A8hG|3&DIR!vm zRxwB~@0gw2TiWP%FiRGLlnf$!N;k^_OOXdNm(nZZoOu4st(yjHzRkuxcf7Xn zYbsU!dQ%48&>SUwFu%FG$7z^0&l++OzAt+(;NWEad#Z4Is+1NHbk~pwZJDVA3c1H^ zUC+<#zg71%WrW8d4~f|s7^c`bhQTh4-dmX_K2IKKV{hBfV|6rIUGqpc;f-Nxe>pk~ znF@A7lVZf?>0k>4Mkoc_c4Qq!qNFWzKxOmb#f^IGnTbGD&->3Xlyd!`U~d`zRQn=@ zmPH+~3bw^94d9y#_2Nb>;$1+*t8GYp)&*KEi$Jg_s=0dO`KB1<`UI3>$!Y#O zmnGrL-aOdZ-nCZbkrFciz6Fq!UZuWv3lM?!XNSwki)~I*2-N#N9wDCUwUJtN9C~ld z7>s(S1mjC@IR)?bXv}*0H9(B}+Y7L1r^EQ8DF!QSRFnVHz4u=o)aM#A=dXZyPqN6b zr?gi+Rzx2-!s~H_V0w!T5V|>Pcc4isb=-(=JCp6tQ3UzaAoLpj{eQ%P*IXZ9l7Xh- z?_O0YTeCOo^ekD&95VAe_ZlCshr^XIx!w!;COO;_6n_6?HWEBM2y8z7L&4LS zPX`_D1+u zcshQa7XvI_e~A96#=4V<3%pdJY|Fwjtm}clG9L&IuWe>}YZi3dOF;kfEe#Rwf#{HP z;VfrU*tCX0O;**yhRuoVXx8Nltuv<&f3NV*?u06xW=OPW-+R>LepWbo(QK=3&pWc8 zH)dtsvGV$-zXHOR%S|Gc=Pf5{(&zUkzV$9|+OnBI;GyhFNH$(ugX{10MR*_sX!UQz zAnzTyU|CL1f8XUD^HilGHY?*w2Lp(!D%cvcW+~$PW9Qw>{~)yZgPXbRx-_o+3t54+4M%s~ zxr+a(!v7CJaxX}ArO5%kK^7V|w`^18o&FSnJ&`-dJ05_Kzg~adw)z0ksBbv>wvg2) z>X|r3y1=U!)PU!~kgy}lDnX2g4Dcf34SBo6g`Im1YV{4LTv+q!^83|1CwpEO(8e6D7Nk)0c~R`mnX~ho=Ff>M%PAJ$ zHs$a*?aQvj@F*Lh!lN_eDcnc_0Khi}+EN(zbn?uTYUKjDM&uyOw($JC`yVL<=$Q6$ zDwx>vCm2fg@v}?Gf2$&=UMp4?1}r+BUkAG4E(4E?Z^2N)M~p$bj!%CbEr&?Y#^cU5 zHpf^zU}v2V&Akh%%6y z@tf(dL;exLc(%F#b6)BftX+~1L7`!{Z-xJ_gtgguS!kT+(*;TF#X!GAS zuTTcC8}xFR_W-gr1epgyl3|GD%r8;R18dSz$yB#N={d?h*vkhi0_Us#&bSG8(KJp} zKpJCxkaH13@wIz`FaK$N4_+Pgvh!VwHE_O>;&}iqR6w)@U>n)a+vW9OPZwktgKS#6 zzE{84D8@}e{FbFF0_07(vszI73*G|vj!AUL5w3Ye4vMRaSBo-Qq`{D%Woj3AOHY2{ zDb5ZzW7EbbQcgk0luU4}>pZ>z3_0+w%^;iJ1Sd;K!u|rH|DD7^VRoY|CKzv*hB7<5o{X z?fh_}nVq2zH!=h>+`)A}kB6IXCuQRuPh1RuKONJGdUCgii0+hDf;XK>Td%Dh9sF~;fT98+ zeh&^oo&Fix>d&P3!haT|G{BjVR64=kMg>kK=E4IRNsZH zA6(kGSI7JDk^Bo(hZ`Qn4Juq}uZdhsEdMObDP6`M^n|evWtpEt(P>M|+o2zOdHgeR zW&5lWeOo6}by=}#cS+(f+&d?rDm^rR6@&COv>AFIm-p~FINcZg>b~67hRk^c+ts!p zgKB(7PDqaM*fwwXFT4p11QmTiQ&W~nX_!Wp$Ix=DW@?V6t@==Nlj-&284g^iTD?Vf zjh;-qExma;40I5Rd?c9L;e-kW(+n6KQQWddpgOYXr>lJC#Qxo-2GoL%G!KTo12*~m zH-C&>*;v~{vYg1}sL-MA6mjrRwb7w5s7MGC@8M-!cPgsjHH3z{OcJLY?n&WtRsBOW znROiXMVw3H&QF1&^<#G@35EofdjsSN_n0AA^RxPW0V2eYn=;xfo#Hn+V&imt|Gdwm z-y5qz(vkwX2G+q@3Bf2H*uC0dNF~k4dlZ{c44d)=BsVTQG%i1e%jM3Cc*m}x9J%@+ z1TGtKvUk$lxMW*O#^sx*xqZBR_x|^vTj%0kf1u zW=%<}Dy=j$LEUM=dgaw^3H!_y9+FJk{MOzfA{=`AW64kIZ zjiW;yOQ~~>;yB)6ICrd6Zn%`K-E`tMEd~f(Pf6;4D2qDBY88WFsnxDu$BS zL-PwsgV>o9r0?F^cx_;r$l_Y&oqs}gl&im&2UY}5#T9~_{yAj9r}_7m*^K%$RUBB> z7)vJ>xF>xMDg=rmj71KQV6?lDiB-lvsalOxe_;k_#_2vetPDpP^`YiGPqyBP?lMok zH+vC;DvAE#W65m{vMF9V`lW%k1quw~*eVLp)ZVjtx_3|dd(q$(-iZeMe)tPUfv-t@ zF;Ob|UY7qsBk(eHp|k%{)>MILrSN$5Bjf~OaVKW$Mg0y)_XKMD$28C(kRuE13??RH zCuF7{!(8s&sxks?L7Rz7!MEWfN+7ZJ!b6S0Z5|Bl#ct@WsxWW?0InUx8fU4%#VPB5 z86vBD(-z#q^5}t-^q-Xhhk|;XS{iyycK2Xmb7o<4V@7<3o(_Qk(MG*}5#2u?jn zxuoRTTR>N-HdJqb-FC(7nVH&d#`F?}Trw3#M^oZ%R@%#5$c<)Rx1p09aJcWne?KSM zOxy9WAwMR`Q*j2&4;Ig)V~>S#UpEHR(B}AxaIB!^}V=?A=Q=Z}mju z%>}CW&uUFpng7bKIn{MXwt+Z2FKk|s)J}kDjQz(9`-W%v+R#I~*A9^-Ik)sUpIIjd z>fgYR<_C$$F({+J1*DS>vmVM8^t#u{nz)6byXWn`|E%Yz19|bsiOFKtU4vC=*zvdE z>?0H@Y`M}q@Acjv-?UN~MVZ<>D#fi&gnxV@kQ%SfKB|!2k2h&W>ZFhLwU&nfggTPH z_D}(HjuW&RA-@V!E5esDp2fd)=OVt^c!Vmkx7yYo0?qizZN;G1Z)*9u6pl^5A<;MH z_`N-Xetr|}b=tl3mqzv;7g(0Ot~EE($&<#$r?n!5lgBpL^oHL=p!8Z8O{)TjLU0a> zZr0Y5Ie3#NpXz8w7PeU~{tItq_+_ru0%n4<1C4byqhaHs)m4Tx@2?4MHE$T&kURrU zLhro#-+yGVuQPygtcCR7D_7t=qC+S8eq<_<`cH{ML~yVDT2s|#d_2@Vd2e-sXVhSP zgTN+PKGiPZTNCfOgDW8&IZhjV5Boxnefi&ExeCI348+90Vg4@#LM zL70$HCa6|A^M3`$e<&FLx{Ku<7XxC{wEu6r_@p26+suF4ml9CXGAtP=@?E`DDcn}_)V0?qr**bdXZ(%)E{mFQwRNwbJ5SS5XHwRO1mA_^J{w!FEr}h} z#UHIp>$hEOw#H7joq5zTzUNu*e{)X|Y9&$Md*kz7-*@NlF638{ONvfSlEpf3_wO4f zN}f`aD`l)-SmnWE zoENt#q`|F{HEf?Je1AT}k{q4rU-3hi@~^$u`Ce3C&Q)IK9*e41A;Tq|IByXJiyco9 zEJU08O*ou}wPMx`zFKsS^x4qqe--O?Vrb~Mj@cF(Z$XMGm7V^beAP}Wo$M)a_7^zr zv6V=!czvmVKKG>r zz5ff~{9%kEe>;bxAj)7;-uu}r@8Lrq>)Z82eYg;XcHhy3YrNUqDW2i#rH`X+RHk}L zcwm`20-xHtb0($UQfaTb({CFjC~LJMg3fEGG$U9YGH2BloG}xreIrLPA@34U(^}x$=+jLao&O^=NpPtsb=+MF})QyR8>eTJbD+Kpo3Q!#X@97LcU+}Vz zC0#upDZIq^+m4Rv%eSa)1?$J2f@X~7@;2lO8P#h+21m27cnoeNg4jjSV@Lm2(Nr;aOLYMB78pT8@82zSl=A9l0+U7l7iyqW6z#7;&+o|o zJ&1lrQkeNJ7h}y!{v33uUaA3+7xky#tOtM_ngh{FyPyA|>tRZp4p&r) zqgaloF9z;;2O1W7?}tDTuFBAWokH`TR9Q>xXumckU^z@rcu$=yWko$)=05>Uzx;Eu z#v$vc`+zdmQ>=w8Z z@BcGB;031#<(jYtmnzr{M{vnp5#4+1Ipm8zAQ<=^F6Z@~c(1XLJn=i;_`>sNG1*1h zcl&Y1<0zJU0e}J_%+3<9pAoT|LAPvT9(b~Ik;Sj~$iQ}H>-#;das1#EpkZt##cHch zXy-ZaDir4-m#g8O*Nusv{k)CT^{s7RDvjLsE$m~s9-W-3`#-xrYUG+EhneFpdy9fk zoBQwlSo&y|cV_F3&@*3S;mK--byx1_D8GyD4t}oL%2<1`V!CNb-ocw9*aKH5Iv@LqT(iZNn|TW?-Djl*n;9@Q~Z~G^XKe^P6$k~BgFeW)nG$Hd+5`V1^O$Q;L1ZvL8d3^G{km)jPT`@paPmW|u} z4N6Z`ftTdfb%~J)^{nTO4D8`7=mvF8zm3_k9wczW6;P@a*zx@#h4Sc6a{?aNO)HNi zfzTTGjYhUdW^SZj`&U$r!cnqc_cXpT4DwRCoPghQ>qw*6MxJPn5=-;?DW zq33FZosHm!VFrFzw5DZ%-2Wkf_`_=xy@dkBUd<>un$*=9dSAeaQOtb#)85#)99tWp zgpo2)h^Z-|N=A#cgIcvMSs`Vaq0S}`i)!$VU(l}S@cO(ezoK0u&SlRw1DA~Ul8;hW zg4spwiXVW};Nf}H3V;QBw}@(R%y_$OL{A}r&Hm}qm>JD^K?l77(VZu0_+F#NHK{W9 z#kIEa<2E(3hRdBf(yxM7#8)noCeZk9G5O*r>gx31-?l5%)+1Ah(c0KbCka~Cozc4w zSgy0LZGJL!g#)b0ihu`Xwm8GayKzg5fgisZwDy~ba+ZgGZE=0;6p}c65P@Qfw40O@ROIseGwJ9Erb_#6&849a?pq350u!-bJLzTv@tt4bT5_MOil64ST#x36+ zZ(vl6s-=Cn-VrZ(0oqvjc0F5pK49C$;th@=_xO{Vw(yT|$;PMH$>;YUme0e70p$ID-pD#EWEsp*hKy6Gg+_k8vlVdZIPn~MC;Nj zBv0ZDzhWfUq9~Cem$8O}qPf<_w06Q3N`P#%nUvAd` zTAb)q=OA<2;E1N5EHPZH38Iet!XoDz1aUx2`>B-Xs1Vr5_RuZZ+lo*|;P3wDj!y@E z(4?t-DZq`pazkV363+D;&f%cLz|AAjp*^h(OAxOg#qzB~nwadhHfW&VKq7GO(9Y3B z2pVF{{FW>5J-_*~%@!kxcFr>g&~|+2HPtyKys?`Vtr9CV+%KY2U_#(rsLJ9$r-h$$ z(f)_qW~X&ygu^B>0+lMH`hA58aJFKDq|;?~fL=c+D9JNhUc$C3@KFKVS&mWoYL1L5 zqtXHxPF5GFoCg#X|J~a!1gF=U9t-#hC^I{oKMc)J7DbyGVs$Ynu~neWo%0(M8S5k& zOg((b+351(k`3Lndz?GMx$3Bg(;z7mgSvoR>~U=b1P`bGj$AIm78$Hp^d$)6{qpX> zKmr_}IEuLlUc5}RG?~jGF`CTmcEGnT{1Vj>$Kbm7qJMw`Y}+TGa0s+R3P#9o`4joh zA=%Km0$*93mFIo(eeEQT<57vz@`MUi5-?uuoRFq+A;vjfCRfJWvJ>h{7Xi5sypAmI z`wiBSkgcm=XGy@$!sK%=!vSFugHON}N}-sRGgasuUgD+Hj{jsuNJdCM$ZV+t%744t zv|WNacOh%53x5{I3=)zFRM3(2{pm|TMEffl&L6qIaUAbus1b@3^DudYq z89v31Z}~DT8SLQa zuTc%A3aX1$zgU>%Fjm0s_Uv{+7+lxFx`73d>&BjTbDDZ|{7FqHc#16(uaIn?|11dP zv;vGGzhhAw4w(b#2(M^Z65Q0qF|nHV>@sKLhovEf!S7#szX5mr0roZ)yv+Gk!4jS? zi@9{rrX6?_$JZ=#$PgF-NuMmfGp$C$MXQnCa{pYWuvTp-Bos2dJ7de{^cC4g1pgZE z_*`xM1Fak=9D^Wj=RVGQUJ-Rnt9_KZWsCn^y^uQ7gA{FD;KY@=dv;b{&C|Bv0xSOh zMV>L-C|5=Rdu1M_<4gbi+Njflfi>0vD^~7UMTkhh1G@#Poc>;mfgiElf)N6SyYrK^ zrb}be<0`ct6P**6vhj+KDwMbwZ`YsmAkW!obuYpFK7fBku3cLNv@tny!c@(hIJ^Nb zoks~;p8vYvcQ}0uc2YlehBwjBGA_C~oD}Cu3qG0X2IXubKQkbj*FqHEtg$=Q(wUbC zbu|%UP^x!r@fvQS_C$bw7zE6`$aKrpSp{P@*7?}>m@|H2bivkuvt##Kjo0C1|EP>P zz>+oKF=CYGY(@DNv!4=}*lH1gzAK!Mm2i^ay0Q|Wctn82ul_Uauf^nNm zgI2i5N1DX=qu7tfBv2lpP=SxDD-2qK&~jR{W^EcTI=wO>CIZ4O2|Tm+-CsU-qj?N7 zPk%R;TId6Kfam2flKaB>6$IeQn``xu00Jnqh)4ut2Z1r^V-){DUBy=}hfN{00PiX% zp^9D+gj7`vGDvME_R`k*=2>9n$Qd=jz1GmSGsi;r_mJt$`LD4`QP-E(|BP<#Z#<$o zI$SNKOVtyOG2Y+AgR8GUZDuUeXU87QEOV(&T^hr3-dZkRcfD~efyW!Jd3r6h^G^)i zTlRz0CKhkHcwZudQF%3hdXolkS+ULnQ%`@r_t^u~U#)P7 zwVLfcPD{_b5%ta-nK-lT-)15uk*}c5%J-EfU;ZlC_@f*0<+Uwky<9r&#CQr*+oVqMU-O#uydJzf~S61+0%=rz*XKD%H#ll41do)eegMQCwEYfH#avyn02vKumm zpLF&aI%a%|=Ib-z;U*i_Fy3R^(ps<)6c&1GCz%0%Psy3wbF-Ao72!Xxz5V2(pdj-0%E!&t+_W076wchAj}Tfp5W7s;=Z0M%a&mCA zbANKfV2v8G*@W56<^Jaw_Ul_C?JDF7dwlC`4#tl~nMfJ3f5qvNHQFVLuxV&yU$?cV zDxfoty<$+pFuVch)_FDY{*O`ziG$~#B(=mdTKQD(Eu>SzF! zin0S&0AaA@Am4@xN1A1HG31sV*%hRl;7I%ZTa#h*>*;GPej*{RPK3|MI|=O%B@>6- zsWNfJpHuBZ-{e1T=v40Pu<1IouXw<3uevxE^Poo3EM4fQP1Ousxt?m+tH41k^-Hbw zQ##_FYH0dfS$*MDkqgB;te?L1fmn%@4&I-73$e?27lC>ii&TUu2rKCR(qP(uKoNlF z6)qpk49s$s|J>QiXNiRi_jj)Nq?NdNdT^ESPU*S($hisN#NJ7gWhy1cU_ga(flag9Xc?*JLin>g9k<`a$go34>%Ibq~| zjC^-^m1u_gtFxHsKqFuNs?HOslZM;`o50x#OKzR2Yi0*e+%J88Vu_eqVm;#>}f^vrRaHXwY{_}+M>gg>c z$F`nCC8!Xgl?U0{M1~v+e@|4Y?!p+dJ^-Zle?C9Nn{^E!VdGjs4P<$j&TF`B;0CT% z=`uMmb=8MHSe3fLb}2i~A3VSOa!4XfK#|}9LVb}(=`I{m)H2A=$ykOT)VoU1*=K5% zg55eNz%RE1?))&MxGt4I$&>HS30*{u=_+HMev2s8?{w-$8czSNnJV$j{9J4RB=ImG z2sG`>5_AeYYO6ybu`#sewzpDgIO9`(b!R^;VsLVQ_`vx^-Qx;tJp>?C>X^+L^9!1H z$Nbid&kaCDN_N&+^{UtJ#<6M`Y}&>bAm3QiCExuq{XSo$TY>9Z_m*eKL1ursbyL2l z#T`!v>uJpauJ1w%$$9%!p2Amd?GbtnImE@dH6OjLABE=Iv{65?)$LXg3CVh>0@7&A z3bL%nuUw`fR_}e%yz=^ZAoaES8=&9YGesI1;YQ%Z$?z+QKS&IZ6xMlga2cm3G2TrV zPu~5~xwxH0cZ;KO;g`6_n^#7xV}GO`j=??pbf5+1;N#4kpnQh}>n0<)_D4VIV<(mI z-AC=8qpi36Za>L18I7SGbgzw#satZD8wzeKQ_IQf_S0T&aaHJ-u^Vn$(@~tXvq?z}zj*ECX#YTju6B(Qkf2=D4{*J&U!IonN4c zE1*6s^gi*Odu5^UAeoVn9r=R7U4^i@fHgPUGG9=*gZHNuEXY_umzAAs#{oJaZ$Zjp zwZtabG#P!Erd*NS<&|1hINS#{;6l^sO1inrF}*EaqeJ%6VQED8D$*`eu*q%89;q8t z_gXg-d{={oU0nFau^6s;(N@3aWm~0~3p%5gW~;{V|gdDsMNQT?@T_ zFMzO+(fvsf_gbyt#o%hQBlxK4${X64`r^)4-J<+&>+rs6`i@-kTH%c+)yzNQ?~QH_ zeQ5iUFSMAcc(G~CxeXZ~NwKAnLsI#{q>T_$!f;R>ElZL0{8XZTb%u_U>TH#U#Vx3i zlmu$@n&jBP=yga2F}nP_8Py74*j4CFGR0Q2B`p`Pp?{1z-tI!6i<@T@Z&j@zs+}Y1 z@^?hiyH4AX`s9FAuKLQxriM*6`TDWXulL^L>R1$fI39I1@O2kuF-j%@%y2JVHM9xjL0cd<1Yj@v%AY@)tU|ak#w?eHx^s~w(64ef32pN~Xrxd;* zfnWXl##=_)q|Tu$WonLSl~Im|Lb;#46j2i8E~DtgKR0c#MQbvFaveqH)#OL5$5u#* zk)Y}sB*0rS5pz8W!NU66k9rVfTlSwg6K=e1U%jpBF4mseyS9muybv8H#dLacgrnz5 z&MEJ0Dx7DdX*{LAk8{B0| z&S|TtFi{&(5SzXEiuJ~Ibl+1rwof?r`i4vPlkTe!XsJYwk;fZU%I#2-Z`P+|=8ht} zJ)V;JAIG&!t=@CSf^HPa3G+L*1tEv;OoaZ)1eWwK0M(vL1^EqiF19RSu9rJwAZXc4p z8I}YH6)VPxKxrP(gE=Stb`KQ$@GpkXQW^HPP@$ub$|I3jsjAF{#5A}+x+p%a?KS7+B+#GVhv-F=uH5q@CLRoR8I!7jK(>9UvbWmc?2-)_MPc3OaHim(77Ab zhCtqMx0nu&1hHh{z%tMMv&_@9uv;JnXg?weh* z{rBz_eM3^PNH<6|m^RIXLgKmqv@dL?3uE^aZj}Tjz|aLEH`|b2kz@o2>NdF7=@&!j zjraqOJ`pGaByY{5lE@}$zD=0alj0l;?l`?UZ_eM5`GovIe$EZ70{2A1oJl&iY5-fG zklZBb{O)Z*Iw`F2+s#Y-3`VUmVc#_dqdvgimZ??Ck$?{goq$(YsbBWmW&T%AzrlQo z$J%5+?}&|BwY>xQ980a5mq}^k+f!g}<4hBGcjT zZq#f4zD@rZjU+|gfi#iNMNJZKRwN~Rnxlj;Gj@0j9Ve3VgVKvvKP0o^*}m zBqt=Y78MqKLUK}E3=p_*Hz0*eTwX*rh4|a0Lk4mYjjhh6@KB32t(`fLGVb4v5VNJ@ zaNGtTgy4ZkuXgNL{zJR{2+A$n7bD;fMc(kn>e#JPL|tZ0!^1&bD~BY#zVHx3vu&L3 z?6&637i;VUve9&eAB$xgTjc11^rxmWcRg{O&)n;!nsLsn z=3X0MGb7BVqHU(6O&`4>OGa&f;?C?GEwlABXh4h!{Ide=&hLw01mQNO_Yj#JXz!7YVQDcFC@-Mr1-9vVdT3$;Cb zWXL4@naOMj^n+%yMBQRSSVjrXuP-B(-{@mF?aK#WMW7l=;_ikkwi3@3G5pRs?m=5( zf9kIEh-3fxsyR`}Xn4eio;!1>r??5tJ+T)y8j~;ZP{AA9a z)w*X0uMO67A%F9BRvZ=Ex|PmGg*L%PWz?qQ)YRpoMq2DHPF|suNj#eRnQ8y$za(sjP zyu3zHWKOBwQldU(RZp#=L~?HpTsixcgx-eW&9FhEm!i?^3cnW04Qkrt>uamph_RYr*5;-?xLAUj+&r)*5+J zN6?w~3%h;6I?%B(T$8_Pi|xh`PQCtLd*2xr<+7}6LS^7lk(>;$NCKneEQsW&aAsr(K^ku!ZTb+5RR4%s=8VN3y$6!k>1)kHHoLISlG%E$|UTei%ygt$uU1x zt&P?zK3T80d3BkAP)X-nzQfKDuuWhv-1Jre0Sgs5!_n-Zy!_E1*m(G)1rq-Z697Y^ zi~TJ)y^(ImWDg+IBf}`2`+i$WYy&5pWj?EWF|&n5=cn$}`_;masiLQbDQfbpRLuNP zo$K_7LUf$h9c%&rj)f($l9(>ujq4wl4o&`nYJ%ugV!n#x^wSfZS8w>%kGyuTfdhLbh zrD#mo$w{sa&vADR{K(>cur$qjwyzs|L_Xv96WOQ&w2&EwsEd;2gKQ+OfZ}qy{LzAN zSX>Q7!G|Xe_qk6DFFJTeJxQz`bLX%%A&l>==28F^a?fzpWUS1hL=~6$#A?PIlTzwd ze9pTxVpC+w`wZk(>a8U<(%Yf_-8ReR;DVY~LQOtmGjF6SHxhbRbDAX8hDbHhvp-d) z50bK#^g3io-8yMPE-*END`t_Y4FL;^2O<8?zU(nFRco5nUbIXZ{w#9jgm2?wnhE@j z`NF6-C@1=c#zV&-2G=30S1Ujw$CL#~E|lo`7*MBR5h%3x>4M(D0RpN0RA~ zC)7F zdsD^a_$MNGpzD{zDi**gMYWX=t#(<^4#*rb^+K)hvp#xwa$WbrNp%XGYKFYe`x=*^lNyOyZT z9QtIfD`ODU1}LUDq`sE6|K9SrMbNseb&rlY!}oC~r({UJ8D=Px^&*Ox zU&WnXXm8~W@{ylwxhWey0QZN4+5DWs=cW;|v$cOjM_#{^cb(+oX!f2FYILFL&7*IV zBJAriQ^JDw_ZWbtmt1lfesDJE>TXOB&8v^$S?<_fZ3#b-(Y6|Bo)=HpKH|y(%7I*Um>UNjHSf6?s#HClv#sV&s zv~qa#DDO(Dic$LrgoN~9#^7~rJ2WTNU@IIB*wCWA+nJoo?(A{=)aJi;b3gaxUfiT5 zc$1YJoFkl5&P^6NA*g2Q?OO4UitQxAYpK!HRYgF=n!AWG|8d@0EfUkw?a^;jSPF6& z!ByOE$Ge9KMbFa=b)qP9AGdkH0dj3l_6tRC=qoBVmK`lGQ+I)*s%pTC8IfrXT7|L#0#sl>_FC zrrFesvQDiCv#EVX8?WkcMk;VCqEGO9V+a8HiJVdakeXIz^vDFo!suWnhP^EJuBHSD z*>I|-QFakyZzC(*3ANCX((~CK7YQtlKI`TLXZQXDo$EcTl1_|aj*CKwzD|iMmhg^V zK>p>ZJ$y6t^{pu7U#qjBd-D*{I%|=H1i1J58En>GSl9x`=)#4KL?{~6&;R8MIV0Wr z3H0-Csc3>^%aA_%Dx69ax2c+ba@; zPo0la{@pzrXAwCCxf>Uiz=+=l5RGap>1gn?H^Tq=jz95Dg}nW7z&{`Qc;IoDhkN%BrS^s;BXKj2E~HqE zrFb~q{GO5HV&5Q9obV&`gR#9=c;{ue{@0(NLE$^p27xd^>g^t}*ef}~9J-UX;+q)G zQN&5CBO}2en|c&v5{PCvQ4c8G=acpDsh#a;p!}Suc@)D>1hm^GhL;UL5pH482ZvN+p}rjNAT(&n zSItm${~Nun(Dg=t&y~WY-hH~Pn_+@@E0Wrb-rz0yTBKm_;B_dyw#X==u19*mSzcdN z7i)*8w3vs5t0gzq{PLVfW&{#qdZhUjU9EVF=~quX>X-%UyEwPbVSR>wCJh`#_rK2- zv|C60QX@F~-|6)^wD`L4cKWJmvhPxNM9=vsYE<|BPtCmRMA`uhc^WKdSFb{l4L67+ z<+Qy5_3BVem630QC<&sxZ$=tR!>?Y{+Pr_KV%DduZ!oI{Vfqb}!A4D@b7`3|yH}OdB z`~fBn2N!`QOg$NT&x1Q_r4x;Og15HWcW!ej>R`_Hf65#jrZODahyNXihtdki7v&cCs8)eS-r%X63^l z)L()%-P|Ql2`NNS3$WrEAy*>IUuI~ckIH223R|FanK}?Qj^Lr978J?;vxy|ZKCnm5 zVbQv8j)m~n?eJYe-OfF*4;SlRz}QLhrpWGEVx~@{GtPtm#xLx=l7gD^#902Cv@Lo1 z5pHMwYU%`3U{b4_W5(Ob!0gO0q!7Z5ts=2LS)KyDWBRCyd#2%gR{x>nOkjN}-H1`mZxx0KSf zgTxpkCk6>nGDl1N_cu-d_TeU`h2OZAG&-dYCmdj>z|GtGiM~w7I6HXb1)veM=V<{n zNCf@|XW`}*5GEYo=z>8%<^)<1Nee`$7CJdk)H&c8o3@N^24r*c)7h0C{_Ot$>jzWA zsBKn=V*mYYC8@1|k@anwp4ZvqcX-jX1TEt_=~(H%&s0p03DKx(2L#mwrDPHD1PauW zthB^v!%B4clSj0BF7I?k=S?uh02n*xJysPv?d)KK>d2UhkN8g>%}^_N@c7}me>`h< zZUU`m6dEjGnOpf=_=7a-z4KSWkig5SZqexFH3e!OQ|f=e=ZTM0;~{(KgZ(j=ToTyS#3yu#l@ zs%SeBI3Rj6CAbSDV7=}*@_aVKShPLf#SRLa5+#1yIo2K6m&$8o`PBX)7C<6o^6eVS-IQaY(9m8>ec( zocw(`o#Otpoc~$QKlRXmPUnA4=YN##|GTnvEsLld-+XM`QQVio`!e&iqVd&zKoqm) zpV-P~0g?9E|M^b&{WxjqM}WPpgRLeUfC;2||0$dotzSXdEH;)}eibM52CXx0BXe4D zN)Z4HKLc)L%&9)A{?pWwUnOp~!>KolCLLqKEhd2;Mwkm6Y zJ;W)o=$S|gwy|~o807a-oS`C-mjYA={riBGvD`)3#ur&Q3HQE8CBs#t3DyFac2dH#^T^fyrg$>A=PzG1^g=f6K@0Z?--y4A$=7_Tv=F8qF5o zjl-t8%7MiKaEl0FNTL?#2>e2y3U&QVvr-SKe{phCp>k_mudo8HA(pzBkPCksU;Gc4 z!fYtUk0piQB*J^3`+1_Lw`;FB3-C-F$qD>_gFZu@Pzz{l_ZJZU4z={5RtTz7r7*n> zR{fswC{fsN<#cr&%70RHBtN-sW^h2alYQ=z;*okLWao!HS*S zJKM`&{#v~eW=Aj7^kCsWPZu`TR_=dWqNHv48DsnMnJ=AD+cajyYf8vuL8i08R?PpU zJ&15Pz(VXI7ENxOPs^%R1YMF1B%ZABpDGO3iD8a^LFu|F?n$LcmtltkvQmrq<*i|K z&;Pb)shSN8*#lCjuie!x?#JZbzfAILozW&#U z)F2MrH0j&a(rzIdg>9}1b1!Z4D#z}sMHc&oP7VBdTD0t*+x~Nn1r}iKmpV8-LzTqR z?|q3+#kh;Dgc8ZMDM0LcCC==;4T zhEPT4{cGpMw3E2og9*-MV7C+1HURj#Uk$)T73=wl<+ksIk5YHSCx;f&%wJQO7u#<< z{ddQgTcgivHM|zFLYgrFmzC9$QBa7FVKTlrOTW=|~ z!;f5z|3!S*|M0!P3U~X;KG*)n-O0l=j6hCXranDWa_-!_O$ORX4Phqn`+lPDEC=SC zSL@()NS|5ask&KWhWWKV))H{Pvb704yQ{QV{NYVk`aFCpKg_Jux zx=uB$PIY~6KQXxcj9AG>IW&_-nEK&$xam@N@xJI>nJnDF&dnNL*V76$VU;3PWT#I5 z4E=oun6MXia>z8NAc8Fu@D40F&yQ|!?{4zKx-2QcDJhVjWOU(}_)WFL=bouO3|t%! z6yAP1KQmtxIT!})8P^wRG)kG4i@jffp!EWVcLH^8EiHqG)wUHgY{nkyBj}zjvAhHr zyD~YJN;cu1gtaKScnMB~@}~QYp{vsz+75-);R0Gw;ztfj!8C6jR-!orh^AYUAJ?vA zWBq5x`|d$A@An`!q4fnxkxG^G?pYh)eZX9`M=S4kVjUx0z@81bySKF)RGXk#Y1{pD znT>Zhvc7hVj+dTxh5o#g-Oa9_Ne|@e5y}&@Hu8B}X$3_|dYpaUa@+u606-lt-xAGtSS$zTf-ul|fE~O<@|L9&Ht5+>X-i zhY~|D5qFovX9OAwUS+VA$LuJ6Q5i+x-*nx$!eMK(xcU5Q2{GL-^A_qFx5DRcwP^RG z+d`h0LskSNAhnLn+tqt-*}ifnxW1P1sdbA%N3|Lq2C@nLK~Gey_^RXJVAS)#FTMsJ zehx0j=RcUvHkoGAh$o1%?gnXuMw5)PG1BfXYtTidD3i3W*8q4asdbOmGisaM{=oRTsj3JkmFK6-Yv4P4 zBo=;nL99$8)=Ei|51i10fOiQQF;ATUn34HeU4(QOTCU!GbwdiIF!f6No5!!N6lXL{ z#4mKlVykrI9pp;~lb`G@A1q+psdv^s-_)=Aa0yEgv)ZT!RiS{BzzU=Pq~5Z3ZyL*K zFE6RRtrZ|LLm)K+9Xyzh@1F=(Q6eurdf2SnmJE;1O^fgF%Cg8J)+*IJ)tbHc(DP7;Z9}9p;?ruqh#&i9PQnb+;IbT9C$UoJ#XK+xazp0VQuA!bQg50ct?1MOe)HTLLEm^LurukJSjvaNNKc* zwmc&0viQI$L?)7XBt*uVS}HZZGd)SDLg-%9LP)*)B~w zPpX?peo?2kLCu3_Hrcc>H)bTh1`I^l(YXhnCOn1jZ=2@J`wtOLK0=`D4XFD^Oui+Z zNdnj>LM5t|Hn$+k4>Px*Ug7e1&TM~bJj*&BVs`o^J;xExZ=O(xb0n;TycR}@)TeyJ z;uALAc31Dxhpw>viP{f>svkW{Dy`yBydX`kG$IG~Qel)0auHh|p)gi{7OMh_4BH_?>yCrrg1K$#|*C zP0>V}dX>dj>R!!}_pc`RFVBLia_g%>zZD&=H(HBd&}5geWKyMP;&hj~u}{C2$>G%f zbKHKaEjWOJ@KB`yx;Wc0D9v;HP%SEhf?9)18_BI11MvFkoptr(b}~h*f$*mOGpnby zgxP|oM5*)=ocd)tGt6j*^B!z(04r!P|5(!WaKdJ#1mUKAtemN27Q5JQj_h z_4gLg^*FdCT(CIffit9xjciGY`Vjto)LY$fua&^pkxFNLg*lsVCWtfh%q?~FhTgBqn`RrQ zKEn3tq!HekQ9iov@%A|_PQmNjy)gtPpe@v%JP>BzzJnrM{|re!ToFu!+^oNyV?3oC z7wzp(&%rgt;4|$kC!9XDx!UD6hf$wSrJHM&CC*9U5Qi^6n5e&H&cl%Ri9gQ zI2fzo069xv`F)Z`>+YxL3=6qA;n~y!5+B$75w}p9RqiQxGN}#00vcM=uP~>jBd%M=x?mgD#Xf3Wh)`nBK!L=t|c%O@nea=hgGIW`W zz#k6tYW$W2lT1Py%-y2G+MldG=?6?i%<09YxTZc)t=-BGKXWgjGn3Q3TAlHZvTeBF zF}LusG;vfLihw8MJk|U9ZIN1Tj*gz{>TpM$szK~RvSGP~oAMqqCzs+bW7`YR;U|`c zmC3LZJ2{_c>ZW{&6M-3(V$PR*?5m~H^_3s_8L$3J72FsoltxgF8-5q-#%8&fKQiwv zG<>bfVLyz{30b8l%wAA-cqm?U`?dPRA02hL6DxYhntGfSU}<=OXXfERwn8ij{#W}AJc`~~v#(zDHYkN@NphBn;aM6ux-EFk3rEpE z!W3M2#c0@sBvo=t|3E2z%vmR_FHyzv2L3DZ3X?{=9nA-P6v=Vo z{?%x*YaiMCD&z`iaYdLLrpiGcOngTg}KGCK^@#*b$peCaKd5O$j=p*FS!x2 zW!6LYQ8Igl(}5yVBYQ!p!pQd3PL)pzjJn63|F**kBNR5bn>UiZ zoo{OJI(l1?)I_0uZq4(&R;w|LY_3r+FJ)@^G@!mZTir%|8Rnf|)n9#A^{{AraAU1d z!l#&7s{A&N=g73EoB<}BB7LTa7oZq!Y#4E_2&2!5fp-m0uv z^TsdZkb1UDQ2kwAg1wvho6(;YeIthxcBNHWA-CpNlc3D_K_hN)|IemaRz1g~n=#oOQ~-leI{Y^rzK zw))S(DkR#g{k8af`c^JyGzd5pZv>no)8EtJ2k>pP9nY!OTs^91r-pon5gDv2OEd$q zV)bDe)3v1Z>^rt41tA&MijoE!b;!v;>fUXWnEVm+`@r~}sy)H2DUb4)^b00_GT{Wh zmvhphP}08^vKboQ%=a*ROICzaoG)|JOVnBMI~jV)90;-41~w6|^NxC5 z-zEbdXj?M8DyRRItZF?2dAKAZ3n&E7jqYB``f1#(#vgA)C-zI+gHHQhxW5wTr{|Ab zAP1)F6xoE9iY6Wmxm&It|GP?AM=Y~lwnhJ{x7Yowhcs0-uA$)#qg#UMJG&wScNn_~ zg0J=0dY)6ARuqT^V5OS`on6Y{?PV@cb((J7u+mue@sjrAj)llo&5b3!Ikyy=#oW0z z>EG?4*R|Xh>hblMt0Y)(tAAn!h40kKL4WSZ*e33XOE})?){U-96-U2o9%c_eyEf9=LX&UEIh~5vwy@v=BOTCl#W8 z@lturZfvw$)U{DblFZNPMmAb@-gXSm|yu z)s%pWX}0iZw8jWGeb^r+bra0nk8Vly4p52;Ku=c7U-C>xzOo!oy@XT7i28MVjL3#s z$Z3?z<+j`yu=n@Q);3Rp+;Qe(-srq{OMW-O3zL>1a*52%`t~sXvnw^2^94amihjQP zC&}^b!es}aZdXc#ku#29%W{`AUA3c1IrvCW%S%Q3E)&kY5~*!E{xvRw_22P7$vLg? z7ebgCXqIKe)if0c1XCwdpADfR`Vbg2mB1P~Zq1`OKV10=V^YRO@!mkz99$Fr#`nG@ ziI)U5^SVNxpquH+`twH&-Ggl2qbpi>??uNdWzeCTNHhN@yKWq0JlaxX= zqsL_uSl5Rh7~YFHpLmcS(6t23?4PtVg6|e*lnK{&%ZHhD@HNvj9mNL%l5Or|^26}= zpib@YHSTh^zmYA_^pFkEJV<@6{v27aOZ`ha; znHFV&La7-+%fG*R)hjNI731Z2r?q)wG3_9i)<#z~F!4b-cCNX8m)x>*RNl_Da7^ir zJaT4VViNwHlz^8l$bJPH^O?Ez|CrHEKefr}J6?2*_pRTm^Axy?hrH&G&#|$UMnWfa zjM<-?`#2q|{%9s=kZeH)2tTv-*wo#5UhWcTZj{d*94!m+#5XF?iLfqI?7xp%p?}L= zZZWJAl-LTru|Ss`Cu#ZFu14|7y%z6}FsYxPe&w8sQXx2Ws~V@Em%*GVHLUM^5Me@U ziOR0LA=$1riO3XD9sn1SayS?sRt+?1uSA)Dks_2G&yZ0-N z(4|=6ows|eu{$DLhWA?+aYoAz3)WnFCv?Jf=pnVey(zxRcAo&%tx!S5o2Jq+wgziY z{KjCycm3nlJyT&PzWdAB+tpU00l;4*;sMvtvnvfP#^Y-hXOa+e0}AB^)7W^| zTWeq9XhUibsQvrZCTiJ(`#H`Pa;ya0Z8-n!9!jf$ zT{S%)H@q81g#%AM+!CqD6x86wOT4=%M*JhO%9_rR62^?@gzwY^VW!Ah9df-!OE+|m2O~dXL|Gej<}GOS;+9(A|M4)%*405KT!+s(zE;rrX%^|8 zyP;I2`OirRKsB{9L6SoZ6oNIawA#JwV*-$DnA?(2(Hk~a{-Q?1Gh1CNRd|P>W@tlK z))6^}P{4R~`qX;dve8I3=&aj*;wu%Y)}kf)0DiMJ8J+5>TYw#%52d><&lw)L6yaFS zi1Zq3;|&QmQ(@NsK&C5z+HgR_zN>AEXylptdmW{4nfZhX3?wWhwp3=cXl)zONwb`1 z!={DDPC`9PQlAX6ZVjw27vF&SENP|nUbs0D;ZjmiK7(g%IFr@RW;^oomRLOc8BfK% zF6c;zu6@>fcVj&!5M{nfpY>te4B^{@oB)}#f(^jk^atkBL?tx0qpBP`M4!E45e})ur-8#E@db~){@?rtEtX32tx51F?;b;+IY1K%lA=KyyoBj^ zz@zprp2+o5NXqZVhtGOu899idOVC~>s%*Om^mzOi-vShzj7nAkIix?MnGq!xs{Y?a z*BfXiz4nSzsjCAHSy>|c+*CY&pl^jP?HsjqcC V(QM)8r!(M3Szbe~NY?Dd{{cwkfbakS literal 0 HcmV?d00001 diff --git a/STABLE/documentation/images/dmz6.png b/STABLE/documentation/images/dmz6.png new file mode 100644 index 0000000000000000000000000000000000000000..2763dbf5dae6b230f287f3b53fc2dfd35fae4946 GIT binary patch literal 35088 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 Nx^utxY=N)k9|6|8;a&g$ diff --git a/STABLE/documentation/images/network.png b/STABLE/documentation/images/network.png new file mode 100644 index 0000000000000000000000000000000000000000..fab0fcace41c76668e7c104ec5c894b2884ccaf7 GIT binary patch literal 53638 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 literal 0 HcmV?d00001 diff --git a/STABLE/documentation/images/proxyarp.jpg b/STABLE/documentation/images/proxyarp.jpg deleted file mode 100644 index 2255acc9f38be9f41ea87bff4834136b0050a519..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14272 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 Ny0-N@Jf9Ua_FtIcM#BIA diff --git a/STABLE/documentation/images/proxyarp.png b/STABLE/documentation/images/proxyarp.png new file mode 100644 index 0000000000000000000000000000000000000000..88b0f1b425e697a266c88af4dae6c0b0a1cf8581 GIT binary patch literal 10892 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

    112mKoTd4 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 diff --git a/STABLE/documentation/images/staticnat.png b/STABLE/documentation/images/staticnat.png new file mode 100644 index 0000000000000000000000000000000000000000..a147089b7847c57f63d6068ec998eb9ef5be4419 GIT binary patch literal 9725 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 literal 0 HcmV?d00001 diff --git a/STABLE/documentation/index.htm b/STABLE/documentation/index.htm index bc8538fc9..6bf808fdb 100644 --- a/STABLE/documentation/index.htm +++ b/STABLE/documentation/index.htm @@ -5,18 +5,17 @@ Shoreline Firewall - - + - <body background="_themes/radial/radbkgnd.gif" bgcolor="#FFFFFF" text="#000000" link="#6666FF" vlink="#993333" alink="#66CCCC"><!--mstheme--><font face="arial, Arial, Helvetica"> + <body> <p>This page uses frames, but your browser doesn't support them.</p> - <!--mstheme--></font></body> + </body> diff --git a/STABLE/documentation/kernel.htm b/STABLE/documentation/kernel.htm index 904ba1067..175527399 100644 --- a/STABLE/documentation/kernel.htm +++ b/STABLE/documentation/kernel.htm @@ -5,11 +5,16 @@ Shorewall Kernel Configuration - - -

    Kernel Configuration

    + + + + + +
    +

    Kernel Configuration

    +

    For information regarding configuring and building GNU/Linux kernels, see http://www.kernelnewbies.org.

    Here's a screen shot of my Network Options Configuration:

    @@ -138,4 +143,4 @@ the options selected above built as modules:

    Tom Eastep

    Copyright2001, 2002 Thomas M. Eastep.
    \ No newline at end of file +© 2001, 2002 Thomas M. Eastep. \ No newline at end of file diff --git a/STABLE/documentation/mailing_list.htm b/STABLE/documentation/mailing_list.htm index f7f8174f5..7a0d25340 100644 --- a/STABLE/documentation/mailing_list.htm +++ b/STABLE/documentation/mailing_list.htm @@ -6,35 +6,37 @@ Shorewall Mailing Lists - + - + -

    -Shorewall Mailing Lists

    - -

     

    - -

     

    + + + + +
    +

    +Shorewall Mailing Lists

    +

    Note: The list server limits posts to 120kb.

    -

    Not getting List Mail? -- Check -Here

    +

    Not getting List Mail? -- Check +Here

    If you experience problems with any of these lists, please let me know

    -

    Not able to Post Mail to shorewall.net?

    +

    Not able to Post Mail to shorewall.net?

    You can report such problems by sending mail to tom dot eastep at hp dot com.

    -

    A Word about SPAM Filters +

    A Word about SPAM Filters -

    +

    Before subscribing please read my policy about list traffic that bounces. Also please note that the mail server @@ -42,7 +44,7 @@ at hp dot com.

    databases at ordb.org and at osirusoft.com.

    -

    Search the Mailing List Archives

    +

    Search the Mailing List Archives

    @@ -74,59 +76,62 @@ Search:

    -

    Shorewall Users Mailing List

    +

    Shorewall Users Mailing List

    The Shorewall Users Mailing list provides a way for users to get answers to questions and to report problems. Information of general interest to the Shorewall user community is also posted to this list.

    Before posting a problem report to this list, please see the problem reporting guidelines.

    -

    To subscribe to the mailing list, go to https://www.shorewall.net/mailman/listinfo/shorewall-users.

    +

    To subscribe to the mailing list, go to +http://www.shorewall.net/mailman/listinfo/shorewall-users.

    To post to the list, post to shorewall-users@shorewall.net.

    The list archives are at http://www.shorewall.net/pipermail/shorewall-users.

    Note that prior to 1/1/2002, the mailing list was hosted at Sourceforge. The archives from that list may be found at www.geocrawler.com/lists/3/Sourceforge/9327/0/.

    -

    Shorewall Announce Mailing List

    +

    Shorewall Announce Mailing List

    This list is for announcements of general interest to the -Shorewall community. To subscribe, go to https://www.shorewall.net/mailman/listinfo/shorewall-announce.

    +Shorewall community. To subscribe, go to +http://www.shorewall.net/mailman/listinfo/shorewall-announce.

    The list archives are at http://www.shorewall.net/pipermail/shorewall-announce.

    -

    Shorewall Development Mailing List

    +

    Shorewall Development Mailing List

    The Shorewall Development Mailing list provides a forum for the exchange of ideas about the future of Shorewall and for coordinating ongoing Shorewall Development.

    -

    To subscribe to the mailing list, go to https://www.shorewall.net/mailman/listinfo/shorewall-devel.

    +

    To subscribe to the mailing list, go to +http://www.shorewall.net/mailman/listinfo/shorewall-devel.

    To post to the list, post to shorewall-devel@shorewall.net

    The list archives are at http://www.shorewall.net/pipermail/shorewall-devel.

    -

    How to Unsubscribe from one of the -Mailing Lists

    +

    How to Unsubscribe from one of the +Mailing Lists

    There seems to be near-universal confusion about unsubscribing from Mailman-managed lists. To unsubscribe:

    -
    - - - -
    bullet +
      +
    • Follow the same link above that you used to subscribe to the list.

      -
    bullet + +
  • Down at the bottom of that page is the following text: "To change your subscription (set options like digest and delivery modes, get a reminder of your password, or unsubscribe from <name of list>), enter your subscription email address:". Enter your email address in the box and click on the "Edit Options" button.

    -
  • bullet + +
  • There will now be a box where you can enter your password and click on "Unsubscribe"; if you have forgotten your password, there is another button that will cause your password to be emailed to you.

    -
  • -

    -

    Frustrated by having to Rebuild Mailman to use it with Postfix?

    + + +
    +

    Frustrated by having to Rebuild Mailman to use it with Postfix?

    Check out these instructions

    Last updated 7/26/2002 - Tom Eastep

    Copyright © 2001, 2002 Thomas M. Eastep.

    -
    + \ No newline at end of file diff --git a/STABLE/documentation/mailing_list_problems.htm b/STABLE/documentation/mailing_list_problems.htm index a6d9766d1..4c76f9a6d 100644 --- a/STABLE/documentation/mailing_list_problems.htm +++ b/STABLE/documentation/mailing_list_problems.htm @@ -6,19 +6,24 @@ Mailing List Problems - - + -

    Mailing List Problems

    + + + + +
    +

    Mailing List Problems

    +
    -

    Shorewall.net is currently experiencing mail delivery problems -to at least one address in each of the following domains:

    +

    Shorewall.net is currently experiencing mail delivery problems +to at least one address in each of the following domains:

    -
    2020ca - delivery to this domain has been disabled (cause unknown)
    +    
    2020ca - delivery to this domain has been disabled (cause unknown)
     excite.com - delivery to this domain has been disabled (cause unknown)
     epacificglobal.com - delivery to this domain has been disabled (no MX record for domain)
     gmx.net - delivery to this domain has been disabled (cause unknown)
    @@ -33,7 +38,7 @@ penquindevelopment.com - delivery to this domain has been disabled (connection t
     scip-online.de - delivery to this domain has been disabled (cause unknown)
     spctnet.com - connection timed out - delivery to this domain has been disabled
     telusplanet.net - delivery to this domain has been disabled (cause unknown)
    -yahoo.com - delivery to this domain has been disabled (Mailbox over quota)
    +yahoo.com - delivery to this domain has been disabled (Mailbox over quota)
    @@ -47,6 +52,6 @@ Eastep

     

    - + \ No newline at end of file diff --git a/STABLE/documentation/myfiles.htm b/STABLE/documentation/myfiles.htm index ffb4b2b36..d39dd4de6 100644 --- a/STABLE/documentation/myfiles.htm +++ b/STABLE/documentation/myfiles.htm @@ -10,14 +10,20 @@ - + - -

    About My Network

    + + + + + +
    +

    About My Network

    +
    -

    My Current Network

    +

    My Current Network

    @@ -38,7 +44,8 @@ runs Samba and acts as the a WINS server.  Wookie is in its own 'whitelist' called 'me'.

    My laptop (eastept1) is connected to eth3 using a cross-over cable. It runs its own -Sygate firewall software and is managed by Proxy ARP.

    +Sygate firewall software and is managed by Proxy ARP. It connects to the +local network through the PopTop server running on my firewall.

    The single system in the DMZ (address 206.124.146.177) runs postfix, Courier IMAP (imaps and pop3), DNS, a Web server (Apache) and an FTP server @@ -52,7 +59,7 @@ All administration and publishing is done using ssh/scp.

    I run an SNMP server on my firewall to serve MRTG running in the DMZ.

    -

    +

     

    The ethernet interface in the Server is configured with IP address 206.124.146.177, netmask @@ -68,9 +75,9 @@ MRTG running in the DMZ.

    Note: My files use features not available before Shorewall version 1.3.4.

    -

    Shorewall.conf

    +

    Shorewall.conf

    -
    	SUBSYSLOCK=/var/lock/subsys/shorewall
    +  
    	SUBSYSLOCK=/var/lock/subsys/shorewall
     	STATEDIR=/var/state/shorewall
     
     	LOGRATE=
    @@ -80,16 +87,16 @@ MRTG running in the DMZ.

    CLAMPMSS=Yes - MULTIPORT=Yes
    -

    Zones File:

    -
    	#ZONE 	DISPLAY 	COMMENTS
    +	MULTIPORT=Yes
    +

    Zones File:

    +
    	#ZONE 	DISPLAY 	COMMENTS
     	net	Internet	Internet
     	me	Eastep		My Workstation
     	loc	Local		Local networks
     	dmz	DMZ		Demilitarized zone
     	tx	Texas		Peer Network in Dallas Texas
    -	#LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE
    -

    Interfaces File:

    + #LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE
    +

    Interfaces File:

    @@ -98,38 +105,35 @@ interfaces.

    -
    	#ZONE    INTERFACE	BROADCAST 	OPTIONS
    +  
    	#ZONE    INTERFACE	BROADCAST 	OPTIONS
     	net	eth0 		206.124.146.255	routefilter,norfc1918,blacklist,filterping
    -	-	eth2 		192.168.1.255	dhcp
    +	loc	eth2 		192.168.1.255	dhcp
     	dmz	eth1 		206.124.146.255	-
    -	loc	eth3		206.124.146.255 -
    -	tx	texas 		-
    +	net	eth3		206.124.146.255 norfc1918
    +	-	texas 		-
     	loc	ppp+
    -	#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
    -

    Hosts File:

    + #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
    +

    Hosts File:

    -
    	#ZONE 		HOST(S)			OPTIONS
    +  
    	#ZONE 		HOST(S)			OPTIONS
     	me		eth2:192.168.1.3
    -	loc		eth2:0.0.0.0/0
    -	loc		ppp+:192.168.1.0/24
    -	loc		eth3:206.124.146.180
     	tx 		texas:192.168.9.0/24
    -	#LAST LINE -- ADD YOUR ENTRIES ABOVE -- DO NOT REMOVE
    + #LAST LINE -- ADD YOUR ENTRIES ABOVE -- DO NOT REMOVE
    -

    Routestopped File:

    +

    Routestopped File:

    -
    	#INTERFACE	HOST(S)
    +  
    	#INTERFACE	HOST(S)
     	eth1		206.124.146.177
     	eth2 		-
    -	eth3 		206.124.146.180
    -

    Common File:

    -
    	. /etc/shorewall/common.def
    +	eth3 		206.124.146.180
    +

    Common File:

    +
    	. /etc/shorewall/common.def
     	run_iptables -A common -p udp --sport 53 -mstate --state NEW -j DROP
    -	run_iptables -A common -p tcp --dport 113 -j REJECT
    + run_iptables -A common -p tcp --dport 113 -j REJECT
    -

    Policy File:

    +

    Policy File:

    -
    
    +  
    
     	#SOURCE	DEST	POLICY	LOG LEVEL	LIMIT:BURST
     	me	all	ACCEPT
     	tx	me	ACCEPT		#Give Texas access to my personal system
    @@ -141,10 +145,11 @@ interfaces. 

    $FW tx ACCEPT loc tx ACCEPT loc fw REJECT + net net ACCEPT net all DROP info 10/sec:40 all all REJECT info - #LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOTE
    -

    Masq File:

    + #LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOTE
    +

    Masq File:

    @@ -152,25 +157,25 @@ Although most of our internal systems use static NAT, my wife's system (192.168.1.4) uses IP Masquerading (actually SNAT) as do visitors with laptops.

    -
    	#INTERFACE 	SUBNET		ADDRESS
    +  
    	#INTERFACE 	SUBNET		ADDRESS
     	eth0 		192.168.1.0/24	206.124.146.176
    -	#LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE
    -

    NAT File:

    -
    	#EXTERNAL	INTERFACE	INTERNAL	ALL	LOCAL
    +	#LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE
    +

    NAT File:

    +
    	#EXTERNAL	INTERFACE	INTERNAL	ALL	LOCAL
     	206.124.146.178 eth0 		192.168.1.5 	No 	No
     	206.124.146.179 eth0 		192.168.1.3 	No 	No
    -	#LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE
    + #LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE
    -

    Proxy ARP File:

    -
         	#ADDRESS	INTERFACE	EXTERNAL	HAVEROUTE
    +                                          

    Proxy ARP File:

    +
         	#ADDRESS	INTERFACE	EXTERNAL	HAVEROUTE
     	206.124.146.177 eth1 		eth0 		No
     	206.124.146.180	eth3		eth0		No
    -	#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
    + #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
    -

    Rules File (The shell variables - are set in /etc/shorewall/params):

    +

    Rules File (The shell variables + are set in /etc/shorewall/params):

    -
         	#ACTION		SOURCE 		DEST 			PROTO	DEST 	SOURCE  ORIGINAL
    +  
         	#ACTION		SOURCE 		DEST 			PROTO	DEST 	SOURCE  ORIGINAL
     	#                       				PORT(S) PORT(S)	PORT(S)	DEST
     	#
     	# Local Network to Internet - Reject attempts by Trojans to call home
    @@ -218,7 +223,6 @@ Although most of our internal systems use static NAT, my wife's system
     	#
     	# Net to Local 
     	#
    -	ACCEPT		net		loc:206.124.146.180	#Runs its own firewall software
     	ACCEPT		net		loc			tcp	auth
     	REJECT		net		loc			tcp	www
     	#
    @@ -282,12 +286,12 @@ Although most of our internal systems use static NAT, my wife's system
     	ACCEPT 		tx 		fw 			icmp 	echo-request
     	ACCEPT		tx 		loc 			icmp 	echo-request
     
    -	#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
    + #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

    -Last updated 8/4/2002 +Last updated 8/9/2002 - Tom Eastep

    Copyright - © 2001, 2002 Thomas M. Eastep.
    \ No newline at end of file + © 2001, 2002 Thomas M. Eastep. \ No newline at end of file diff --git a/STABLE/documentation/ports.htm b/STABLE/documentation/ports.htm index 081136136..f205236fe 100644 --- a/STABLE/documentation/ports.htm +++ b/STABLE/documentation/ports.htm @@ -5,10 +5,16 @@ Shorewall Port Information - -

    Ports required for Various Services/Applications

    + + + + + +
    +

    Ports required for Various Services/Applications

    +

    In addition to those applications described in the /etc/shorewall/rules documentation, here are some other @@ -95,6 +101,12 @@ services/applications that you may need to configure your firewall to accommodat

    Traceroute

    UDP ports 33434 through 33434+<max number of hops>-1

    +
    +

    NFS

    +
    +

    There's some good information at  + + http://nfs.sourceforge.net/nfs-howto/security.html

    Didn't find what you are looking for -- have you looked in your own /etc/services file?

    @@ -103,8 +115,8 @@ services/applications that you may need to configure your firewall to accommodat http://www.networkice.com/advice/Exploits/Ports

    -

    Last updated 7/30/2002 - +

    Last updated 8/21/2002 - Tom Eastep

    Copyright2001, 2002 Thomas M. Eastep. \ No newline at end of file +© 2001, 2002 Thomas M. Eastep.
    \ No newline at end of file diff --git a/STABLE/documentation/quotes.htm b/STABLE/documentation/quotes.htm index 2b0afcdf5..9f3778db2 100644 --- a/STABLE/documentation/quotes.htm +++ b/STABLE/documentation/quotes.htm @@ -6,12 +6,17 @@ Quotes from Shorewall Users - - + -

    Quotes from Shorewall Users

    + + + + +
    +

    Quotes from Shorewall Users

    +

    "I just installed Shorewall after weeks of messing with @@ -86,6 +91,6 @@ Guatamala

    Copyright © 2001, 2002 Thomas M. Eastep.

    -
    + \ No newline at end of file diff --git a/STABLE/documentation/samba.htm b/STABLE/documentation/samba.htm index 48cbd73e9..6656b21bf 100644 --- a/STABLE/documentation/samba.htm +++ b/STABLE/documentation/samba.htm @@ -6,88 +6,93 @@ Samba - - + -

    Samba

    + + + + +
    +

    Samba

    +

    If you wish to run Samba on your firewall and access shares between the firewall and local hosts, you need the following rules:

    -

    /etc/shorewall/rules:

    +

    /etc/shorewall/rules:

    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDEST - PROTODEST
    - PORT(S)
    SOURCE
    - PORT(S)
    ORIGINAL
    - DEST
    ACTIONSOURCEDEST + PROTODEST
    + PORT(S)
    SOURCE
    + PORT(S)
    ORIGINAL
    + DEST
    ACCEPTfwlocudp137:139  ACCEPTfwlocudp137:139  
    ACCEPTfwloctcp137,139  ACCEPTfwloctcp137,139  
    ACCEPTfwlocudp1024:137 ACCEPTfwlocudp1024:137 
    ACCEPTlocfwudp137:139  ACCEPTlocfwudp137:139  
    ACCEPTlocfwtcp137,139  ACCEPTlocfwtcp137,139  
    ACCEPTlocfwudp1024:137 ACCEPTlocfwudp1024:137 
    +

    Last modified 5/29/2002 - Tom Eastep

    -Copyright © 2002 Thomas M. Eastep. \ No newline at end of file +Copyright © 2002 Thomas M. Eastep. \ No newline at end of file diff --git a/STABLE/documentation/seattlefirewall_index.htm b/STABLE/documentation/seattlefirewall_index.htm index 4edeb0109..81e76436c 100644 --- a/STABLE/documentation/seattlefirewall_index.htm +++ b/STABLE/documentation/seattlefirewall_index.htm @@ -11,195 +11,151 @@ - + - + + + + + +
    +

    + + Shorewall 1.3 - "iptables made easy"

    +
    -

    Shorewall 1.3 - "iptables made easy"

    +
    +
    + + + + + +
    -

    Shorewall 1.2 Site is - Here

    - -

     

    - -

    What is it?

    +

    What is it?

    The Shoreline Firewall, more commonly known as "Shorewall",  is a - Netfilter (iptables) - based firewall that can be used on a dedicated firewall system, a - multi-function gateway/router/server or on a standalone GNU/Linux system.

    + Netfilter (iptables) based firewall + that can be used on a dedicated firewall system, a multi-function + gateway/router/server or on a standalone GNU/Linux system.

    -

    This program is free software; you can redistribute it and/or modify - it under the terms of Version 2 of the GNU General Public License - as published by the Free Software Foundation.
    +

    This program is free software; you can redistribute it and/or modify it + under the terms of Version + 2 of the GNU General Public License as published by the Free Software + Foundation.

    - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details.
    + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details.

    You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 675 Mass Ave, Cambridge, MA 02139, USA

    + along with this program; if not, write to the Free Software Foundation, + Inc., 675 Mass Ave, Cambridge, MA 02139, USA

    Copyright 2001, 2002 Thomas M. Eastep

    -

    Want a Copy of this Site?

    - -

    The Shorewall .tgz and .rpm files contain a copy of this site -- - download Shorewall and you get a copy of the - Shorewall portion of this site for the same low price (Free!).

    - +

     Jacques + Nilo and Eric Wolzak have a LEAF distribution called Bering that + features Shorewall-1.3.3 and Kernel-2.4.18. You can find their work at: + + http://leaf.sourceforge.net/devel/jnilo

    + -

    News

    +

    News

    -

    8/7/2002 - Shorewall 1.3.6 -

    +

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

    + +

    Features in this release include:

    + +
      +
    • The 'icmp.def' file is now empty! The rules in that file were + required in ipchains firewalls but are not required in Shorewall. Users + who have ALLOWRELATED=No in + shorewall.conf should see the Upgrade + Issues.
    • +
    • A 'FORWARDPING' option has been added to + shorewall.conf. The effect of + setting this variable to Yes is the same as the effect of adding an + ACCEPT rule for ICMP echo-request in + /etc/shorewall/icmpdef. + Users who have such a rule in icmpdef are encouraged to switch to + FORWARDPING=Yes.
    • +
    • The loopback CLASS A Network (127.0.0.0/8) has been added to the + rfc1918 file.
    • +
    • Shorewall now works with iptables 1.2.7.
    • +
    • The documentation and Web site no longer use FrontPage themes.
    • +
    + +

    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:

    - - - - -
    bulletThe latest QuickStart Guides - including the Shorewall Setup Guide.
    bulletShorewall will now DROP TCP packets that are not part of or - related to an existing connection and that are not SYN packets. These "New - not SYN" packets may be optionally logged by setting the LOGNEWNOTSYN option - in /etc/shorewall/shorewall.conf.
    bulletThe processing of "New not SYN" packets may be extended by command in the - new newnotsyn extension script.
    - -

    7/30/2002 - Shorewall 1.3.5b Released

    - -

    This interim release:

    - -
    - - - -
    bulletCauses the firewall script to remove the lock file if it is killed.
    bulletOnce again allows lists in the second column of the - /etc/shorewall/hosts file.
    bulletIncludes the latest QuickStart - Guides.
    - -

    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:

    - -
    - - - - - -
    bulletEmpty and invalid source and destination qualifiers are now detected in - the rules file. It is a good idea to use the 'shorewall check' command before - you issue a 'shorewall restart' command be be sure that you don't have any - configuration problems that will prevent a successful restart.
    bulletAdded MERGE_HOSTS variable in shorewall.conf to provide saner behavior of - the /etc/shorewall/hosts file.
    bulletThe time that the counters were last reset is now displayed in the - heading of the 'status' and 'show' commands.
    bulletA proxyarp option has been added for entries in - /etc/shorewall/interfaces. This - option facilitates Proxy ARP sub-netting as described in the Proxy ARP - subnetting mini-HOWTO (http://www.tldp.org/HOWTO/mini/Proxy-ARP-Subnet/). - Specifying the proxyarp option for an interface causes Shorewall to set - /proc/sys/net/ipv4/conf/<interface>/proxy_arp.
    bulletThe Samples have been updated to reflect the new capabilities in this - release.
    - -

    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:

    - -
    - - - - - -
    bulletA new - /etc/shorewall/routestopped file has been added. This file is intended to - eventually replace the routestopped option in the - /etc/shorewall/interface and /etc/shorewall/hosts files. This new file makes - remote firewall administration easier by allowing any IP or subnet to be - enabled while Shorewall is stopped.
    bulletAn /etc/shorewall/stopped extension - script has been added. This script is invoked after Shorewall has - stopped.
    bulletA DETECT_DNAT_ADDRS option has been added to - /etc/shoreall/shorewall.conf. When this - option is selected, DNAT rules only apply when the destination address is the - external interface's primary IP address.
    bulletThe QuickStart Guide has - been broken into three guides and has been almost entirely rewritten.
    bulletThe Samples have been updated - to reflect the new capabilities in this release. 
    - -

    7/8/2002 - Shorewall 1.3.3 Debian Package Available

    - -

    Lorenzo Martignoni 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:

    - -
    - - - - - - -
    bulletEntries in /etc/shorewall/interface that use the wildcard character ("+") - now have the "multi" option assumed.
    bulletThe 'rfc1918' chain in the mangle table has been renamed 'man1918' to - make log messages generated from that chain distinguishable from those - generated by the 'rfc1918' chain in the filter table.
    bulletInterface names appearing in the hosts file are now validated against the - interfaces file.
    bulletThe TARGET column in the rfc1918 file is now checked for correctness.
    bulletThe chain structure in the nat table has been changed to reduce the - number of rules that a packet must traverse and to correct problems with - NAT_BEFORE_RULES=No.
    bulletThe 'hits' command has been enhanced.
    +

    More News

    -

    SourceForge LogoThe - Shorewall Project uses facilities provided by SourceForge.

    +

    Donations

    - -

    - - Jacques Nilo and Eric Wolzak have a LEAF distribution called Bering - that features Shorewall-1.3.3 and Kernel-2.4.18. You can find their work at: - http://leaf.sourceforge.net/devel/jnilo

    +
    + SourceForge Logo
    +
    +
    + + + + +
    +

    +

    +

    Shorewall is free but if + you try it and find it useful, please consider making a donation to + Starlight Children's Foundation. Thanks!

    -

    Updated - 7/29/2002 - Tom Eastep +

    Updated + 8/22/2002 - Tom Eastep -

    - + \ No newline at end of file diff --git a/STABLE/documentation/shoreline.htm b/STABLE/documentation/shoreline.htm index 75e9dd4f8..3e6239b7f 100644 --- a/STABLE/documentation/shoreline.htm +++ b/STABLE/documentation/shoreline.htm @@ -10,13 +10,19 @@ - + - + -

    Tom Eastep

    + + + + +
    +

    Tom Eastep

    +
    @@ -32,21 +38,21 @@ by Ken Mazawa

    -
    - - - - - - -
    bulletBorn 1945 in Washington +
    bulletBA Mathematics from Washington State +. +
  • BA Mathematics from Washington State University - 1967
  • bulletMA Mathematics from University -of Washington 1969
    bulletBurroughs Corporation (now Unisys -) 1969 - 1980
    bulletTandem Computers, Incorporated - (now part of the The New HP) 1980 - present
    bulletMarried 1969 - no children.
    + 1967 +
  • MA Mathematics from University +of Washington 1969
  • +
  • Burroughs Corporation (now Unisys +) 1969 - 1980
  • +
  • Tandem Computers, Incorporated + (now part of the The New HP) 1980 - present
  • +
  • Married 1969 - no children.
  • +

    I am currently a member of the design team for the next-generation operating system from the NonStop Enterprise Division of HP.

    @@ -64,26 +70,25 @@ Washington

    Our current home network consists of:

    -
    - - - - - - -
    bullet1.2Gz Athlon, Windows XP Pro, 320MB RAM, 40GB & 8GB IDE HDs - and LNE100TX (Tulip) NIC - My personal Windows system. This system also has - RH7.3 installed.
    bulletPII/266, RH7.3, 320MB RAM, 20GB HD, LNE100TX(Tulip) NIC - My personal - GNU/Linux System which runs Samba configured as a WINS server.
    bulletK6-2/350, RH7.3, 256MB RAM, 8GB IDE HD, EEPRO100 NIC  +
      +
    • 1.2Gz Athlon, Windows XP Pro, 320MB RAM, 40GB & 8GB IDE HDs and LNE100TX + (Tulip) NIC - My personal Windows system.
    • +
    • Celeron 1.4Gz, RH7.3, 256MB RAM, 60GB HD, LNE100TX(Tulip) NIC - My + personal Linux System which runs Samba configured as a WINS server.
    • +
    • K6-2/350, RH7.3, 384MB RAM, 8GB IDE HD, EEPRO100 NIC  - Mail (Postfix & Courier-IMAP), HTTP (Apache), FTP (Pure_ftpd), DNS server - (Bind).
    bulletPII/233, RH7.3 with 2.4.19 kernel, 128MB MB RAM, 2GB SCSI HD - 3 - LNE100TX  (Tulip) and 1 TLAN NICs  - Firewall running Shorewall 1.3.4 and a DHCP - server.  Also runs PoPToP for road warrior access.
    bulletDuron 750, Win ME, 192MB RAM, 20GB HD, RTL8139 NIC - My wife's personal system.
    bulletPII/400 Laptop, Win2k SP2, 224MB RAM, 12GB HD, onboard EEPRO100 and EEPRO100 -in expansion base - My main work system.
    + (Bind). +
  • PII/233, RH7.3 with 2.4.19 kernel, 256MB MB RAM, 2GB SCSI HD - 3 + LNE100TX  (Tulip) and 1 TLAN NICs  - Firewall running Shorewall 1.3.6 and a DHCP + server.  Also runs PoPToP for road warrior access.
  • +
  • Duron 750, Win ME, 192MB RAM, 20GB HD, RTL8139 NIC - My wife's personal system.
  • +
  • PII/400 Laptop, Win2k SP2, 224MB RAM, 12GB HD, onboard EEPRO100 and EEPRO100 +in expansion base - My main work system.
  • +

    For more about our network see my Shorewall Configuration.

    -

    The PII/266 is made by Dell. All of our +

    All of our other systems are made by Compaq (part of the new HP).. All of our Tulip NICs are Netgear FA310TXs.

    @@ -93,8 +98,8 @@ in expansion base - My main work system.
    <

    -

    Last updated 8/4/2002 - +

    Last updated 8/16/2002 - Tom Eastep

    Copyright - © 2001, 2002 Thomas M. Eastep. \ No newline at end of file + © 2001, 2002 Thomas M. Eastep. \ No newline at end of file diff --git a/STABLE/documentation/shorewall_extension_scripts.htm b/STABLE/documentation/shorewall_extension_scripts.htm index 9615a9add..c8689cdbe 100644 --- a/STABLE/documentation/shorewall_extension_scripts.htm +++ b/STABLE/documentation/shorewall_extension_scripts.htm @@ -6,12 +6,17 @@ Shorewall Extension Scripts - - + -

    Extension Scripts

    + + + + +
    +

    Extension Scripts

    +

    Extension scripts are user-provided @@ -19,17 +24,17 @@ stop and clear. The scripts are placed in /etc/shorewall and are processed using the Bourne shell "source" mechanism. The following scripts can be supplied:

    -
    - - - - - - - -
    bulletinit -- invoked early in "shorewall start" and "shorewall restart"
    bulletstart -- invoked after the firewall has been started or restarted.
    bulletstop -- invoked as a first step when the firewall is being stopped.
    bulletstopped -- invoked after the firewall has been stopped.
    bulletclear -- invoked after the firewall has been cleared.
    bulletrefresh -- invoked while the firewall is being refreshed but before the - common and/or blacklst chains have been rebuilt.
    bulletnewnotsyn (added in version 1.3.6) -- invoked after the 'newnotsyn' chain - has been created but before any rules have been added to it.
    +
      +
    • init -- invoked early in "shorewall start" and "shorewall restart"
    • +
    • start -- invoked after the firewall has been started or restarted.
    • +
    • stop -- invoked as a first step when the firewall is being stopped.
    • +
    • stopped -- invoked after the firewall has been stopped.
    • +
    • clear -- invoked after the firewall has been cleared.
    • +
    • refresh -- invoked while the firewall is being refreshed but before the + common and/or blacklst chains have been rebuilt.
    • +
    • newnotsyn (added in version 1.3.6) -- invoked after the 'newnotsyn' chain + has been created but before any rules have been added to it.
    • +
    @@ -41,20 +46,10 @@ been processed.

    -

    The following two files receive -special treatment:

    - -
    - - -
    bullet/etc/shorewall/common -- If this file is present, the rules that it +

    The /etc/shorewall/common file receives special treatment. If this file is present, the rules that it defines will totally replace the default rules in the common chain. These default rules are contained in the file /etc/shorewall/common.def which - may be used as a starting point for making your own customized file.

    bullet/etc/shorewall/icmpdef -- If this file is present, the rules that it - defines will totally replace the default rules in the icmpdef chain. -These default rules are contained in the file /etc/shorewall/icmp.def -which may be used as a starting point for making your own customized -file.
    + may be used as a starting point for making your own customized file.

    @@ -68,9 +63,8 @@ processing of the command.

    - If you decide to create /etc/shorewall/common or /etc/shorewall/icmp.def, it - is a good idea to use the following technique (common file shown but the same - technique applies to icmpdef).

    + If you decide to create /etc/shorewall/common it is a good idea to use the + following technique

    @@ -80,29 +74,40 @@ processing of the command.

    -
    source /etc/shorewall/common.def
    -<add your rules here>
    +
    . /etc/shorewall/common.def
    +<add your rules here>

    If you need to supercede a rule in the released common.def file, you can add - the superceding rule before the 'source' command. Using this technique allows + the superceding rule before the '.' command. Using this technique allows you to add new rules while still getting the benefit of the latest common.def file.

    -

    Remember that /etc/shorewall/common and /etc/shorewall/icmpdef define rules +

    Remember that /etc/shorewall/common defines rules that are only applied if the applicable policy is DROP or REJECT. These rules - are NOT applied if the policy is ACCEPT or CONTINUE.
    -

    + are NOT applied if the policy is ACCEPT or CONTINUE.

    -

    Last updated -8/5/2002 - Tom +

    If you set ALLOWRELATED=No in shorewall.conf, then most ICMP packets will be + rejected by the firewall. It is recommended with this setting that you create + the file /etc/shorewall/icmpdef and in it place the following commands:

    + + + +
    	run_iptables -A icmpdef -p ICMP --icmp-type echo-reply -j ACCEPT
    +	run_iptables -A icmpdef -p ICMP --icmp-type source-quench -j ACCEPT
    +	run_iptables -A icmpdef -p ICMP --icmp-type destination-unreachable -j ACCEPT
    +	run_iptables -A icmpdef -p ICMP --icmp-type time-exceeded -j ACCEPT
    +	run_iptables -A icmpdef -p ICMP --icmp-type parameter-problem -j ACCEPT
    +
    +

    Last updated +8/22/2002 - Tom Eastep

    Copyright 2002 Thomas M. Eastep

    -
    + \ No newline at end of file diff --git a/STABLE/documentation/shorewall_features.htm b/STABLE/documentation/shorewall_features.htm index a4ce1dc32..e2dff314f 100644 --- a/STABLE/documentation/shorewall_features.htm +++ b/STABLE/documentation/shorewall_features.htm @@ -6,81 +6,86 @@ Shorewall Features - - + -

    Shorewall Features

    -
    - - - - - - - - - - -
    bulletUses Netfilter's connection tracking facilities for stateful packet - filtering.
    bulletCan be used in a wide range of router/firewall/gateway applications. - - - - - - -
    bulletCompletely customizable using configuration files.
    bulletNo limit on the number of network interfaces.
    bulletAllows you to partitions the network into zones + + + + +
    +

    Shorewall Features

    +
    +
      +
    • Uses Netfilter's connection tracking facilities for stateful packet + filtering.
    • +
    • Can be used in a wide range of router/firewall/gateway applications. +
        +
      • Completely customizable using configuration files.
      • +
      • No limit on the number of network interfaces.
      • +
      • Allows you to partitions the network into zones and gives you complete control over the connections permitted between - each pair of zones.
    bulletMultiple interfaces per zone and multiple zones per interface - permitted.
    bulletSupports nested and overlapping zones.
    -
    bullet QuickStart Guides to help - get your first firewall up and running quickly
    bulletExtensive documentation - included in the .tgz and .rpm downloads.
    bulletFlexible address management/routing support (and you can use all + each pair of zones. +
  • Multiple interfaces per zone and multiple zones per interface + permitted.
  • +
  • Supports nested and overlapping zones.
  • + + +
  • QuickStart Guides to help + get your first firewall up and running quickly
  • +
  • Extensive documentation + included in the .tgz and .rpm downloads.
  • +
  • Flexible address management/routing support (and you can use all types in the same firewall): - - - - - - -
    bulletMasquerading/SNAT
    bulletPort Forwarding (DNAT).
    bullet - Static NAT.
    bullet - Proxy ARP.
    bulletSimple host/subnet Routing
    -
  • bulletBlacklisting of individual - IP addresses and subnetworks is supported.
    bulletOperational support: - - - - -
    bulletCommands to start, stop and clear the firewall
    bulletSupports status monitoring - with an audible alarm when an "interesting" packet is detected.
    bulletWide variety of informational commands.
    -
    bulletVPN Support - - - -
    bulletIPSEC, GRE and IPIP - Tunnels.
    bulletPPTP clients and Servers.
    -
    bulletSupport for Traffic Control/Shaping - integration.
    bulletWide support for different GNU/Linux Distributions. - - - - -
    bulletRPM and Debian - packages available.
    bulletIncludes automated install, upgrade, fallback + + +
  • Blacklisting of individual + IP addresses and subnetworks is supported.
  • +
  • Operational support: +
      +
    • Commands to start, stop and clear the firewall
    • +
    • Supports status monitoring + with an audible alarm when an "interesting" packet is detected.
    • +
    • Wide variety of informational commands.
    • +
    +
  • +
  • VPN Support + +
  • +
  • Support for Traffic Control/Shaping + integration.
  • +
  • Wide support for different GNU/Linux Distributions. +
  • bulletCompatible with 2.4-kernel based versions of + to use the RPM or Debian packages. +
  • Compatible with 2.4-kernel based versions of LEAF - .
  • -
    + . + + +

    Last updated 7/14/2002 - Tom Eastep

    Copyright © 2001,2002 Thomas M. Eastep.

    -
    + \ No newline at end of file diff --git a/STABLE/documentation/shorewall_firewall_structure.htm b/STABLE/documentation/shorewall_firewall_structure.htm index b8ebbf90a..ffdfd6b46 100644 --- a/STABLE/documentation/shorewall_firewall_structure.htm +++ b/STABLE/documentation/shorewall_firewall_structure.htm @@ -6,14 +6,19 @@ Shorewall Firewall Structure - - + -

    Firewall Structure

    + + + + +
    +

    Firewall Structure

    +

    - Shorewall views the network in which it is running as a set of disjoint + Shorewall views the network in which it is running as a set of zones. Shorewall itself defines exactly one zone called "fw" which refers to the firewall system itself . The /etc/shorewall/zones file is used to define additional zones and the example file provided with Shorewall @@ -36,6 +41,21 @@ from the internet and from the DMZ and in some cases, from each other. +

    While zones are normally disjoint (no two zones have a host in common), + there are cases where nested or overlapping zone definitions are appropriate.

    +

    Packets entering the firewall first pass through the mangle table's + PREROUTING chain (you can see the mangle table by typing "shorewall show + mangle"). If the packet entered through an interface that has the norfc1918 + option, then the packet is sent down the man1918  which will drop + the packet if its destination IP address is reserved (as specified in the + /etc/shorewall/rfc1918 file). Next the packet passes through the pretos + chain to set its TOS field as specified in the /etc/shorewall/tos file. + Finally, if traffic control/shaping is being used, the packet is sent through + the tcpre chain to be marked for later use in policy routing or traffic + control.

    +

    Next, if the packet isn't part of an established connection, it passes + through the nat table's PREROUTING chain (you can see the nat table by + typing "shorewall show nat").

    Traffic entering the firewall is sent to an input chain. If the traffic is destined for the @@ -133,4 +153,4 @@ server, adding a rule won't help (see point 3 above).

    Last modified 7/26/2002 - Tom Eastep

    -Copyright © 2001, 2002 Thomas M. Eastep. \ No newline at end of file +Copyright © 2001, 2002 Thomas M. Eastep. \ No newline at end of file diff --git a/STABLE/documentation/shorewall_index.htm b/STABLE/documentation/shorewall_index.htm index 24fcf92ac..bede1c576 100644 --- a/STABLE/documentation/shorewall_index.htm +++ b/STABLE/documentation/shorewall_index.htm @@ -5,7 +5,6 @@ Shoreline Firewall - @@ -16,9 +15,9 @@ - <body background="_themes/radial/radbkgnd.gif" bgcolor="#FFFFFF" text="#000000" link="#6666FF" vlink="#993333" alink="#66CCCC"><!--mstheme--><font face="arial, Arial, Helvetica"> + <body> - <p>This page uses frames, but your browser doesn't support them.<!--mstheme--></font></body> + <p>This page uses frames, but your browser doesn't support them.</body> diff --git a/STABLE/documentation/shorewall_mailing_list_migration.htm b/STABLE/documentation/shorewall_mailing_list_migration.htm index 3b90157f2..d39573fe8 100644 --- a/STABLE/documentation/shorewall_mailing_list_migration.htm +++ b/STABLE/documentation/shorewall_mailing_list_migration.htm @@ -6,12 +6,17 @@ Shorewall Mailing List Migration - - + -

    Shorewall Mailing List Migration

    + + + + +
    +

    Shorewall Mailing List Migration

    +

    If you are a current subscriber to the Shorewall mailing list at Sourceforge, please do the following:

      @@ -32,6 +37,6 @@ Eastep

      Copyright © 2002 Thomas M. Eastep.

      - + \ No newline at end of file diff --git a/STABLE/documentation/shorewall_mirrors.htm b/STABLE/documentation/shorewall_mirrors.htm index 0856d7064..a99d161ed 100644 --- a/STABLE/documentation/shorewall_mirrors.htm +++ b/STABLE/documentation/shorewall_mirrors.htm @@ -6,12 +6,17 @@ Shorewall Mirrors - - + -

      Shorewall Mirrors

      + + + + +
      +

      Shorewall Mirrors

      +

      Remember that updates to the mirrors are often delayed for 6-12 hours after an update to the primary site.

      @@ -20,38 +25,38 @@ and is located in Washington State, USA. It is mirrored at:

      -
      - - - - -
      bullet +
      bullet + (Slovak Republic). +
    1. http://shorewall.infohiiway.com - (Texas, USA).
    2. bullet - http://germany.shorewall.net (Hamburg, Germany)
      bullethttp://shorewall.correofuego.com.ar (Martinez (Zona Norte - GBA), Argentina)
      + (Texas, USA). +
    3. + http://germany.shorewall.net (Hamburg, Germany)
    4. +
    5. http://shorewall.correofuego.com.ar (Martinez (Zona Norte - GBA), Argentina)
    6. +

      The main Shorewall FTP Site is ftp://ftp.shorewall.net/pub/shorewall/ and is located in Washington State, USA.  It is mirrored at:

      -
      - - - - -
      bulletftp://slovakia.shorewall.net/mirror/shorewall - (Slovak Republic).
      bullet +
      bullet - ftp://germany.shorewall.net/pub/shorewall (Hamburg, Germany)
      bullet - ftp://shorewall.correofuego.com.ar/pub/mirrors/shorewall (Martinez (Zona Norte - GBA), Argentina)
      + (Texas, USA). +
    7. + ftp://germany.shorewall.net/pub/shorewall (Hamburg, Germany)
    8. +
    9. + ftp://shorewall.correofuego.com.ar/pub/mirrors/shorewall (Martinez (Zona Norte - GBA), Argentina)
    10. +

      Last Updated 7/16/2002 - Tom Eastep

      Copyright © 2001, 2002 Thomas M. Eastep.

      -
      + \ No newline at end of file diff --git a/STABLE/documentation/shorewall_prerequisites.htm b/STABLE/documentation/shorewall_prerequisites.htm index 594808b50..56067978f 100644 --- a/STABLE/documentation/shorewall_prerequisites.htm +++ b/STABLE/documentation/shorewall_prerequisites.htm @@ -6,46 +6,49 @@ Shorewall Prerequisites - - + -

      Shorewall Requirements

      -

       

      -
      - - - - - -
      bulletA kernel that supports netfilter. I've tested with 2.4.2 - 2.4.19. + + + + +
      +

      Shorewall Requirements

      +
      +
      bulletiptables 1.2 or later but beware version 1.2.3 -- see the Errata. + . +
    11. iptables 1.2 or later but beware version 1.2.3 -- see the Errata. WARNING: The buggy iptables version 1.2.3 is included in RedHat 7.2 and you should upgrade to iptables 1.2.4 prior to installing Shorewall. Version 1.2.4 is available from RedHat and in the Shorewall Errata. If you are going to be running kernel 2.4.18 or later, NO currently-available RedHat iptables RPM - will work -- again, see the Shorewall Errata.
    12. bulletSome features require iproute ("ip" utility). The iproute package is + will work -- again, see the Shorewall Errata. +
    13. Some features require iproute ("ip" utility). The iproute package is included with most distributions but may not be installed by default. The - official download site is -ftp://ftp.inr.ac.ru/ip-routing. - -
    14. bulletA Bourne shell or derivative such as bash or ash. Must have correct + official download site is + ftp://ftp.inr.ac.ru/ip-routing. + +
    15. A Bourne shell or derivative such as bash or ash. Must have correct support for variable expansion formats ${variable%pattern }, ${variable%%pattern}, ${variable#pattern - } and ${variable##pattern}.
    16. bulletThe firewall monitoring display is greatly improved if you have awk - (gawk) installed.
      + } and ${variable##pattern}. +
    17. The firewall monitoring display is greatly improved if you have awk + (gawk) installed.
    18. +

      Last updated 8/4/2002 - Tom Eastep

      Copyright © 2001, 2002 Thomas M. Eastep.

      -
      + \ No newline at end of file diff --git a/STABLE/documentation/shorewall_quickstart_guide.htm b/STABLE/documentation/shorewall_quickstart_guide.htm index 556a0d581..bcd097d68 100644 --- a/STABLE/documentation/shorewall_quickstart_guide.htm +++ b/STABLE/documentation/shorewall_quickstart_guide.htm @@ -6,138 +6,145 @@ Shorewall QuickStart Guide - + - + -

      Shorewall QuickStart Guides
      -Version 3.0

      + + + + +
      +

      Shorewall QuickStart Guides
      +Version 3.0

      +

      With thanks to Richard who reminded me once again that we must all first walk before we can run.

      -

      The Guides

      +

      The Guides

      These guides provide step-by-step instructions for configuring Shorewall in common firewall setups.

      The following guides are for firewalls with a single external IP address:

      -
      - - - -
      bulletStandalone Linux System
      bulletTwo-interface Linux System acting as a - firewall/router for a small local network
      bulletThree-interface Linux System acting as a - firewall/router for a small local network and a DMZ.
      +
        +
      • 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.
      • +

      The above guides are designed to get your first firewall up and running quickly in the three most common Shorewall configurations.

      The Shorewall Setup Guide outlines the steps necessary to set up a firewall where there are multiple public IP addresses involved or if you want to learn more about Shorewall than is explained in the single-address guides above.

      -
      - - - - - - - -
      bullet1.0 Introduction
      bullet2.0 Shorewall Concepts
      bullet3.0 Network Interfaces
      bullet4.0 Addressing, Subnets and Routing - - - - -
      bullet4.1 IP Addresses
      bullet4.2 Subnets
      bullet4.3 Routing
      bullet4.4 Address Resolution Protocol
      - - -
      bullet4.5 RFC 1918
      -
      bullet5.0 Setting up your Network - -
      bullet5.1 Routed
      - - - - -
      bullet5.2 Non-routed - - - - -
      bullet5.2.1 SNAT
      bullet5.2.2 DNAT
      bullet5.2.3 Proxy ARP
      bullet5.2.4 Static NAT
      -
      bullet5.3 Rules
      bullet5.4 Odds and Ends
      -
      bullet6.0 DNS
      bullet7.0 Starting and - Stopping the Firewall
      -

      Additional Documentation

      + +

      Additional Documentation

      The following documentation covers a variety of topics and supplements the -QuickStart Guides described above.

      -
      - - - - - - - - - - - - - - - - -
      bulletBlacklisting - - -
      bulletStatic Blacklisting using /etc/shorewall/blacklist
      bulletDynamic Blacklisting using /sbin/shorewall
      -
      bulletCommon configuration file features - - - - - - - - -
      bulletComments in configuration files
      bulletLine Continuation
      bulletPort Numbers/Service Names
      bulletPort Ranges
      bulletUsing Shell Variables
      bulletComplementing an IP address or Subnet
      bulletShorewall Configurations (making a test configuration)
      bulletUsing MAC Addresses in Shorewall
      -
      bulletConfiguration File Reference Manual - - - - - - - - - - - - - - - - - - -
      bullet - params
      bulletzones
      bulletinterfaces
      bullethosts
      bulletpolicy
      bulletrules
      bulletcommon
      bulletmasq
      bulletproxyarp
      bulletnat
      bullettunnels
      bullettcrules
      bulletshorewall.conf
      bulletmodules
      bullettos
      bulletblacklist
      bulletrfc1918
      bulletroutestopped
      -
      bulletDHCP
      bulletExtension Scripts - (How to extend Shorewall without modifying Shorewall code)
      bulletFallback/Uninstall
      bulletFirewall Structure
      bulletKernel Configuration
      bulletMy - Configuration Files (How I personally use Shorewall)
      bulletPort Information - - -
      bulletWhich applications use which ports
      bulletPorts used by Trojans
      -
      bulletProxy ARP
      bulletSamba
      bulletStarting/stopping the Firewall
      bulletStatic NAT
      bulletTunnels - - - -
      bulletIPSEC
      bulletGRE and IPIP
      bulletPPTP
      -
      bulletWhite List Creation
      +QuickStart Guides described above.

      +

      If you use one of these guides and have a suggestion for improvement please let me know.

      Copyright 2002 Thomas M. Eastep

      -
      + \ No newline at end of file diff --git a/STABLE/documentation/shorewall_setup_guide.htm b/STABLE/documentation/shorewall_setup_guide.htm index 3ffd11b9e..fefe0e2ab 100644 --- a/STABLE/documentation/shorewall_setup_guide.htm +++ b/STABLE/documentation/shorewall_setup_guide.htm @@ -6,12 +6,12 @@ Shorewall Setup Guide - + - + -

      Shorewall Setup Guide

      +

      Shorewall Setup Guide

      1.0 Introduction
      2.0 Shorewall Concepts
      3.0 Network Interfaces
      @@ -38,7 +38,7 @@

    6.0 DNS
    7.0 Starting and Stopping the Firewall

    -

    1.0 Introduction

    +

    1.0 Introduction

    This guide is intended for users who are setting up Shorewall in an environment where a set of public IP addresses must be managed or who want to know more about Shorewall than is contained in the @@ -46,29 +46,33 @@ know more about Shorewall than is contained in the guides. Because the range of possible applications is so broad, the Guide will give you general guidelines and will point you to other resources as necessary.

    +

        +If you run LEAF Bering, your Shorewall configuration is NOT what I release -- I +suggest that you consider installing a stock Shorewall lrp from the +shorewall.net site before you proceed.

    This guide assumes that you have the iproute/iproute2 package installed (on RedHat, the package is called iproute). You can tell if this package is installed by the presence of an ip program on your firewall system. As root, you can use the 'which' command to check for this program:

    -
         [root@gateway root]# which ip
    +
         [root@gateway root]# which ip
          /sbin/ip
    -     [root@gateway root]#

    I recommend that you first read through the + [root@gateway root]#

    I recommend that you first read through the guide to familiarize yourself with what's involved then go back through it again making your configuration changes. Points at which configuration changes are recommended are flagged with .

        If you edit your configuration files on a Windows system, you must save them as Unix files if your editor supports that option or you must run them through -dos2unix before trying to use them. Similarly, if you copy a configuration file +dos2unix before trying to use them with Shorewall. Similarly, if you copy a configuration file from your Windows hard drive to a floppy disk, you must run dos2unix against the copy before using it with Shorewall.

    -
    - - -
    bulletWindows Version of - dos2unix
    bulletLinux Version of - dos2unix
    -

    2.0 Shorewall Concepts

    + +

    2.0 Shorewall Concepts

    The configuration files for Shorewall are contained in the directory /etc/shorewall -- for most setups, you will only need to deal with a few of these as described in this guide. Skeleton files are created during the @@ -78,24 +82,24 @@ look through the actual file on your system -- each file contains detailed configuration instructions and some contain default entries.

    Shorewall views the network where it is running as being composed of a set of zones. In the default installation, the following zone names are used:

    -
    +
    - - + + - - + + - - + + - - + + -
    NameDescriptionNameDescription
    netThe InternetnetThe Internet
    locYour Local NetworklocYour Local Network
    dmzDemilitarized ZonedmzDemilitarized Zone
    +

    Zones are defined in the /etc/shorewall/zones file.

    Shorewall also recognizes the firewall system as its own zone - by default, @@ -110,16 +114,17 @@ or "because that is the DMZ".

    /etc/shorewall/zones file and make any changes necessary.

    Rules about what traffic to allow and what traffic to deny are expressed in terms of zones.

    -
    - - -
    bulletYou express your default policy for connections from one zone to another - zone in the /etc/shorewall/policy file.
    bulletYou define exceptions to those default policies in the - /etc/shorewall/rules file.
    +

    Shorewall is built on top of the Netfilter kernel facility. Netfilter -implements a connection tracking function that allow what is often referred -to as statefull inspection of packets. This statefull property allows +implements a + connection tracking function that allows what is often referred +to as stateful inspection of packets. This stateful property allows firewall rules to be defined in terms of connections rather than in terms of packets. With Shorewall, you:

      @@ -135,9 +140,9 @@ terms of packets. With Shorewall, you:

      is expressed in terms of the client's zone and the server's zone.

    - Just because connections of a particular type are allowed between zone A - and the firewall and are also allowed between the firewall and zone B - DOES NOT mean that these connections are allowed between zone A and zone + Just because connections of a particular type are allowed from zone A to the + firewall and are also allowed from the firewall to zone B + DOES NOT mean that these connections are allowed from zone A to zone B. It rather means that you can have a proxy running on the firewall that accepts a connection from zone A and then establishes its own separate connection from the firewall to zone B.

    @@ -149,36 +154,36 @@ request is first checked against the rules in /etc/shorewall/common.def.

    The default /etc/shorewall/policy file has the following policies:

    - +
    - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + -
    Source ZoneDestination ZonePolicyLog LevelLimit:BurstSource ZoneDestination ZonePolicyLog LevelLimit:Burst
    locnetACCEPT  locnetACCEPT  
    netallDROPinfo netallDROPinfo 
    allallREJECTinfo allallREJECTinfo 
    +

    The above policy will:

      @@ -191,23 +196,21 @@ following policies:

        At this point, edit your /etc/shorewall/policy and make any changes that you wish.

    -

    3.0 Network Interfaces

    +

    3.0 Network Interfaces

    For the remainder of this guide, we'll refer to the following diagram. While it may not look like your own network, it can be used to illustrate the important aspects of Shorewall configuration.

    In this diagram:

    -
    - - - -
    bullet -

    The DMZ Zone consists of systems DMZ 1 and DMZ 2.

    -
    bullet -

    The Local Zone consists of systems Local 1, Local 2 and Local 3.

    -
    bullet -

    All systems from the ISP outward comprise the Internet Zone.

    -
    -

    +
      +
    • The DMZ Zone consists of systems DMZ 1 and DMZ 2. A DMZ is used to isolate your +internet-accessible servers from your local systems so that if one of those +servers is compromised, you still have the firewall between the compromised +system and your local systems.
    • +
    • The Local Zone consists of systems Local 1, Local 2 and Local 3.
    • +
    • All systems from the ISP outward comprise the Internet Zone.
    • +
    +

    +

    The simplest way to define zones is to simply associate the zone name (previously defined in /etc/shorewall/zones) with a network interface. This is done in the /etc/shorewall/interfaces @@ -239,50 +242,49 @@ cable).

    Do not connect more than one interface to the same hub or switch (even for testing). It won't work the way that you -expect it to and you will end up confused and -believing that Shorewall doesn't work at all.

    +expect it to and you will end up confused and believing that Linux networking doesn't work at all.

    For the remainder of this Guide, we will assume that:

    -
    - - - -
    bullet -

    The external interface is eth0.

    -
    bullet -

    The Local interface is eth1.

    -
    bullet -

    The DMZ interface is eth2.

    -
    +
      +
    • +

      The external interface is eth0.

      +
    • +
    • +

      The Local interface is eth1.

      +
    • +
    • +

      The DMZ interface is eth2.

      +
    • +

    The Shorewall default configuration does not define the contents of any zone. To define the above configuration using the /etc/shorewall/interfaces file, that file would might contain:

    - +
    - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + -
    ZoneInterfaceBroadcastOptionsZoneInterfaceBroadcastOptions
    neteth0detectnorfc1918neteth0detectnorfc1918
    loceth1detect loceth1detect 
    dmzeth2detect dmzeth2detect 
    +

        Edit the /etc/shorewall/interfaces file and define the network interfaces on @@ -291,61 +293,61 @@ is interfaced through more than one interface, simply include one entry for each interface and repeat the zone name as many times as necessary.

    Example:

    - +
    - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + -
    ZoneInterfaceBroadcastOptionsZoneInterfaceBroadcastOptions
    neteth0detectnorfc1918neteth0detectnorfc1918
    loceth1detect loceth1detect 
    loceth2detectdhcploceth2detectdhcp
    +

    When you have more than one interface to a zone, you will usually want a policy that permits intra-zone traffic:

    - +
    - - - - - + + + + + - - - - - + + + + + -
    Source ZoneDestination ZonePolicyLog LevelLimit:BurstSource ZoneDestination ZonePolicyLog LevelLimit:Burst
    loclocACCEPT  loclocACCEPT  
    +

        You may define more complicated zones using the /etc/shorewall/hosts file but in most cases, that isn't necessary.

    -

    4.0 Addressing, Subnets and Routing

    +

    4.0 Addressing, Subnets and Routing

    Normally, your ISP will assign you a set of Public IP addresses. You will configure your firewall's external interface to use one of those addresses permanently and you will then have to decide how you are @@ -357,7 +359,7 @@ you may go to the next section.

    this subject, I highly recommend "IP Fundamentals: What Everyone Needs to Know about Addressing & Routing", Thomas A. Maufer, Prentice-Hall, 1999, ISBN 0-13-975483-0.

    -

    4.1 IP Addresses

    +

    4.1 IP Addresses

    IP version 4 (IPv4) addresses are 32-bit numbers. The notation w.x.y.z refers to an address where the high-order byte has value "w", the next byte has value "x", etc. If we take the address 192.0.2.14 and express it in hexadecimal, @@ -369,10 +371,10 @@ we get:

    C000020E

    -

    4.2 Subnets

    +

    4.2 Subnets

    You will still hear the terms "Class A network", "Class B network" and "Class C network". In the early days of IP, networks only came -in three sizes:

    +in three sizes (there were also Class D networks but they were used differently):

    Class A - netmask 255.0.0.0, size = 2 ** 24

    Class B - netmask 255.255.0.0, size = 2 ** 16

    @@ -413,175 +415,176 @@ thing of the past.

    As you can see by this definition, in each subnet of size n there are (n - 2) usable addresses (addresses that can be assigned to hosts). The first and last address in the subnet are used for the subnet - address and subnet broadcast address respectively.

    + address and subnet broadcast address respectively. Consequently, small + subnetworks are more wasteful of IP addresses than are large ones.

    Since n is a power of two, we can easily calculate the Natural Logarithm (log2) of n. For the more common subnet sizes, the size and its natural logarithm are given in the following table:

    - +
    - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + -
    nllog2 n(32 - log2 n)nlog2 n(32 - log2 n)
    83298329
    1642816428
    3252732527
    6462664626
    128725128725
    256824256824
    512923512923
    1024102210241022
    2048112120481121
    4096122040961220
    8192131981921319
    163841418163841418
    327681517327681517
    655361616655361616
    +

    You will notice that the above table also contains a column - for (32 - log2 n). That number is the Variable Length Subnet Mask for a network of size n. From the above table, we can - extract the following one which is a little easier to use.

    + for (32 - log2 n). That number is the Variable Length Subnet Mask for a network of size n. + From the above table, we can derive the following one which is a little easier to use.

    - +
    - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + -
    Size of SubnetVLSMSubnet MaskSize of SubnetVLSMSubnet Mask
    8/29255.255.255.2488/29255.255.255.248
    16/28255.255.255.24016/28255.255.255.240
    32/27255.255.255.22432/27255.255.255.224
    64/26255.255.255.19264/26255.255.255.192
    128/25255.255.255.128128/25255.255.255.128
    256/24255.255.255.0256/24255.255.255.0
    512/23255.255.254.0512/23255.255.254.0
    1024/22255.255.252.01024/22255.255.252.0
    2048/21255.255.248.02048/21255.255.248.0
    4096/20255.255.240.04096/20255.255.240.0
    8192/19255.255.224.08192/19255.255.224.0
    16384/18255.255.192.016384/18255.255.192.0
    32768/17255.255.128.032768/17255.255.128.0
    65536/16255.255.0.065536/16255.255.0.0
    2 ** 24/8255.0.0.02 ** 24/8255.0.0.0
    +

    Notice that the VLSM is written with a slash ("/") -- you will often hear a subnet of size 64 referred to as a "slash 26" subnet and one of @@ -596,58 +599,59 @@ thing of the past.

    The subnet mask has the property that if you logically AND the subnet mask with an address in the subnet, the result is the subnet address. Just as important, if you logically AND the subnet mask with an address - outside the subnet, the result is NOT the subnet address.

    + outside the subnet, the result is NOT the subnet address. As we will see + below, this property of subnet masks is very useful in routing.

    For a subnetwork whose address is a.b.c.d and whose Variable Length Subnet Mask is /v, we denote the subnetwork as "a.b.c.d/v" using VLSM Notation

    Example:

    - +
    - - + + - - + + - - + + - - + + - - + + -
    Subnet:10.10.10.0 - 10.10.10.127Subnet:10.10.10.0 - 10.10.10.127
    Subnet Size:128Subnet Size:128
    Subnet Address:10.10.10.0Subnet Address:10.10.10.0
    Broadcast Address:10.10.10.127Broadcast Address:10.10.10.127
    VLSM Notation:10.10.10.0/25VLSM Notation:10.10.10.0/25
    +

    There are two degenerate subnets that need mentioning; namely, the subnet with one member and the subnet with 2 ** 32 members.

    - +
    - - - - + + + + - - - - + + + + - - - - + + + + -
    Size of SubnetworkVLSM LengthSubnet MaskVLSM NotationSize of SubnetworkVLSM LengthSubnet MaskVLSM Notation
    132255.255.255.255a.b.c.d/32132255.255.255.255a.b.c.d/32
    2 ** 3200.0.0.00.0.0.0/02 ** 3200.0.0.00.0.0.0/0
    +

    So any address a.b.c.d may also be written a.b.c.d/32 and the set of all possible IP addresses is written 0.0.0.0/0.

    @@ -658,12 +662,12 @@ ip address a.b.c.d and with the netmask that corresponds to VLSM /vExample: 192.0.2.65/29

        The interface is configured with IP address 192.0.2.65 and netmask 255.255.255.248.

    -

    4.3 Routing

    +

    4.3 Routing

    One of the purposes of subnetting is that it forms the basis for routing. Here's the routing table on my firewall:

    -
    [root@gateway root]# netstat -nr
    +    
    [root@gateway root]# netstat -nr
     Kernel IP routing table
     Destination 	Gateway 	Genmask 	Flags MSS Window irtt Iface
     192.168.9.1 	0.0.0.0 	255.255.255.255 UH    40  0         0 texas
    @@ -676,7 +680,7 @@ Destination 	Gateway 	Genmask 	Flags MSS Window irtt Iface
     192.168.9.0     192.0.2.223 	255.255.255.0 	UG    40  0         0 texas
     127.0.0.0 	0.0.0.0 	255.0.0.0 	U     40  0         0 lo
     0.0.0.0 	206.124.146.254 0.0.0.0 	UG    40  0         0 eth0
    -[root@gateway root]#
    +[root@gateway root]#

    The device texas is a GRE tunnel to a peer site in the @@ -690,33 +694,33 @@ route and the gateway mentioned in that route is called the default gateway.

    When the kernel is trying to send a packet to IP address A, it starts at the top of the routing table and:

    -
    - - - - -
    bullet +
      +
    • A is logically ANDed with the 'Genmask' value in the table entry.

      -
    bullet + +
  • The result is compared with the 'Destination' value in the table entry.

    -
  • bullet + +
  • If the result and the 'Destination' value are the same, then:

    -
    - - -
    bullet +
      +
    • If the 'Gateway' column is non-zero, the packet is sent to the gateway over the interface named in the 'Iface' column.

      -
    bullet + +
  • Otherwise, the packet is sent directly to A over the interface named in the 'iface' column.

    -
  • -
  • bullet + + + +
  • Otherwise, the above steps are repeated on the next entry in the table.

    -
  • + +

    Since the default route matches any IP address (A land 0.0.0.0 = 0.0.0.0), packets that don't match any of the other routing table entries are sent to the default gateway which is usually a router at your @@ -727,10 +731,17 @@ table but if we logically and that address with 255.255.255.0, the result is 192.168.1.0 which matches this routing table entry:

    -
    192.168.1.0     0.0.0.0 	255.255.255.0 	U     40  0         0 eth2
    +
    192.168.1.0     0.0.0.0 	255.255.255.0 	U     40  0         0 eth2

    So to route a packet to 192.168.1.5, the packet is sent directly over eth2.

    -

    4.4 Address Resolution Protocol

    +

    One more thing needs to be emphasized -- all outgoing packet are +sent using the routing table and reply packets are not a special case. There +seems to be a common mis-conception whereby people think that request packets +are like salmon and contain a genetic code that is magically transferred to +reply packets so that the replies follow the reverse route taken by the request. +That isn't the case; the replies may take a totally different route back to the +client than was taken by the requests -- they are totally independent.

    +

    4.4 Address Resolution Protocol

    When sending packets over Ethernet, IP addresses aren't used. Rather Ethernet addressing is based on Media Access Control (MAC) addresses. Each Ethernet device has it's own unique  MAC address which is @@ -738,13 +749,13 @@ burned into a PROM on the device during manufacture. You can obtain the MAC of an Ethernet device using the 'ip' utility:

    -
    [root@gateway root]# ip addr show eth0
    +    
    [root@gateway root]# ip addr show eth0
     2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc htb qlen 100
     link/ether 02:00:08:e3:fa:55 brd ff:ff:ff:ff:ff:ff
     inet 206.124.146.176/24 brd 206.124.146.255 scope global eth0
     inet 206.124.146.178/24 brd 206.124.146.255 scope global secondary eth0
     inet 206.124.146.179/24 brd 206.124.146.255 scope global secondary eth0
    -[root@gateway root]#
    +[root@gateway root]#
    @@ -760,7 +771,7 @@ inet 206.124.146.179/24 brd 206.124.146.255 scope global secondary eth0
    -
    [root@gateway root]# tcpdump -nei eth2 arp
    +      
    [root@gateway root]# tcpdump -nei eth2 arp
     tcpdump: listening on eth2
     09:56:49.766757 2:0:8:e3:4c:48 0:6:25:aa:8a:f0 arp 42: arp who-has 192.168.1.19 tell 192.168.1.254
     09:56:49.769372 0:6:25:aa:8a:f0 2:0:8:e3:4c:48 arp 60: arp reply 192.168.1.19 is-at 0:6:25:aa:8a:f0
    @@ -768,7 +779,7 @@ tcpdump: listening on eth2
     2 packets received by filter
     0 packets dropped by kernel
     [root@gateway root]#
    -
    +
    @@ -782,12 +793,12 @@ IP<->MAC correspondences. You can see the ARP cache on your system (includ your Windows system) using the 'arp' command:

    -
    [root@gateway root]# arp -na
    +    
    [root@gateway root]# arp -na
     ? (206.124.146.177) at 00:A0:C9:15:39:78 [ether] on eth1
     ? (192.168.1.3) at 00:A0:CC:63:66:89 [ether] on eth2
     ? (192.168.1.5) at 00:A0:CC:DB:31:C4 [ether] on eth2
     ? (206.124.146.254) at 00:03:6C:8A:18:38 [ether] on eth0
    -? (192.168.1.19) at 00:06:25:AA:8A:F0 [ether] on eth2
    +? (192.168.1.19) at 00:06:25:AA:8A:F0 [ether] on eth2

    The leading question marks are a result of my having specified @@ -796,23 +807,23 @@ program to forego IP->DNS name translation. Had I not given that option, the question marks would have been replaced with the FQDN corresponding to each IP address. Notice that the last entry in the table records the information we saw using tcpdump above.

    -

    4.5 RFC 1918

    +

    4.5 RFC 1918

    IP addresses are allocated by the Internet Assigned Number Authority (IANA) who delegates allocations on a geographic basis to Regional Internet Registries (RIRs). For example, allocation for the Americas and for sub-Sahara Africa is delegated to the American Registry for Internet Numbers (ARIN). These RIRs may in turn delegate to -national registrys. Most of us don't deal with these registrars but rather get +national registries. Most of us don't deal with these registrars but rather get our IP addresses from our ISP.

    It's a fact of life that most of us can't afford as many Public IP addresses as we have devices to assign them to so we end up making use of Private IP addresses. RFC 1918 reserves several IP address ranges for this purpose:

    -
         10.0.0.0    - 10.255.255.255
    +  
         10.0.0.0    - 10.255.255.255
          172.16.0.0  - 172.31.255.255
    -     192.168.0.0 - 192.168.255.255
    + 192.168.0.0 - 192.168.255.255

    The addresses reserved by RFC 1918 are sometimes referred to @@ -823,21 +834,21 @@ purpose:

    When selecting addresses from these ranges, there's a couple of things to keep in mind:

    - - - -
    bullet

    As the IPv4 address space becomes depleted, more and more +

      +
    • As the IPv4 address space becomes depleted, more and more organizations (including ISPs) are beginning to use RFC 1918 addresses in - their infrastructure.

    bullet

    You don't want to use addresses that are being used by + their infrastructure. +

  • You don't want to use addresses that are being used by your ISP or by another organization with whom you want to establish a VPN - relationship.

  • + relationship. +

    So it's a good idea to check with your ISP to see if they are using (or are planning to use) private addresses before you decide the addresses that you are going to use.

    -

    5.0 Setting up your Network

    +

    5.0 Setting up your Network

    The choice of how to set up your network depends primarily on @@ -861,7 +872,7 @@ purpose:

    In the subsections that follow, we'll look at each of these separately.

    -

    5.1 Routed

    +

    5.1 Routed

    Let's assume that your ISP has assigned you the subnet @@ -872,7 +883,8 @@ purpose:

    addresses, you are able to subnet your /28 into two /29's and set up your network as shown in the following diagram.
    -

    +

    +

    Here, the DMZ comprises the subnet 192.0.2.64/29 and the Local network is 192.0.2.72/29. The default gateway for hosts in the DMZ would be @@ -893,10 +905,10 @@ purpose:

    DMZ 1 will look like this:
    -
    Kernel IP routing table
    +    
    Kernel IP routing table
     Destination 	Gateway 	Genmask 	Flags MSS Window irtt Iface
     192.0.2.64 	0.0.0.0 	255.255.255.248 U     40  0         0 eth0
    -0.0.0.0 	192.0.2.66	0.0.0.0 	UG    40  0         0 eth0
    +0.0.0.0 192.0.2.66 0.0.0.0 UG 40 0 0 eth0
    @@ -914,7 +926,7 @@ Destination Gateway Genmask Flags MSS Window irtt Iface of the firewall's interfaces that connect to the hub/switch can respond! It is then a race as to which "here-is" response reaches the sender first.
    -

    5.2 Non-routed

    +

    5.2 Non-routed

    If you have the above situation but it is @@ -934,24 +946,24 @@ Destination Gateway Genmask Flags MSS Window irtt Iface and there aren't enough addresses for all of the network interfaces. There are four different techniques that can be used to work around this problem.

    - - - - - -
    bullet -

    Source Network Address Translation (SNAT).

    bullet +
      +
    • +

      Source Network Address Translation (SNAT).

    • +
    • Destination Network Address Translation (DNAT) also - known as Port Forwarding.

    bullet -

    Proxy ARP.

    bullet + known as Port Forwarding. +
  • +

    Proxy ARP.

  • +
  • Network Address Translation (NAT) also referred to as - Static NAT.

  • + Static NAT. +

    Often a combination of these techniques is used. Each of these will be discussed in the sections that follow.

    -

     5.2.1 SNAT

    +

     5.2.1 SNAT

    With SNAT, an internal LAN segment is configured using RFC 1918 @@ -966,7 +978,8 @@ Destination Gateway Genmask Flags MSS Window irtt Iface and use public address 192.0.2.176 as both your firewall's external IP address and the source IP address of internet requests sent from that zone.

    -

    +

    +

    The local zone has been subnetted as 192.168.201.0/29 (netmask @@ -985,18 +998,18 @@ Destination Gateway Genmask Flags MSS Window irtt Iface /etc/shorewall/masq file.
    - +
    - - - + + + - - - + + + -
    INTERFACESUBNETADDRESSINTERFACESUBNETADDRESS
    eth0192.168.201.0/29192.0.2.176eth0192.168.201.0/29192.0.2.176
    +
    @@ -1007,7 +1020,7 @@ Destination Gateway Genmask Flags MSS Window irtt Iface external interface or you could set ADD_SNAT_ALIASES=Yes in /etc/shorewall/shorewall.conf and Shorewall will add the address for you.
    -

    5.2.2 DNAT

    +

    5.2.2 DNAT

    When SNAT is used, it is impossible for hosts on the internet @@ -1021,26 +1034,26 @@ Destination Gateway Genmask Flags MSS Window irtt Iface entry in /etc/shorewall/rules:

    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL DESTINATIONACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL DESTINATION
    DNATnetloc:192.168.201.4tcpwww-192.0.2.176DNATnetloc:192.168.201.4tcpwww-192.0.2.176
    +
    @@ -1056,29 +1069,30 @@ Destination Gateway Genmask Flags MSS Window irtt Iface You can use another of your public IP addresses but Shorewall will not add that address to the firewall's external interface for you.
    -

    5.2.3 Proxy ARP

    +

    5.2.3 Proxy ARP

    The idea behind proxy ARP is that:

    - - - - -
    bullet +
      +
    • A host H behind your firewall is assigned one of your public IP addresses (A) and is assigned the same netmask (M) as - the firewall's external interface.

    bullet -

    The firewall responds to ARP "who has" requests for A.

    bullet + the firewall's external interface. +
  • +

    The firewall responds to ARP "who has" requests for A.

  • +
  • When H issues an ARP "who has" request for an address in the subnetwork defined by A and M, the firewall will respond - (with the MAC if the firewall interface to H).

  • + (with the MAC if the firewall interface to H). +

    Let suppose that we decide to use Proxy ARP on the DMZ in our example network.

    -

    +

    +

    Here, we've assigned the IP addresses 192.0.2.177 to system DMZ 1 and 192.0.2.178 to DMZ 2. Notice that we've just assigned an arbitrary RFC 1918 IP @@ -1093,33 +1107,65 @@ Destination Gateway Genmask Flags MSS Window irtt Iface /etc/shorewall/proxyarp file.
    - +
    - - - - + + + + - - - - + + + + - - - - + + + + -
    ADDRESSINTERFACEEXTERNALHAVE ROUTEADDRESSINTERFACEEXTERNALHAVE ROUTE
    192.0.2.177eth2eth0No192.0.2.177eth2eth0No
    192.0.2.178eth2eth0No192.0.2.178eth2eth0No
    +

    Because the HAVE ROUTE column contains No, Shorewall will add host routes thru eth2 to 192.0.2.177 and 192.0.2.178.

    -

    5.2.4 Static NAT

    +

    A word of warning is in order here. ISPs typically configure + their routers with a long ARP cache timeout. If you move a system from + parallel to your firewall to behind your firewall with Proxy ARP, it will + probably be HOURS before that system can communicate with the internet. You + can call your ISP and ask them to purge the stale ARP cache entry but many + either can't or won't purge individual entries. You can determine if your + ISP's gateway ARP cache is stale using ping and tcpdump. Suppose that we + suspect that the gateway router has a stale ARP cache entry for 192.0.2.177. + On the firewall, run tcpdump as follows:

    +
    +
    	tcpdump -nei eth0 icmp
    +
    +
    +

    Now from 192.0.2.177, ping the default gateway (which we are + assuming is 192.0.2.254):

    +
    +
    	ping 192.0.2.254
    +
    +
    +

    We can now observe the tcpdump output:

    +
    +
    	13:35:12.159321 0:4:e2:20:20:33 0:0:77:95:dd:19 ip 98: 192.0.2.177 > 192.0.2.254: icmp: echo request (DF)
    +	13:35:12.207615 0:0:77:95:dd:19 0:c0:a8:50:b2:57 ip 98: 192.0.2.254 > 192.0.2.177 : icmp: echo reply
    +
    +
    +

    Notice that the source MAC address in the echo request is + different from the destination MAC address in the echo reply!! In this case + 0:4:e2:20:20:33 was the MAC of the firewall's eth0 NIC while 0:c0:a8:50:b2:57 + was the MAC address of DMZ 1. In other words, the gateway's ARP cache still + associates 192.0.2.177 with the NIC in DMZ 1 rather than with the firewall's + eth0.

    +
    +

    5.2.4 Static NAT

    With static NAT, you assign local systems RFC 1918 addresses @@ -1128,25 +1174,25 @@ Destination Gateway Genmask Flags MSS Window irtt Iface DNAT occurs. Let's go back to our earlier example involving your daughter's web server running on system Local 3.

    -

    +

    Recall that in this setup, the local network is using SNAT and is sharing the firewall external IP (192.0.2.176) for outbound connections. This is done with the following entry in /etc/shorewall/masq:

    - +
    - - - + + + - - - + + + -
    INTERFACESUBNETADDRESSINTERFACESUBNETADDRESS
    eth0192.168.201.0/29192.0.2.176eth0192.168.201.0/29192.0.2.176
    +
    @@ -1156,22 +1202,22 @@ Destination Gateway Genmask Flags MSS Window irtt Iface adding an entry in /etc/shorewall/nat.
    - +
    - - - - - + + + + + - - - - - + + + + + -
    EXTERNALINTERFACEINTERNALALL INTERFACES LOCALEXTERNALINTERFACEINTERNALALL INTERFACES LOCAL
    192.0.2.179eth0192.168.201.4NoNo192.0.2.179eth0192.168.201.4NoNo
    +
    @@ -1185,30 +1231,30 @@ Destination Gateway Genmask Flags MSS Window irtt Iface rather just use an ACCEPT rule:
    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL DESTINATIONACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL DESTINATION
    ACCEPTnetloc:192.168.201.4tcpwww  ACCEPTnetloc:192.168.201.4tcpwww  
    +
    -

    5.3 Rules

    +

    5.3 Rules

        @@ -1225,43 +1271,43 @@ Destination Gateway Genmask Flags MSS Window irtt Iface

    You probably want to allow ping between your zones:

    - +
    - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTACTIONSOURCEDESTINATIONPROTOCOLPORT
    ACCEPTnetdmzicmpecho-requestACCEPTnetdmzicmpecho-request
    ACCEPTnetlocicmpecho-requestACCEPTnetlocicmpecho-request
    ACCEPTdmzlocicmpecho-requestACCEPTdmzlocicmpecho-request
    ACCEPTlocdmzicmpecho-requestACCEPTlocdmzicmpecho-request
    +
    @@ -1269,88 +1315,88 @@ Destination Gateway Genmask Flags MSS Window irtt Iface a Web Server on DMZ 1. The rules that you would need are:
    - +
    - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTCOMMENTSACTIONSOURCEDESTINATIONPROTOCOLPORTCOMMENTS
    ACCEPTnetdmz:192.0.2.178tcpsmtp# Mail from the InternetACCEPTnetdmz:192.0.2.178tcpsmtp# Mail from the Internet
    ACCEPTnetdmz:192.0.2.178tcppop3# Pop3 from the InternetACCEPTnetdmz:192.0.2.178tcppop3# Pop3 from the Internet
    ACCEPTlocdmz:192.0.2.178tcpsmtp# Mail from the Local NetworkACCEPTlocdmz:192.0.2.178tcpsmtp# Mail from the Local Network
    ACCEPTlocdmz:192.0.2.178tcppop3# Pop3 from the Local NetworkACCEPTlocdmz:192.0.2.178tcppop3# Pop3 from the Local Network
    ACCEPTfwdmz:192.0.2.178tcpsmtp# Mail from the FirewallACCEPTfwdmz:192.0.2.178tcpsmtp# Mail from the Firewall
    ACCEPTdmz:192.0.2.178nettcpsmtp# Mail to the InternetACCEPTdmz:192.0.2.178nettcpsmtp# Mail to the Internet
    ACCEPTnetdmz:192.0.2.177tcphttp# WWW from the NetACCEPTnetdmz:192.0.2.177tcphttp# WWW from the Net
    ACCEPTnetdmz:192.0.2.177tcphttps# Secure HTTP from the NetACCEPTnetdmz:192.0.2.177tcphttps# Secure HTTP from the Net
    ACCEPTlocdmz:192.0.2.177tcphttps# Secure HTTP from the Local NetACCEPTlocdmz:192.0.2.177tcphttps# Secure HTTP from the Local Net
    +
    @@ -1358,80 +1404,80 @@ Destination Gateway Genmask Flags MSS Window irtt Iface to add the following rules:
    - +
    - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTCOMMENTSACTIONSOURCEDESTINATIONPROTOCOLPORTCOMMENTS
    ACCEPTnetdmz:192.0.2.177udpdomain# UDP DNS from the InternetACCEPTnetdmz:192.0.2.177udpdomain# UDP DNS from the Internet
    ACCEPTnetdmz:192.0.2.177tcpdomain# TCP DNS from the internetACCEPTnetdmz:192.0.2.177tcpdomain# TCP DNS from the internet
    ACCEPTfwdmz:192.0.2.177udpdomain# UDP DNS from firewallACCEPTfwdmz:192.0.2.177udpdomain# UDP DNS from firewall
    ACCEPTfwdmz:192.0.2.177tcpdomain# TCP DNS from firewallACCEPTfwdmz:192.0.2.177tcpdomain# TCP DNS from firewall
    ACCEPTlocdmz:192.0.2.177udpdomain# UDP DNS from the local NetACCEPTlocdmz:192.0.2.177udpdomain# UDP DNS from the local Net
    ACCEPTlocdmz:192.0.2.177tcpdomain# TCP DNS from the local NetACCEPTlocdmz:192.0.2.177tcpdomain# TCP DNS from the local Net
    ACCEPTdmz:192.0.2.177netudpdomain# UDP DNS to the InternetACCEPTdmz:192.0.2.177netudpdomain# UDP DNS to the Internet
    ACCEPTdmz:192.0.2.177nettcpdomain# TCP DNS to the InternetACCEPTdmz:192.0.2.177nettcpdomain# TCP DNS to the Internet
    +
    @@ -1440,36 +1486,36 @@ Destination Gateway Genmask Flags MSS Window irtt Iface scp utility can also do publishing and software update distribution.
    - +
    - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTCOMMENTSACTIONSOURCEDESTINATIONPROTOCOLPORTCOMMENTS
    ACCEPTlocdmztcpssh# SSH to the DMZACCEPTlocdmztcpssh# SSH to the DMZ
    ACCEPTlocfwtcpssh# SSH to the FirewallACCEPTlocfwtcpssh# SSH to the Firewall
    +
    -

    5.4 Odds and Ends

    +

    5.4 Odds and Ends

    The above discussion reflects my personal preference for using @@ -1492,32 +1538,32 @@ Destination Gateway Genmask Flags MSS Window irtt Iface site-specific).

    - +
    - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + -
    ZoneInterfaceBroadcastOptionsZoneInterfaceBroadcastOptions
    neteth0detectnorfc1918,routefilter neteth0detectnorfc1918,routefilter
    loceth1detect loceth1detect 
    dmzeth2detect dmzeth2detect 
    +
    @@ -1528,302 +1574,302 @@ Destination Gateway Genmask Flags MSS Window irtt Iface you bring up your network interfaces.
    - +
    - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + -
    ZoneInterfaceBroadcastOptionsZoneInterfaceBroadcastOptions
    neteth0192.0.2.255norfc1918,routefilter neteth0192.0.2.255norfc1918,routefilter
    loceth1192.168.201.7 loceth1192.168.201.7 
    dmzeth2192.168.202.7 dmzeth2192.168.202.7 
    +

    /etc/shorewall/masq - Local subnet

    - +
    - - - + + + - - - + + + -
    INTERFACESUBNETADDRESSINTERFACESUBNETADDRESS
    eth0192.168.201.0/29192.0.2.176eth0192.168.201.0/29192.0.2.176
    +

    /etc/shorewall/proxyarp - DMZ

    - +
    - - - - + + + + - - - - + + + + - - - - + + + + -
    ADDRESSINTERFACEEXTERNALHAVE ROUTEADDRESSINTERFACEEXTERNALHAVE ROUTE
    192.0.2.177eth2eth0No192.0.2.177eth2eth0No
    192.0.2.178eth2eth0No192.0.2.178eth2eth0No
    +

    /etc/shorewall/nat- Daughter's System

    - +
    - - - - - + + + + + - - - - - + + + + + -
    EXTERNALINTERFACEINTERNALALL INTERFACES LOCALEXTERNALINTERFACEINTERNALALL INTERFACES LOCAL
    192.0.2.179eth0192.168.201.4NoNo192.0.2.179eth0192.168.201.4NoNo
    +

    /etc/shorewall/rules

    - +
    - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTCOMMENTSACTIONSOURCEDESTINATIONPROTOCOLPORTCOMMENTS
    ACCEPTnetdmz:192.0.2.178tcpsmtp# Mail from the InternetACCEPTnetdmz:192.0.2.178tcpsmtp# Mail from the Internet
    ACCEPTnetdmz:192.0.2.178tcppop3# Pop3 from the InternetACCEPTnetdmz:192.0.2.178tcppop3# Pop3 from the Internet
    ACCEPTlocdmz:192.0.2.178tcpsmtp# Mail from the Local NetworkACCEPTlocdmz:192.0.2.178tcpsmtp# Mail from the Local Network
    ACCEPTlocdmz:192.0.2.178tcppop3# Pop3 from the Local NetworkACCEPTlocdmz:192.0.2.178tcppop3# Pop3 from the Local Network
    ACCEPTfwdmz:192.0.2.178tcpsmtp# Mail from the FirewallACCEPTfwdmz:192.0.2.178tcpsmtp# Mail from the Firewall
    ACCEPTdmz:192.0.2.178nettcpsmtp# Mail to the InternetACCEPTdmz:192.0.2.178nettcpsmtp# Mail to the Internet
    ACCEPTnetdmz:192.0.2.178tcphttp# WWW from the NetACCEPTnetdmz:192.0.2.178tcphttp# WWW from the Net
    ACCEPTnetdmz:192.0.2.178tcphttps# Secure HTTP from the NetACCEPTnetdmz:192.0.2.178tcphttps# Secure HTTP from the Net
    ACCEPTlocdmz:192.0.2.178tcphttps# Secure HTTP from the Local NetACCEPTlocdmz:192.0.2.178tcphttps# Secure HTTP from the Local Net
    ACCEPTnetdmz:192.0.2.177udpdomain# UDP DNS from the InternetACCEPTnetdmz:192.0.2.177udpdomain# UDP DNS from the Internet
    ACCEPTnetdmz:192.0.2.177tcpdomain# TCP DNS from the internetACCEPTnetdmz:192.0.2.177tcpdomain# TCP DNS from the internet
    ACCEPTfwdmz:192.0.2.177udpdomain# UDP DNS from firewallACCEPTfwdmz:192.0.2.177udpdomain# UDP DNS from firewall
    ACCEPTfwdmz:192.0.2.177tcpdomain# TCP DNS from firewallACCEPTfwdmz:192.0.2.177tcpdomain# TCP DNS from firewall
    ACCEPTlocdmz:192.0.2.177udpdomain# UDP DNS from the local NetACCEPTlocdmz:192.0.2.177udpdomain# UDP DNS from the local Net
    ACCEPTlocdmz:192.0.2.177tcpdomain# TCP DNS from the local NetACCEPTlocdmz:192.0.2.177tcpdomain# TCP DNS from the local Net
    ACCEPTdmz:192.0.2.177netudpdomain# UDP DNS to the InternetACCEPTdmz:192.0.2.177netudpdomain# UDP DNS to the Internet
    ACCEPTdmz:192.0.2.177nettcpdomain# TCP DNS to the InternetACCEPTdmz:192.0.2.177nettcpdomain# TCP DNS to the Internet
    ACCEPTnetdmzicmpecho-request# PingACCEPTnetdmzicmpecho-request# Ping
    ACCEPTnetlocicmpecho-request#  "ACCEPTnetlocicmpecho-request#  "
    ACCEPTdmzlocicmpecho-request# "ACCEPTdmzlocicmpecho-request# "
    ACCEPTlocdmzicmpecho-request# "ACCEPTlocdmzicmpecho-request# "
    ACCEPTlocdmztcpssh# SSH to the DMZACCEPTlocdmztcpssh# SSH to the DMZ
    ACCEPTlocfwtcpssh# SSH to the FirewallACCEPTlocfwtcpssh# SSH to the Firewall
    +
    -

    6.0 DNS

    +

    6.0 DNS

    Given the collection of RFC 1918 and public addresses in this @@ -1845,7 +1891,7 @@ Destination Gateway Genmask Flags MSS Window irtt Iface

    -
    options {
    +      
    options {
     	directory "/var/named";
     	listen-on { 127.0.0.1 ; 192.0.2.177; };
     };
    @@ -1861,10 +1907,10 @@ logging {
     	category xfer-in { xfer-log; };
     	category xfer-out { xfer-log; };
     	category notify { xfer-log; };
    -};
    +};
    -
    #
    +      
    #
     # This is the view presented to our internal systems
     #
     
    @@ -1996,7 +2042,7 @@ view "external" {
     		allow-transfer { <secondary NS IP>; };
     		file "db.192.0.2.179";
     	};
    -};
    +};
    @@ -2004,7 +2050,7 @@ view "external" {

    Here are the files in /var/named (those not shown are usually included in your bind disbribution).

    db.192.0.2.176 - This is the reverse zone for the firewall's external interface

    -
    ; ############################################################
    +    
    ; ############################################################
     ; Start of Authority (Inverse Address Arpa) for 192.0.2.176/32
     ; Filename: db.192.0.2.176
     ; ############################################################
    @@ -2025,13 +2071,13 @@ view "external" {
     ; Iverse Address Arpa Records (PTR's) 
     ; ############################################################
     176.2.0.192.in-addr.arpa. 86400 IN PTR firewall.foobar.net.
    -
    +
    db.192.0.2.177 - This is the reverse zone for the www/DNS server
    -
    ; ############################################################
    +    
    ; ############################################################
     ; Start of Authority (Inverse Address Arpa) for 192.0.2.177/32
     ; Filename: db.192.0.2.177
     ; ############################################################
    @@ -2052,14 +2098,14 @@ view "external" {
     ; Iverse Address Arpa Records (PTR's) 
     ; ############################################################
     177.2.0.192.in-addr.arpa. 86400 IN PTR www.foobar.net.
    -
    +
    db.192.0.2.178 - This is the reverse zone for the mail server
    -
    ; ############################################################
    +    
    ; ############################################################
     ; Start of Authority (Inverse Address Arpa) for 192.0.2.178/32
     ; Filename: db.192.0.2.178
     ; ############################################################
    @@ -2080,7 +2126,7 @@ view "external" {
     ; Iverse Address Arpa Records (PTR's) 
     ; ############################################################
     178.2.0.192.in-addr.arpa. 86400 IN PTR mail.foobar.net.
    -
    +
    @@ -2088,7 +2134,7 @@ view "external" {
    db.192.0.2.179 - This is the reverse zone for daughter's web server's public IP
    -
    ; ############################################################
    +    
    ; ############################################################
     ; Start of Authority (Inverse Address Arpa) for 192.0.2.179/32
     ; Filename: db.192.0.2.179
     ; ############################################################
    @@ -2109,7 +2155,7 @@ view "external" {
     ; Iverse Address Arpa Records (PTR's) 
     ; ############################################################
     179.2.0.192.in-addr.arpa. 86400 IN PTR nod.foobar.net.
    -
    +
    @@ -2117,7 +2163,7 @@ view "external" {

    int/db.127.0.0 - The reverse zone for localhost

    -
    ; ############################################################
    +    
    ; ############################################################
     ; Start of Authority (Inverse Address Arpa) for 127.0.0.0/8
     ; Filename: db.127.0.0
     ; ############################################################
    @@ -2135,7 +2181,7 @@ view "external" {
     ; ############################################################
     ; Iverse Address Arpa Records (PTR's)
     ; ############################################################
    -1	86400		IN PTR	localhost.foobar.net.
    +1 86400 IN PTR localhost.foobar.net.
    @@ -2143,7 +2189,7 @@ view "external" { only shown to internal clients
    -
    ; ############################################################
    +    
    ; ############################################################
     ; Start of Authority (Inverse Address Arpa) for 192.168.201.0/29
     ; Filename: db.192.168.201
     ; ############################################################
    @@ -2165,7 +2211,7 @@ view "external" {
     1	86400		IN PTR 	gateway.foobar.net.
     2	86400		IN PTR	winken.foobar.net.
     3	86400		IN PTR	blinken.foobar.net.
    -4	86400		IN PTR	nod.foobar.net.
    +4 86400 IN PTR nod.foobar.net.
    @@ -2174,7 +2220,7 @@ view "external" {
    -
    ; ############################################################
    +      
    ; ############################################################
     ; Start of Authority (Inverse Address Arpa) for 192.168.202.0/29
     ; Filename: db.192.168.202
     ; ############################################################
    @@ -2193,7 +2239,7 @@ view "external" {
     ; ############################################################
     ; Iverse Address Arpa Records (PTR's)
     ; ############################################################
    -1 		86400 IN PTR	dmz.foobar.net.
    +1 86400 IN PTR dmz.foobar.net.
    @@ -2201,7 +2247,7 @@ view "external" {

    int/db.foobar - Forward zone for use by internal clients.

    -
    ;##############################################################
    +    
    ;##############################################################
     ; Start of Authority for foobar.net.
     ; Filename: db.foobar
     ;##############################################################
    @@ -2229,7 +2275,7 @@ www		86400	IN A	192.0.2.177
     gateway		86400	IN A 	192.168.201.1
     winken		86400	IN A 	192.168.201.2
     blinken		86400	IN A	192.168.201.3
    -nod		86400	IN A	192.168.201.4
    +nod 86400 IN A 192.168.201.4
    @@ -2237,7 +2283,7 @@ nod 86400 IN A 192.168.201.4
    -
    ;##############################################################
    +      
    ;##############################################################
     ; Start of Authority for foobar.net.
     ; Filename: db.foobar
     ;##############################################################
    @@ -2280,12 +2326,12 @@ nod		86400	IN A	192.0.2.179
     ;############################################################
     foobar.net.	86400	IN A	192.0.2.177
     		86400 	IN MX 0 mail.foobar.net.
    -		86400	IN MX 1 <backup MX>.
    + 86400 IN MX 1 <backup MX>.
    -

    7.0 Starting and Stopping Your Firewall

    +

    7.0 Starting and Stopping Your Firewall

    The installation procedure @@ -2312,11 +2358,11 @@ foobar.net. 86400 IN A 192.0.2.177 test it using the "shorewall try" command.

    Last updated -8/2/2002 - Tom +8/18/2002 - Tom Eastep

    Copyright 2002 Thomas M. Eastep

    -
    + \ No newline at end of file diff --git a/STABLE/documentation/spam_filters.htm b/STABLE/documentation/spam_filters.htm index 2efd8f1d2..b230cdda6 100644 --- a/STABLE/documentation/spam_filters.htm +++ b/STABLE/documentation/spam_filters.htm @@ -6,14 +6,21 @@ SPAM Filters - - + -

    SPAM Filters
    + + + + +
    +

    SPAM Filters

    +
    + +


    -

    +

    Like all of you, I'm concerned about the increasing volume of Unsolicited Commercial Email (UCE or SPAM). I am therefore sympathetic with those of you who are installing SPAM filters on your mail servers. A couple of recent incidents @@ -32,6 +39,6 @@ delivery (or you can reenable delivery yourself).

    Copyright © 2001, 2002 Thomas M. Eastep.

    -
    + \ No newline at end of file diff --git a/STABLE/documentation/standalone.htm b/STABLE/documentation/standalone.htm index 9347d4a8d..c09af0eda 100644 --- a/STABLE/documentation/standalone.htm +++ b/STABLE/documentation/standalone.htm @@ -6,32 +6,39 @@ Standalone Firewall - - + -

    Standalone Firewall

    + + + + +
    -

    Version 2.0.1

    +

    Standalone Firewall

    + +
    + +

    Version 2.0.1

    Setting up Shorewall on a standalone Linux system is very easy if you understand the basics and follow the documentation.

    This guide doesn't attempt to acquaint you with all of the features of Shorewall. It rather focuses on what is required to configure Shorewall in one of its most common configurations:

    -
    - - - -
    bulletLinux system
    bulletSingle external IP address
    bulletConnection through Cable Modem, DSL, ISDN, Frame Relay, dial-up...
    +
      +
    • Linux system
    • +
    • Single external IP address
    • +
    • Connection through Cable Modem, DSL, ISDN, Frame Relay, dial-up...
    • +

    This guide assumes that you have the iproute/iproute2 package installed (on RedHat, the package is called iproute). You can tell if this package is installed by the presence of an ip program on your firewall system. As root, you can use the 'which' command to check for this program:

    -
         [root@gateway root]# which ip
    +
         [root@gateway root]# which ip
          /sbin/ip
    -     [root@gateway root]#

    I recommend that you read through the guide + [root@gateway root]#

    I recommend that you read through the guide first to familiarize yourself with what's involved then go back through it again making your configuration changes.  Points at which configuration changes are recommended are flagged with .

    @@ -41,13 +48,13 @@ Unix files if your editor supports that option or you must run them through dos2unix before trying to use them. Similarly, if you copy a configuration file from your Windows hard drive to a floppy disk, you must run dos2unix against the copy before using it with Shorewall.

    -
    - - -
    bulletWindows Version of - dos2unix
    bulletLinux Version of - dos2unix
    -

    Shorewall Concepts

    + +

    Shorewall Concepts

    The configuration files for Shorewall are contained in the directory /etc/shorewall -- for simple setups, you only need to deal with a few of these as described in this guide. After you have installed Shorewall, @@ -61,28 +68,28 @@ configuration instructions and default entries.

    Shorewall views the network where it is running as being composed of a set of zones. In the one-interface sample configuration, only one zone is defined:

    -
    +
    - - + + - - + + -
    NameDescriptionNameDescription
    netThe InternetnetThe Internet
    +

    Shorewall zones are defined in /etc/shorewall/zones.

    Shorewall also recognizes the firewall system as its own zone - by default, the firewall itself is known as fw.

    Rules about what traffic to allow and what traffic to deny are expressed in terms of zones.

    -
    - - -
    bulletYou express your default policy for connections from one zone to another - zone in the /etc/shorewall/policy file.
    bulletYou define exceptions to those default policies in the - /etc/shorewall/rules file.
    +

    For each connection request entering the firewall, the request is first checked against the /etc/shorewall/rules file. If no rule in that file matches the connection request then the first policy in /etc/shorewall/policy that matches the @@ -93,40 +100,40 @@ file for you).

    The /etc/shorewall/policy file included with the one-interface sample has the following policies:

    - +
    - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + -
    SOURCE ZONEDESTINATION ZONEPOLICYLOG LEVELLIMIT:BURSTSOURCE ZONEDESTINATION ZONEPOLICYLOG LEVELLIMIT:BURST
    fwnetACCEPT  fwnetACCEPT  
    netnetDROPinfo netnetDROPinfo 
    allallREJECTinfo allallREJECTinfo 
    +
    -
         fw		net	ACCEPT
    +
         fw		net	ACCEPT
          net	all	DROP	info
    -     all	all	REJECT	info
    + all all REJECT info

    The above policy will:

    1. allow all connection requests from the firewall to the internet
    2. @@ -136,7 +143,7 @@ following policies:

    At this point, edit your /etc/shorewall/policy and make any changes that you wish.

    -

    External Interface

    +

    External Interface

    The firewall has a single network interface. Where Internet connectivity is through a cable or DSL "Modem", the External Interface will be the ethernet adapter (eth0) that is connected to that "Modem"  @@ -150,24 +157,24 @@ the external interface is eth0. If your configuration is different, you will have to modify the sample /etc/shorewall/interfaces file accordingly. While you are there, you may wish to review the list of options that are specified for the interface. Some hints:

    -
    - - -
    bullet +
      +
    • If your external interface is ppp0 or ippp0, you can replace the - "detect" in the second column with "-".

    bullet + "detect" in the second column with "-". +
  • If your external interface is ppp0 or ippp0 or if you have a static IP - address, you can remove "dhcp" from the option list.

  • + address, you can remove "dhcp" from the option list. +
    -

    IP Addresses

    +

    IP Addresses

    RFC 1918 reserves several Private IP address ranges for use in private networks:

    -
         10.0.0.0    - 10.255.255.255
    +  
         10.0.0.0    - 10.255.255.255
          172.16.0.0  - 172.31.255.255
    -     192.168.0.0 - 192.168.255.255
    + 192.168.0.0 - 192.168.255.255

    These addresses are sometimes referred to as non-routable because the Internet backbone routers will not forward a packet whose @@ -179,32 +186,32 @@ use in private networks:

    interface and if it is one of the above ranges, you should remove the 'norfc1918' option from the entry in /etc/shorewall/interfaces.
    -

    Enabling other Connections

    +

    Enabling other Connections

    If you wish to enable connections from the internet to your firewall, the general format is:

    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESSACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESS
    ACCEPTnetfw<protocol><port>  ACCEPTnetfw<protocol><port>  
    +
    @@ -212,35 +219,35 @@ use in private networks:

    system:
    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESSACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESS
    ACCEPTnetfwtcp80  ACCEPTnetfwtcp80  
    ACCEPTnetfwtcp110  ACCEPTnetfwtcp110  
    +
    @@ -252,36 +259,36 @@ use in private networks:

    access to your firewall from the internet, use SSH:
    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESSACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESS
    ACCEPTnetfwtcp22  ACCEPTnetfwtcp22  
    +
    -
         ACCEPT	net	fw	tcp	22
    +
         ACCEPT	net	fw	tcp	22

        At this point, edit /etc/shorewall/rules to add other connections as desired.

    -

    Starting and Stopping Your Firewall

    +

    Starting and Stopping Your Firewall

    The installation procedure @@ -308,6 +315,6 @@ Eastep

    Copyright 2002 Thomas M. Eastep

    -
    + \ No newline at end of file diff --git a/STABLE/documentation/starting_and_stopping_shorewall.htm b/STABLE/documentation/starting_and_stopping_shorewall.htm index 6d82fd67e..67cc82150 100644 --- a/STABLE/documentation/starting_and_stopping_shorewall.htm +++ b/STABLE/documentation/starting_and_stopping_shorewall.htm @@ -6,14 +6,19 @@ Starting and Stopping Shorewall - - + -

    Starting/Stopping and Monitoring the Firewall

    + + + + +
    +

    Starting/Stopping and Monitoring the Firewall

    +
    @@ -46,71 +51,76 @@ from this default, you can use the "--level" option in chkconfig You can manually start and stop Shoreline Firewall using the "shorewall" shell program:

    -
    - - - - - - -
    bulletshorewall start - starts the firewall
    bulletshorewall stop - stops the firewall
    bulletshorewall restart - stops the firewall (if it's running) and - then starts it again
    bulletshorewall reset - reset the packet and byte counters in the -firewall
    bulletshorewall clear - remove all rules and chains installed by -Shoreline Firewall
    bulletshorewall refresh - refresh the rules involving the broadcast addresses - of firewall interfaces and the black and white lists.
    +
      +
    • shorewall start - starts the firewall
    • +
    • shorewall stop - stops the firewall
    • +
    • shorewall restart - stops the firewall (if it's running) and + then starts it again
    • +
    • shorewall reset - reset the packet and byte counters in the +firewall
    • +
    • shorewall clear - remove all rules and chains installed by +Shoreline Firewall
    • +
    • shorewall refresh - refresh the rules involving the broadcast addresses + of firewall interfaces and the black and white lists.
    • +

    The "shorewall" program may also be used to monitor the firewall.

    -
    - - - - - - - - - - - - - - -
    bulletshorewall status - produce a verbose report about the firewall - (iptables -L -n -v)
    bulletshorewall show chain - produce a verbose report about chain - (iptables -L chain -n -v)
    bulletshorewall show nat - produce a verbose report about the nat table - (iptables -t nat -L -n -v)
    bulletshorewall show tos - produce a verbose report about the mangle table - (iptables -t mangle -L -n -v)
    bulletshorewall show log - display the last 20 packet log entries.
    bulletshorewall show connections - displays the IP connections currently being - tracked by the firewall.
    bulletshorewall +
      +
    • shorewall status - produce a verbose report about the firewall + (iptables -L -n -v)
    • +
    • shorewall show chain - produce a verbose report about chain + (iptables -L chain -n -v)
    • +
    • shorewall show nat - produce a verbose report about the nat table + (iptables -t nat -L -n -v)
    • +
    • shorewall show tos - produce a verbose report about the mangle table + (iptables -t mangle -L -n -v)
    • +
    • shorewall show log - display the last 20 packet log entries.
    • +
    • shorewall show connections - displays the IP connections currently being + tracked by the firewall.
    • +
    • shorewall show tc - - displays information about the traffic control/shaping configuration.
    bulletshorewall monitor [ delay ] - Continuously display the firewall + - displays information about the traffic control/shaping configuration. +
  • shorewall monitor [ delay ] - Continuously display the firewall status, last 20 log entries and nat. When the log entry display - changes, an audible alarm is sounded.
  • bulletshorewall hits - Produces several reports about the Shorewall packet log - messages in the current /var/log/messages file.
    bulletshorewall version - Displays the installed - version number.
    bulletshorewall check - Performs a cursory validation - of the zones, interfaces, hosts, rules and policy files.
    bulletshorewall try configuration-directory [ timeout ] - Restart shorewall using the + changes, an audible alarm is sounded. +
  • shorewall hits - Produces several reports about the Shorewall packet log + messages in the current /var/log/messages file.
  • +
  • shorewall version - Displays the installed + version number.
  • +
  • shorewall check - Performs a cursory validation + of the zones, interfaces, hosts, rules and policy files. + The "check" command does not parse and + validate the generated iptables commands so even though the "check" command + completes successfully, the configuration may fail to start. See the + recommended way to make configuration changes described below. +
  • +
  • shorewall try configuration-directory [ timeout ] - Restart shorewall using the specified configuration and if an error occurs or if the timeout option is given and the new configuration has been up for that many seconds - then shorewall is restarted using the standard configuration.
  • bulletshorewall deny, shorewall reject, shorewall accept and shorewall save - implement dynamic blacklisting.
    bulletshorewall logwatch (added in version 1.3.2) - Monitors the + then shorewall is restarted using the standard configuration. +
  • shorewall deny, shorewall reject, shorewall accept and shorewall save + implement dynamic blacklisting.
  • +
  • shorewall logwatch (added in version 1.3.2) - Monitors the LOGFILE and produces an audible alarm when new Shorewall - messages are logged.
  • + messages are logged. +

    - The shorewall start and - - shorewall restart commands allow you to specify which + The shorewall start, shorewall restart, shorewall check  and + shorewall try commands allow you to specify which Shorewall configuration to use:

    - shorewall [ -c configuration-directory ] {start|restart}

    + shorewall [ -c configuration-directory ] {start|restart|check}
    + shorewall try configuration-directory

    @@ -121,8 +131,43 @@ Shoreline Firewall +

    + When changing the configuration of a production firewall, I recommend the + following:

    + + + +
      +
    • mkdir /etc/test
    • +
    • cd /etc/test
    • +
    • <copy any files that you need to change from /etc/shorewall to . and change them here>
    • +
    • shorewall -c . check
    • +
    • <correct any errors found by check and check again>
    • +
    • /sbin/shorewall try .
    • +
    + +

    + If the configuration starts but doesn't work, just "shorewall restart" to + restore the old configuration. If the new configuration fails to start, the + "try" command will automatically start the old one for you.

    + + + +

    + When the new configuration works then just

    + + + +
      +
    • cp * /etc/shorewall
    • +
    • cd
    • +
    • rm -rf /etc/test
    • +
    + + +

    - Updated 7/26/2002 - Tom + Updated 8/8/2002 - Tom Eastep

    @@ -133,6 +178,6 @@ Eastep -
    + - + \ No newline at end of file diff --git a/STABLE/documentation/subnet_masks.htm b/STABLE/documentation/subnet_masks.htm index 2067d5f9a..d3d0b3159 100644 --- a/STABLE/documentation/subnet_masks.htm +++ b/STABLE/documentation/subnet_masks.htm @@ -6,12 +6,17 @@ Subnet Masks - - + -

    Subnet Masks/VLSM Notation

    + + + + +
    +

    Subnet Masks/VLSM Notation

    +

    IP addresses and subnet masks are 32-bit numbers. The notation w.x.y.z refers to an address where the high-order byte has value "w", the next byte has value "x", etc. If we take 255.255.255.0 and express it in @@ -68,6 +73,6 @@ thing of the past.

    Eastep

    Copyright 2002 Thomas M. Eastep

    - + \ No newline at end of file diff --git a/STABLE/documentation/support.htm b/STABLE/documentation/support.htm index dd68ca30e..79ce8991f 100644 --- a/STABLE/documentation/support.htm +++ b/STABLE/documentation/support.htm @@ -6,34 +6,40 @@ Support - + - + -

    Shorewall Support

    + + + + +
    +

    Shorewall Support

    +
    -

    Before Reporting a Problem

    +

    Before Reporting a Problem

    -

    +

    "It is easier to post a problem than to use your own brain" -- -Weitse Venema (creator of Postfix)

    +Weitse Venema (creator of Postfix)

    There are a number of sources for problem solution information.

    -
    - - - - -
    bulletThe Troubleshooting Information contains a - number of tips to help you solve common problems.
    bulletThe Errata has links to download updated - components.
    bulletThe FAQ has solutions to common problems.
    bulletThe Mailing List Archives are a useful source of problem solving - information.
    +
      +
    • The Troubleshooting Information contains a + number of tips to help you solve common problems.
    • +
    • The Errata has links to download updated + components.
    • +
    • The FAQ has solutions to common problems.
    • +
    • The Mailing List Archives are a useful source of problem solving + information.
    • +

    The archives from the mailing List are at http://www.shorewall.net/pipermail/shorewall-users.

    -

    Search the Mailing List Archives at Shorewall.net

    +

    Search the Mailing List Archives at Shorewall.net

    @@ -67,52 +73,55 @@ Search:

    -

    Problem Reporting Guidelines

    +

    Problem Reporting Guidelines

    -
    - - - - - - - -
    bulletWhen reporting a problem, give as much information as you can. Reports -that say "I tried XYZ and it didn't work" are not at all helpful.
    bulletPlease don't describe your environment and then ask us to send you +
      +
    • When reporting a problem, give as much information as you can. Reports +that say "I tried XYZ and it didn't work" are not at all helpful.
    • +
    • Please don't describe your environment and then ask us to send you custom configuration files. We're here to answer your questions but we - can't do your job for you.
    bulletDo you see any "Shorewall" messages in /var/log/messages when you exercise -the function that is giving you problems?
    bulletHave you looked at the packet flow with a tool like tcpdump to try to -understand what is going on?
    bulletHave you tried using the diagnostic capabilities of the application that + can't do your job for you. +
  • Do you see any "Shorewall" messages in /var/log/messages when you exercise +the function that is giving you problems?
  • +
  • Have you looked at the packet flow with a tool like tcpdump to try to +understand what is going on?
  • +
  • Have you tried using the diagnostic capabilities of the application that isn't working? For example, if "ssh" isn't able to connect, using the -"-v" option gives you a lot of valuable diagnostic information.
  • bulletPlease include any of the Shorewall configuration files (especially the +"-v" option gives you a lot of valuable diagnostic information. +
  • Please include any of the Shorewall configuration files (especially the /etc/shorewall/hosts file if you have modified that file) that you think are relevant. If an error occurs when you try to "shorewall start", include a trace (See the Troubleshooting section for - instructions).
  • bulletThe list server limits posts to 120kb so don't post GIFs of your - network layout, etc to the Mailing List -- your post will be rejected.
    -

    Where to Send your Problem -Report or to Ask for Help

    -

    Please post your question or problem to the + instructions). +

  • The list server limits posts to 120kb so don't post GIFs of your + network layout, etc to the Mailing List -- your post will be rejected.
  • + +

    Where to Send your Problem +Report or to Ask for Help

    +

    If you run Shorewall under Bering -- please +post your question or problem to the +LEAF Users mailing list.

    +

    Otherwise, please post your question or problem to the Shorewall users mailing list; there are lots of folks there who are willing to help you. Your question/problem description and their responses will be placed in the mailing list archives to help people who have a similar question or problem in the future.

    -

    "It irks me when people believe that free software +

    "It irks me when people believe that free software comes at no cost. The cost is incredibly high." - - Weitse Venema

    + Weitse Venema

    I do not answer questions or work on problems sent to me personally but I try to respond promptly to mailing list posts.   -Tom

    To Subscribe to the mailing list go to http://www.shorewall.net/mailman/listinfo/shorewall-users .

    -

    Last Updated 8/5/2002 - Tom +

    Last Updated 8/17/2002 - Tom Eastep

    Copyright © 2001, 2002 Thomas M. Eastep.

    -
    + \ No newline at end of file diff --git a/STABLE/documentation/three-interface.htm b/STABLE/documentation/three-interface.htm index 61619bb2b..ad554638d 100644 --- a/STABLE/documentation/three-interface.htm +++ b/STABLE/documentation/three-interface.htm @@ -6,14 +6,19 @@ Three-Interface Firewall - - + -

    Three-Interface Firewall

    + + + + +
    +

    Three-Interface Firewall

    +
    -

    Version 2.0.1

    +

    Version 2.0.1

    Setting up a Linux system as a firewall for a small network with DMZ is a fairly straight-forward task if you understand the basics and follow the @@ -21,21 +26,22 @@ documentation.

    This guide doesn't attempt to acquaint you with all of the features of Shorewall. It rather focuses on what is required to configure Shorewall in one of its more popular configurations:

    -
    - - - - -
    bulletLinux system used as a firewall/router for a small local network.
    bulletSingle external IP address.
    bulletDMZ connected to a separate ethernet interface.
    bulletConnection through DSL, Cable Modem, ISDN, Frame Relay, dial-up, ...
    +
      +
    • Linux system used as a firewall/router for a small local network.
    • +
    • Single external IP address.
    • +
    • DMZ connected to a separate ethernet interface.
    • +
    • Connection through DSL, Cable Modem, ISDN, Frame Relay, dial-up, ...
    • +

    Here is a schematic of a typical installation.

    -

    +

    +

    This guide assumes that you have the iproute/iproute2 package installed (on RedHat, the package is called iproute). You can tell if this package is installed by the presence of an ip program on your firewall system. As root, you can use the 'which' command to check for this program:

    -
         [root@gateway root]# which ip
    +
         [root@gateway root]# which ip
          /sbin/ip
    -     [root@gateway root]#

    I recommend that you first read through the guide + [root@gateway root]#

    I recommend that you first read through the guide to familiarize yourself with what's involved then go back through it again making your configuration changes. Points at which configuration changes are @@ -46,13 +52,13 @@ Unix files if your editor supports that option or you must run them through dos2unix before trying to use them. Similarly, if you copy a configuration file from your Windows hard drive to a floppy disk, you must run dos2unix against the copy before using it with Shorewall.

    - - - -
    bulletWindows Version of - dos2unix
    bulletLinux Version of - dos2unix
    -

    Shorewall Concepts

    + +

    Shorewall Concepts

    The configuration files for Shorewall are contained in the directory /etc/shorewall -- for simple setups, you will only need to deal with a few of these as described in this guide. After you have installed Shorewall, @@ -65,36 +71,36 @@ look through the actual file on your system -- each file contains detailed configuration instructions and default entries.

    Shorewall views the network where it is running as being composed of a set of zones. In the three-interface sample configuration, the following zone names are used:

    -
    +
    - - + + - - + + - - + + - - + + -
    NameDescriptionNameDescription
    netThe InternetnetThe Internet
    locYour Local NetworklocYour Local Network
    dmzDemilitarized ZonedmzDemilitarized Zone
    +

    Zone names are defined in /etc/shorewall/zones.

    Shorewall also recognizes the firewall system as its own zone - by default, the firewall itself is known as fw.

    Rules about what traffic to allow and what traffic to deny are expressed in terms of zones.

    -
    - - -
    bulletYou express your default policy for connections from one zone to another - zone in the /etc/shorewall/policy file.
    bulletYou define exceptions to those default policies in the - /etc/shorewall/rules file.
    +

    For each connection request entering the firewall, the request is first checked against the /etc/shorewall/rules file. If no rule in that file matches the connection request then the first policy in /etc/shorewall/policy that matches the @@ -105,57 +111,57 @@ file for you).

    The /etc/shorewall/policy file included with the three-interface sample has the following policies:

    - +
    - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + -
    Source ZoneDestination ZonePolicyLog LevelLimit:BurstSource ZoneDestination ZonePolicyLog LevelLimit:Burst
    locnetACCEPT  locnetACCEPT  
    netallDROPinfo netallDROPinfo 
    allallREJECTinfo allallREJECTinfo 
    +

    In the three-interface sample, the line below is included but commented out. If you want your firewall system to have full access to servers on the internet, uncomment that line.

    -
    +
    - - - - - + + + + + - - - - - + + + + + -
    Source ZoneDestination ZonePolicyLog LevelLimit:BurstSource ZoneDestination ZonePolicyLog LevelLimit:Burst
    fwnetACCEPT  fwnetACCEPT  
    +

    The above policy will:

      @@ -169,8 +175,9 @@ uncomment that line.

          At this point, edit your /etc/shorewall/policy file and make any changes that you wish.

      -

      Network Interfaces

      -

      +

      Network Interfaces

      +

      +

      The firewall has three network interfaces. Where Internet connectivity is through a cable or DSL "Modem", the External Interface will be the ethernet adapter that is connected to that "Modem" (e.g., eth0)  @@ -206,15 +213,15 @@ eth2. If your configuration is different, you will have to modify the sample /etc/shorewall/interfaces file accordingly. While you are there, you may wish to review the list of options that are specified for the interfaces. Some hints:

      -
      - - -
      bullet +
        +
      • If your external interface is ppp0 or ippp0, you can replace the - "detect" in the second column with "-".

      bullet + "detect" in the second column with "-". +
    1. If your external interface is ppp0 or ippp0 or if you have a static IP - address, you can remove "dhcp" from the option list.

    2. -

      IP Addresses

      + address, you can remove "dhcp" from the option list. + +

      IP Addresses

      Before going further, we should say a few words about Internet Protocol (IP) addresses. Normally, your ISP will assign you a single Public IP address. This address may be assigned via the Dynamic Host @@ -228,9 +235,9 @@ for your internal network (the local and DMZ Interfaces on your firewall plus yo computers). RFC 1918 reserves several Private IP address ranges for this purpose:

      -
           10.0.0.0    - 10.255.255.255
      +  
           10.0.0.0    - 10.255.255.255
            172.16.0.0  - 172.31.255.255
      -     192.168.0.0 - 192.168.255.255
      + 192.168.0.0 - 192.168.255.255

          @@ -254,24 +261,24 @@ purpose:

      Example sub-network:

      - +
      - - + + - - + + - - + + - - + + -
      Range:10.10.10.0 - 10.10.10.255Range:10.10.10.0 - 10.10.10.255
      Subnet Address:10.10.10.0Subnet Address:10.10.10.0
      Broadcast Address:10.10.10.255Broadcast Address:10.10.10.255
      VLSM Notation:10.10.10.0/24VLSM Notation:10.10.10.0/24
      +
      @@ -297,10 +304,11 @@ Needs to Know about Addressing & Routing", Thomas A. Maufer, Prenti 1999, ISBN 0-13-975483-0.

      The remainder of this quide will assume that you have configured your network as shown here:

      -

      +

      +

      The default gateway for the DMZ computers would be 10.10.10.254 and the default gateway for the Local computers would be 10.10.10.254.

      -

      IP Masquerading (SNAT)

      +

      IP Masquerading (SNAT)

      The addresses reserved by RFC 1918 are sometimes referred to as non-routable because the Internet backbone routers don't forward packets which have an RFC-1918 destination address. When one of your local systems @@ -318,15 +326,15 @@ forwards the packet on to local computer 1.

      IP Masquerading
      and you will also see the term Source Network Address Translation (SNAT) used. Shorewall follows the convention used with Netfilter:

      -
      - - -
      bullet +
        +
      • Masquerade describes the case where you let your - firewall system automatically detect the external interface address.

      bullet + firewall system automatically detect the external interface address. +
    3. SNAT refers to the case when you explicitly specify the source address that you want outbound packets from your local network to use. -

    4. + +

      In Shorewall, both Masquerading and SNAT are configured with entries in the /etc/shorewall/masq file.

          If your external firewall interface is eth0, your local @@ -338,7 +346,7 @@ is static, you can enter it in the third column in the /etc/shorewall/masq entry if you like although your firewall will work fine if you leave that column empty. Entering your static IP in column 3 makes processing outgoing packets a little more efficient.

      -

      Port Forwarding (DNAT)

      +

      Port Forwarding (DNAT)

      One of your goals will be to run one or more servers on your DMZ computers. Because these computers have RFC-1918 addresses, it is not possible for clients on the internet to connect directly to them. It is rather necessary for those clients to address their connection requests to your firewall @@ -351,119 +359,119 @@ forwarding using DNAT rules in the /etc/shorewall/rules file.

      The general form of a simple port forwarding rule in /etc/shorewall/rules is:

      - +
      - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
      ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESSACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESS
      DNATnetdmz:<server local ip address> [:<server port>]<protocol><port>  DNATnetdmz:<server local ip address> [:<server port>]<protocol><port>  
      +

      If you don't specify the <server port>, it is assumed to be the same as <port>.

      Example - you run a Web Server on DMZ 2 and you want to forward incoming TCP port 80 to that system:

      - +
      - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
      ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESSACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESS
      DNATnetdmz:10.10.11.2tcp80# Forward port 80from the internetDNATnetdmz:10.10.11.2tcp80# Forward port 80from the internet
      ACCEPTlocdmz:10.10.11.2tcp80#Allow connections from the local networkACCEPTlocdmz:10.10.11.2tcp80#Allow connections from the local network
      +

      A couple of important points to keep in mind:

      -
      - - -
      bulletWhen you are connecting to your server from your local systems, you must - use the server's internal IP address (10.10.11.2).
      bulletMany ISPs block incoming connection requests to port 80. If you have +
        +
      • When you are connecting to your server from your local systems, you must + use the server's internal IP address (10.10.11.2).
      • +
      • Many ISPs block incoming connection requests to port 80. If you have problems connecting to your web server, try the following rule and try connecting to port 5000 (e.g., connect to - http://w.x.y.z:5000 where w.x.y.z is your external IP).
      + http://w.x.y.z:5000 where w.x.y.z is your external IP). +
      - +
      - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
      ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESSACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESS
      DNATnetdmz:10.10.11.2:80tcp5000  DNATnetdmz:10.10.11.2:80tcp5000  
      +

      If you want to be able to access your server from the local network using your external address, then if you have a static external IP you can replace the loc->dmz rule above with:

      - +
      - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
      ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESSACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESS
      DNATnetdmz:10.10.11.2:80tcp80-<external IP>DNATnetdmz:10.10.11.2:80tcp80-<external IP>
      +

      If you have a dynamic ip then you must ensure that your external interface is up before starting Shorewall and you must take steps as follows (assume that @@ -476,32 +484,32 @@ your external interface is eth0):

    5. Make your loc->dmz rule:
    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESSACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESS
    DNATnetdmz:10.10.11.2:80tcp80-$ETH0_IPDNATnetdmz:10.10.11.2:80tcp80-$ETH0_IP
    +

    If you want to access your server from the DMZ using your external IP address, see FAQ 2a.

        At this point, add the DNAT and ACCEPT rules for your servers.

    -

    Domain Name Server (DNS)

    +

    Domain Name Server (DNS)

    Normally, when you connect to your ISP, as part of getting an IP address your firewall's Domain Name Service (DNS) resolver will be automatically configured (e.g., the /etc/resolv.conf file will be written). @@ -509,15 +517,15 @@ Alternatively, your ISP may have given you the IP address of a pair of DNS name servers for you to manually configure as your primary and secondary name servers. It is your responsibility to configure the resolver in your internal systems. You can take one of two approaches:

    -
    - - -
    bullet +
      +
    • You can configure your internal systems to use your ISP's name servers. If you ISP gave you the addresses of their servers or if those addresses are available on their web site, you can configure your internal systems to use those addresses. If that information isn't available, look in /etc/resolv.conf on your firewall system -- the name servers are given in - "nameserver" records in that file.

    bullet + "nameserver" records in that file. +
  •     You can configure a Caching Name Server on your firewall or in your DMZ. Red Hat has an RPM for a caching name server (which also requires the 'bind' RPM) and for Bering users, there is dnscache.lrp. If you @@ -526,145 +534,145 @@ internal systems. You can take one of two approaches:

    address of the firewall (10.10.10.254 in the example above) for the name server address if you choose to run the name server on your firewall. To allow your local systems to talk to your caching name server, you must open port 53 (both UDP and TCP) from the local network to the - server; you do that by adding the rules in /etc/shorewall/rules.
  • + server; you do that by adding the rules in /etc/shorewall/rules. +
    -

    If you run the name server on the firewall: +

    If you run the name server on the firewall:

    - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESSACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESS
    ACCEPTlocfwtcp53  ACCEPTlocfwtcp53  
    ACCEPTlocfwudp53  ACCEPTlocfwudp53  
    ACCEPTdmzfwtcp53  ACCEPTdmzfwtcp53  
    ACCEPTdmzfwudp53  ACCEPTdmzfwudp53  
    +

    Run name server on DMZ computer 1

    -
    +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESSACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESS
    ACCEPTlocdmz:10.10.11.1tcp53  ACCEPTlocdmz:10.10.11.1tcp53  
    ACCEPTlocdmz:10.10.11.1udp53  ACCEPTlocdmz:10.10.11.1udp53  
    ACCEPTfwdmz:10.10.10.1tcp53  ACCEPTfwdmz:10.10.10.1tcp53  
    ACCEPTfwdmz:10.10.10.1udp53  ACCEPTfwdmz:10.10.10.1udp53  
    +
    -

    Other Connections

    +

    Other Connections

    The three-interface sample includes the following rules:

    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESSACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESS
    ACCEPTfwnetudp53  ACCEPTfwnetudp53  
    ACCEPTfwnettcp53  ACCEPTfwnettcp53  
    +
    @@ -675,35 +683,35 @@ internal systems. You can take one of two approaches:

    The sample also includes:

    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESSACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESS
    ACCEPTlocfwtcp22  ACCEPTlocfwtcp22  
    ACCEPTlocdmztcp22  ACCEPTlocdmztcp22  
    +
    @@ -714,26 +722,26 @@ internal systems. You can take one of two approaches:

    If you wish to enable other connections between your systems, the general format is:

    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESSACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESS
    ACCEPT<source zone><destination zone><protocol><port>  ACCEPT<source zone><destination zone><protocol><port>  
    +
    @@ -741,35 +749,35 @@ internal systems. You can take one of two approaches:

    system:
    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESSACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESS
    ACCEPTnetfwtcp53#Allow DNS accessfrom the internetACCEPTnetfwtcp53#Allow DNS accessfrom the internet
    ACCEPTnetfwtcp53#Allow DNS accessfrom the internetACCEPTnetfwtcp53#Allow DNS accessfrom the internet
    +
    @@ -784,33 +792,33 @@ internal systems. You can take one of two approaches:

    access to your firewall from the internet, use SSH:
    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESSACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESS
    ACCEPTnetfwtcp22  ACCEPTnetfwtcp22  
    +

        Now modify /etc/shorewall/rules to add or remove other connections as required.

    -

    Starting and Stopping Your Firewall

    +

    Starting and Stopping Your Firewall

    The installation procedure @@ -843,6 +851,6 @@ Eastep

    Copyright 2002 Thomas M. Eastep

    - + \ No newline at end of file diff --git a/STABLE/documentation/traffic_shaping.htm b/STABLE/documentation/traffic_shaping.htm index 3c4b7e5b8..22092ef11 100644 --- a/STABLE/documentation/traffic_shaping.htm +++ b/STABLE/documentation/traffic_shaping.htm @@ -6,12 +6,17 @@ Traffic Shaping - - + -

    Traffic Shaping/Control

    + + + + +
    +

    Traffic Shaping/Control

    +

    Beginning with version 1.2.0, Shorewall has limited support for traffic shaping/control. In order to use traffic shaping under Shorewall, it is essential that you get a copy of the Linux Advanced Routing @@ -21,15 +26,15 @@ utilities.

    Shorewall traffic shaping support consists of the following:

    -
    - - - - -
    bulletA new TC_ENABLED parameter in /etc/shorewall.conf. Traffic +
      +
    • A new TC_ENABLED parameter in /etc/shorewall.conf. Traffic Shaping also requires that you enable packet mangling.
      -
    bullet/etc/shorewall/tcrules - A file where you can specify + +
  • /etc/shorewall/tcrules - A file where you can specify firewall marking of packets. The firewall mark value may be used to classify packets for traffic shaping/control.
    -
  • bullet/etc/shorewall/tcstart - A user-supplied file that is + +
  • /etc/shorewall/tcstart - A user-supplied file that is sourced by Shorewall during "shorewall start" and which you can use to define your traffic shaping disciplines and classes. I have provided a sample that does @@ -44,24 +49,24 @@ utilities.


    In tcstart, when you want to run the 'tc' utility, use the run_tc function supplied by shorewall.
    -
  • bullet/etc/shorewall/tcclear - A user-supplied file that is + +
  • /etc/shorewall/tcclear - A user-supplied file that is sourced by Shorewall when it is clearing traffic shaping. This file is normally not required as Shorewall's method of clearing qdisc and filter - definitions is pretty general.
  • -

    /etc/shorewall/tcrules

    + definitions is pretty general. + +

    /etc/shorewall/tcrules

    The fwmark classifier provides a convenient way to classify packets for traffic shaping. The /etc/shorewall/tcrules file provides a means for specifying these marks in a tabular fashion.

    Columns in the file are as follows:

    -
    - - - - - - -
    bulletMARK - Specifies the mark value is to be assigned in case of +
      +
    • MARK - Specifies the mark value is to be assigned in case of a match. This is an integer in the range 1-255.

      Example - 5
      -
    bulletSOURCE - The source of the packet. If the packet originates + +
  • SOURCE - The source of the packet. If the packet originates on the firewall, place "fw" in this column. Otherwise, this is a comma-separated list of interface names, IP addresses, MAC addresses in Shorewall Format and/or Subnets.
    @@ -69,110 +74,110 @@ for specifying these marks in a tabular fashion.

    Examples
        eth0
        192.168.2.4,192.168.1.0/24
    -
  • bulletDEST -- Destination of the packet. Comma-separated list of + +
  • DEST -- Destination of the packet. Comma-separated list of IP addresses and/or subnets.
    -
  • bulletPROTO - Protocol - Must be the name of a protocol from + +
  • PROTO - Protocol - Must be the name of a protocol from /etc/protocol, a number or "all"
    -
  • bulletPORT(S) - Destination Ports. A comma-separated list of Port + +
  • PORT(S) - Destination Ports. A comma-separated list of Port names (from /etc/services), port numbers or port ranges (e.g., 21:22); if the protocol is "icmp", this column is interpreted as the destination icmp type(s).
    -
  • bulletCLIENT PORT(S) - (Optional) Port(s) used by the client. If + +
  • CLIENT PORT(S) - (Optional) Port(s) used by the client. If omitted, any source port is acceptable. Specified as a comma-separate list - of port names, port numbers or port ranges.
  • + of port names, port numbers or port ranges. +

    Example 1 - All packets arriving on eth1 should be marked with 1. All packets arriving on eth2 should be marked with 2. All packets originating on the firewall itself should be marked with 3.

    -
    +
    - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + -
    MARKSOURCEDESTPROTOPORT(S)CLIENT PORT(S)MARKSOURCEDESTPROTOPORT(S)CLIENT PORT(S)
    1eth10.0.0.0/0all  1eth10.0.0.0/0all  
    2eth20.0.0.0/0all  2eth20.0.0.0/0all  
    3fw0.0.0.0/0all  3fw0.0.0.0/0all  
    +

    Example 2 - All GRE (protocol 47) packets not originating on the firewall and destined for 155.186.235.151 should be marked with 12.

    -
    +
    - - - - - - + + + + + + - - - - - - + + + + + + -
    MARKSOURCEDESTPROTOPORT(S)CLIENT PORT(S)MARKSOURCEDESTPROTOPORT(S)CLIENT PORT(S)
    120.0.0.0/0155.186.235.15147  120.0.0.0/0155.186.235.15147  
    +

    Example 3 - All SSH packets originating in 192.168.1.0/24 and destined for 155.186.235.151 should be marked with 22.

    -
    +
    - - - - - - + + + + + + - - - - - - + + + + + + -
    MARKSOURCEDESTPROTOPORT(S)CLIENT PORT(S)MARKSOURCEDESTPROTOPORT(S)CLIENT PORT(S)
    22192.168.1.0/24155.186.235.151tcp22 22192.168.1.0/24155.186.235.151tcp22 
    -

    Hierarchical Token Bucket

    + +

    Hierarchical Token Bucket

    I personally use HTB. I have found a couple of things that may be of use to others.

    -
    - - -
    bulletThe gzipped tc binary at the HTB +
    bulletThe HTB example in the HOWTO seems to be full of errors. I'm currently - running with this set of shaping rules in my tcstart file so I know that it works.
    + them for HTB. +
  • The HTB example in the HOWTO seems to be full of errors. I'm currently + running with this set of shaping rules in my tcstart file so I know that it works.
  • +

    run_tc qdisc add dev eth0 root handle 1: htb default 30

    @@ -201,6 +206,6 @@ Eastep

    Copyright © 2001, 2002 Thomas M. Eastep.

    -
    + \ No newline at end of file diff --git a/STABLE/documentation/troubleshoot.htm b/STABLE/documentation/troubleshoot.htm index bf3acfb6a..43ae1333e 100644 --- a/STABLE/documentation/troubleshoot.htm +++ b/STABLE/documentation/troubleshoot.htm @@ -10,57 +10,62 @@ - - - + + -

    Shorewall Troubleshooting

    + + + + +
    +

    Shorewall Troubleshooting

    +
    -

    Check the Errata

    +

    Check the Errata

    Check the Shorewall Errata to be sure that there isn't an update that you are missing for your version of the firewall.

    -

    Check the FAQs

    +

    Check the FAQs

    Check the FAQs for solutions to common problems.

    -

    If the firewall fails to start

    +

    If the firewall fails to start

    If you receive an error message when starting or restarting the firewall and you can't determine the cause, then do the following: -
    - - - -
    bulletshorewall debug start 2> /tmp/trace
    bulletLook at the /tmp/trace file and see if that helps you determine what -the problem is.
    bulletIf you still can't determine what's wrong then see the - support page.
    -

    Your test environment

    +
      +
    • shorewall debug start 2> /tmp/trace
    • +
    • Look at the /tmp/trace file and see if that helps you determine what +the problem is.
    • +
    • If you still can't determine what's wrong then see the + support page.
    • +
    +

    Your test environment

    Many times when people have problems with Shorewall, the problem is actually an ill-conceived test setup. Here are several popular snafus:

    -
    - - - -
    bulletPort +
      +
    • Port Forwarding where client and server are in the same subnet. See FAQ - 2.
    bulletChanging the IP address of a local system to be in the external subnet, + 2. +
  • Changing the IP address of a local system to be in the external subnet, thinking that Shorewall will suddenly believe that the system is in the - 'net' zone.
  • bulletMultiple interfaces connected to the same HUB or Switch. Given the way + 'net' zone. +
  • Multiple interfaces connected to the same HUB or Switch. Given the way that the Linux kernel respond to ARP "who-has" requests, this type of setup - does NOT work the way that you expect it to.
  • + does NOT work the way that you expect it to. + -

    If you are having -connection problems:

    +

    If you are having +connection problems:

    If the appropriate policy for the connection that you are trying to make is ACCEPT, please DO NOT ADD ADDITIONAL ACCEPT RULES TRYING @@ -100,16 +105,16 @@ ID=5805 DF PROTO=UDP SPT=1803 DPT=53 LEN=47

    Let's look at the important parts of this message:

    - - - - - - - - -
    bulletall2all:REJECT - the packet was rejected under the "all"->"all" REJECT -policy
    bulletIN=eth2 - the packet entered the firewall via eth2
    bulletOUT=eth1 - if accepted, the packet would be sent on eth1
    bulletSRC=192.168.2.2 - the packet was sent by 192.168.2.2
    bulletDST=192.168.1.3 - the packet is destined for 192.168.1.3
    bulletPROTO=UDP - UDP Protocol
    bulletDPT=53 - DNS
    +
      +
    • all2all:REJECT - the packet was rejected under the "all"->"all" REJECT +policy
    • +
    • IN=eth2 - the packet entered the firewall via eth2
    • +
    • OUT=eth1 - if accepted, the packet would be sent on eth1
    • +
    • SRC=192.168.2.2 - the packet was sent by 192.168.2.2
    • +
    • DST=192.168.1.3 - the packet is destined for 192.168.1.3
    • +
    • PROTO=UDP - UDP Protocol
    • +
    • DPT=53 - DNS
    • +

    In this case, 192.168.2.2 was in the "dmz" zone and 192.168.1.3 is in the "loc" zone. I was missing the rule:

    @@ -118,10 +123,10 @@ policy
    -

    Other Gotchas

    +

    Other Gotchas

    - - - - - - - - - -
    bulletRemember that Shorewall doesn't automatically allow ICMP type 8 ("ping") +
      +
    • Remember that Shorewall doesn't automatically allow ICMP type 8 ("ping") requests to be sent between zones. If you want pings to be allowed between zones, you need a rule of the form:

      @@ -136,40 +141,40 @@ icmp and you ping 130.252.100.18, unless you have allowed icmp type 8 between the zone containing the system you are pinging from and the zone containing 10.1.1.2, the ping requests will be dropped. This is true even if you -have NOT specified 'noping' for eth0 in /etc/shorewall/interfaces.
    bulletIf you specify "routefilter" for an interface, that interface must be -up prior to starting the firewall.
    bulletIs your routing correct? For example, internal systems usually need to +have NOT specified 'noping' for eth0 in /etc/shorewall/interfaces. +
  • If you specify "routefilter" for an interface, that interface must be +up prior to starting the firewall.
  • +
  • Is your routing correct? For example, internal systems usually need to be configured with their default gateway set to the IP address of their nearest firewall interface. One often overlooked aspect of routing is that in order for two hosts to communicate, the routing between them must be set up in both directions. So when setting up routing between A and B, be sure to verify that the route from B back to A - is defined.
  • bulletSome versions of LRP (EigerStein2Beta for example) have a shell with + is defined. +
  • Some versions of LRP (EigerStein2Beta for example) have a shell with broken variable expansion. You can get a corrected shell from the Shorewall Errata download site. -
  • bulletDo you have your kernel properly configured? Click - here to see my kernel configuration.
    bulletSome features require the "ip" program. That program is generally included + +
  • Do you have your kernel properly configured? Click + here to see my kernel configuration.
  • +
  • Some features require the "ip" program. That program is generally included in the "iproute" package which should be included with your distribution (though many distributions don't install iproute by default). You may also download the latest source tarball from ftp://ftp.inr.ac.ru/ip-routing -.
  • bulletIf you have any entry for a zone in /etc/shorewall/hosts then the +. +
  • If you have any entry for a zone in /etc/shorewall/hosts then the zone must be entirely defined in /etc/shorewall/hosts unless you have specified MERGE_HOSTS=Yes (Shorewall version 1.3.5 and later). For example, if a zone has two interfaces but only one interface has an entry in /etc/shorewall/hosts then hosts attached to the other interface will not be considered -part of the zone.
  • bulletProblems with NAT? Be sure that you let Shorewall add all external addresses +part of the zone. +
  • Problems with NAT? Be sure that you let Shorewall add all external addresses to be use with NAT unless you have set ADD_IP_ALIASES -=No in /etc/shorewall/shorewall.conf.
  • -

    Still Having Problems?

    +=No in /etc/shorewall/shorewall.conf. + +

    Still Having Problems?

    See the support page.

    @@ -185,5 +190,5 @@ Tom Eastep

    Copyright © 2001, 2002 Thomas M. Eastep.

    -
    + \ No newline at end of file diff --git a/STABLE/documentation/two-interface.htm b/STABLE/documentation/two-interface.htm index 5cf52718b..b8867ba10 100644 --- a/STABLE/documentation/two-interface.htm +++ b/STABLE/documentation/two-interface.htm @@ -6,33 +6,40 @@ Two-Interface Firewall - + - + -

    Basic Two-Interface Firewall

    + + + + +
    +

    Basic Two-Interface Firewall

    +

    Setting up a Linux system as a firewall for a small network is a fairly straight-forward task if you understand the basics and follow the documentation.

    This guide doesn't attempt to acquaint you with all of the features of Shorewall. It rather focuses on what is required to configure Shorewall in its most common configuration:

    -
    - - - -
    bulletLinux system used as a firewall/router for a small local network.
    bulletSingle external IP address.
    bulletInternet connection through cable modem, DSL, ISDN, Frame Relay, dial-up - ...
    +
      +
    • Linux system used as a firewall/router for a small local network.
    • +
    • Single external IP address.
    • +
    • Internet connection through cable modem, DSL, ISDN, Frame Relay, dial-up + ...
    • +

    Here is a schematic of a typical installation.

    -

    +

    +

    This guide assumes that you have the iproute/iproute2 package installed (on RedHat, the package is called iproute). You can tell if this package is installed by the presence of an ip program on your firewall system. As root, you can use the 'which' command to check for this program:

    -
         [root@gateway root]# which ip
    +
         [root@gateway root]# which ip
          /sbin/ip
    -     [root@gateway root]#

    I recommend that you first read through the + [root@gateway root]#

    I recommend that you first read through the guide to familiarize yourself with what's involved then go back through it again making your configuration changes. Points at which configuration changes are recommended are flagged with .

    @@ -42,50 +49,49 @@ Unix files if your editor supports that option or you must run them through dos2unix before trying to use them. Similarly, if you copy a configuration file from your Windows hard drive to a floppy disk, you must run dos2unix against the copy before using it with Shorewall.

    -
    - - -
    bulletWindows Version of - dos2unix
    bulletLinux Version of - dos2unix
    -

    Shorewall Concepts

    + +

    Shorewall Concepts

    The configuration files for Shorewall are contained in the directory /etc/shorewall -- for simple setups, you will only need to deal with a few of these as described in this guide. After you have installed Shorewall, -download the -two-interface sample, un-tar it (tar -zxvf two-interfaces.tgz) and and copy the files to /etc/shorewall +download the two-interface sample, un-tar it (tar -zxvf two-interfaces.tgz) and and copy the files to /etc/shorewall (these files will replace files with the same name).

    As each file is introduced, I suggest that you look through the actual file on your system -- each file contains detailed configuration instructions and default entries.

    Shorewall views the network where it is running as being composed of a set of zones. In the two-interface sample configuration, the following zone names are used:

    -
    +
    - - + + - - + + - - + + -
    NameDescriptionNameDescription
    netThe InternetnetThe Internet
    locYour Local NetworklocYour Local Network
    +

    Zones are defined in the /etc/shorewall/zones file.

    Shorewall also recognizes the firewall system as its own zone - by default, the firewall itself is known as fw.

    Rules about what traffic to allow and what traffic to deny are expressed in terms of zones.

    -
    - - -
    bulletYou express your default policy for connections from one zone to another - zone in the /etc/shorewall/policy file.
    bulletYou define exceptions to those default policies in the - /etc/shorewall/rules file.
    +

    For each connection request entering the firewall, the request is first checked against the /etc/shorewall/rules file. If no rule in that file matches the connection request then the first policy in /etc/shorewall/policy that matches the @@ -96,57 +102,57 @@ file for you).

    The /etc/shorewall/policy file included with the two-interface sample has the following policies:

    - +
    - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + -
    Source ZoneDestination ZonePolicyLog LevelLimit:BurstSource ZoneDestination ZonePolicyLog LevelLimit:Burst
    locnetACCEPT  locnetACCEPT  
    netallDROPinfo netallDROPinfo 
    allallREJECTinfo allallREJECTinfo 
    +

    In the two-interface sample, the line below is included but commented out. If you want your firewall system to have full access to servers on the internet, uncomment that line.

    -
    +
    - - - - - + + + + + - - - - - + + + + + -
    Source ZoneDestination ZonePolicyLog LevelLimit:BurstSource ZoneDestination ZonePolicyLog LevelLimit:Burst
    fwnetACCEPT  fwnetACCEPT  
    +

    The above policy will:

      @@ -159,8 +165,9 @@ uncomment that line.

        At this point, edit your /etc/shorewall/policy and make any changes that you wish.

    -

    Network Interfaces

    -

    +

    Network Interfaces

    +

    +

    The firewall has two network interfaces. Where Internet connectivity is through a cable or DSL "Modem", the External Interface will be the ethernet adapter that is connected to that "Modem" (e.g., eth0)  @@ -188,15 +195,15 @@ the external interface is eth0 and the internal interface is eth1. If your configuration is different, you will have to modify the sample /etc/shorewall/interfaces file accordingly. While you are there, you may wish to review the list of options that are specified for the interfaces. Some hints:

    -
    - - -
    bullet +
      +
    • If your external interface is ppp0 or ippp0, you can replace the - "detect" in the second column with "-".

    bullet + "detect" in the second column with "-". +
  • If your external interface is ppp0 or ippp0 or if you have a static IP - address, you can remove "dhcp" from the option list.

  • -

    IP Addresses

    + address, you can remove "dhcp" from the option list. + +

    IP Addresses

    Before going further, we should say a few words about Internet Protocol (IP) addresses. Normally, your ISP will assign you a single Public IP address. This address may be assigned via the Dynamic Host @@ -210,9 +217,9 @@ internal network (the Internal Interface on your firewall plus your other computers). RFC 1918 reserves several Private IP address ranges for this purpose:

    -
         10.0.0.0    - 10.255.255.255
    +  
         10.0.0.0    - 10.255.255.255
          172.16.0.0  - 172.31.255.255
    -     192.168.0.0 - 192.168.255.255
    + 192.168.0.0 - 192.168.255.255

        @@ -236,24 +243,24 @@ purpose:

    Example sub-network:

    - +
    - - + + - - + + - - + + - - + + -
    Range:10.10.10.0 - 10.10.10.255Range:10.10.10.0 - 10.10.10.255
    Subnet Address:10.10.10.0Subnet Address:10.10.10.0
    Broadcast Address:10.10.10.255Broadcast Address:10.10.10.255
    VLSM Notation:10.10.10.0/24VLSM Notation:10.10.10.0/24
    +
    @@ -278,9 +285,10 @@ Needs to Know about Addressing & Routing", Thomas A. Maufer, Prenti 1999, ISBN 0-13-975483-0.

    The remainder of this quide will assume that you have configured your network as shown here:

    -

    +

    +

    The default gateway for computer's 1 & 2 would be 10.10.10.254.

    -

    IP Masquerading (SNAT)

    +

    IP Masquerading (SNAT)

    The addresses reserved by RFC 1918 are sometimes referred to as non-routable because the Internet backbone routers don't forward packets which have an RFC-1918 destination address. When one of your local systems @@ -299,15 +307,15 @@ forwards the packet on to computer 1.

    IP Masquerading
    but you will also see the term Source Network Address Translation (SNAT) used. Shorewall follows the convention used with Netfilter:

    -
    - - -
    bullet +
      +
    • Masquerade describes the case where you let your - firewall system automatically detect the external interface address.

    bullet + firewall system automatically detect the external interface address. +
  • SNAT refers to the case when you explicitly specify the source address that you want outbound packets from your local network to use. -

  • + +

    In Shorewall, both Masquerading and SNAT are configured with entries in the /etc/shorewall/masq file. You will normally use Masquerading if your external IP is dynamic and SNAT if the IP is static.

    @@ -320,7 +328,7 @@ static, you can enter it in the third column in the /etc/shorewall/masq entry if you like although your firewall will work fine if you leave that column empty. Entering your static IP in column 3 makes processing outgoing packets a little more efficient.

    -

    Port Forwarding (DNAT)

    +

    Port Forwarding (DNAT)

    One of your goals may be to run one or more servers on your local computers. Because these computers have RFC-1918 addresses, it is not possible for clients on the internet to connect directly to them. It is rather @@ -334,89 +342,89 @@ forwarding using DNAT rules in the /etc/shorewall/rules file.

    The general form of a simple port forwarding rule in /etc/shorewall/rules is:

    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESSACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESS
    DNATnetloc:<server local ip address> [:<server port>]<protocol><port>  DNATnetloc:<server local ip address> [:<server port>]<protocol><port>  
    +

    Example - you run a Web Server on computer 2 and you want to forward incoming TCP port 80 to that system:

    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESSACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESS
    DNATnetloc:10.10.10.2tcp80  DNATnetloc:10.10.10.2tcp80  
    +

    A couple of important points to keep in mind:

    -
    - - -
    bulletYou must test the above rule from a client outside of your local network +
      +
    • You must test the above rule from a client outside of your local network (i.e., don't test from a browser running on computers 1 or 2 or on the firewall). If you want to be able to access your web server using the IP address of your external interface, see Shorewall FAQ - #2.
    bulletMany ISPs block incoming connection requests to port 80. If you have + #2. +
  • Many ISPs block incoming connection requests to port 80. If you have problems connecting to your web server, try the following rule and try - connecting to port 5000.
  • + connecting to port 5000. +
    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESSACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESS
    DNATnetloc:10.10.10.2:80tcp5000  DNATnetloc:10.10.10.2:80tcp5000  
    +

        At this point, modify /etc/shorewall/rules to add any DNAT rules that you require.

    -

    Domain Name Server (DNS)

    +

    Domain Name Server (DNS)

    Normally, when you connect to your ISP, as part of getting an IP address your firewall's Domain Name Service (DNS) resolver will be automatically configured (e.g., the /etc/resolv.conf file will be written). @@ -424,15 +432,15 @@ Alternatively, your ISP may have given you the IP address of a pair of DNS name servers for you to manually configure as your primary and secondary name servers. Regardless of how DNS gets configured on your firewall, it is your responsibility to configure the resolver in your internal systems. You can take one of two approaches:

    -
    - - -
    bullet +
      +
    • You can configure your internal systems to use your ISP's name servers. If you ISP gave you the addresses of their servers or if those addresses are available on their web site, you can configure your internal systems to use those addresses. If that information isn't available, look in /etc/resolv.conf on your firewall system -- the name servers are given in - "nameserver" records in that file.

    bullet + "nameserver" records in that file. +
  •     You can configure a Caching Name Server on your firewall. Red Hat has an RPM for a caching name server (the RPM also requires the 'bind' RPM) and for Bering users, there is dnscache.lrp. If you @@ -441,75 +449,75 @@ internal systems. You can take one of two approaches:

    address of the firewall (10.10.10.254 in the example above) for the name server address. To allow your local systems to talk to your caching name server, you must open port 53 (both UDP and TCP) from the local network to the - firewall; you do that by adding the following rules in /etc/shorewall/rules.
  • + firewall; you do that by adding the following rules in /etc/shorewall/rules. +
    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESSACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESS
    ACCEPTlocfwtcp53  ACCEPTlocfwtcp53  
    ACCEPTlocfwudp53  ACCEPTlocfwudp53  
    +
    -

    Other Connections

    +

    Other Connections

    The two-interface sample includes the following rules:

    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESSACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESS
    ACCEPTfwnettcp53  ACCEPTfwnettcp53  
    ACCEPTfwnetudp53  ACCEPTfwnetudp53  
    +
    @@ -520,26 +528,26 @@ internal systems. You can take one of two approaches:

    The sample also includes:

    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESSACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESS
    ACCEPTlocfwtcp22  ACCEPTlocfwtcp22  
    +
    @@ -550,26 +558,26 @@ internal systems. You can take one of two approaches:

    and other systems, the general format is:
    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESSACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESS
    ACCEPT<source zone><destination zone><protocol><port>  ACCEPT<source zone><destination zone><protocol><port>  
    +
    @@ -577,35 +585,35 @@ internal systems. You can take one of two approaches:

    system:
    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESSACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESS
    ACCEPTnetfwtcp80#Allow web accessfrom the internetACCEPTnetfwtcp80#Allow web accessfrom the internet
    ACCEPTlocfwtcp80#Allow web accessfrom the local networkACCEPTlocfwtcp80#Allow web accessfrom the local network
    +
    @@ -620,33 +628,33 @@ internal systems. You can take one of two approaches:

    access to your firewall from the internet, use SSH:
    - +
    - - - - - - - + + + + + + + - - - - - - - + + + + + + + -
    ACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESSACTIONSOURCEDESTINATIONPROTOCOLPORTSOURCE PORTORIGINAL ADDRESS
    ACCEPTnetfwtcp22  ACCEPTnetfwtcp22  
    +

        Now edit your /etc/shorewall/rules file to add or delete other connections as required.

    -

    Starting and Stopping Your Firewall

    +

    Starting and Stopping Your Firewall

    The installation procedure @@ -678,6 +686,6 @@ Eastep

    Copyright 2002 Thomas M. Eastep

    - + \ No newline at end of file diff --git a/STABLE/documentation/whitelisting_under_shorewall.htm b/STABLE/documentation/whitelisting_under_shorewall.htm new file mode 100644 index 000000000..c0a706c56 --- /dev/null +++ b/STABLE/documentation/whitelisting_under_shorewall.htm @@ -0,0 +1,281 @@ + + + + + + + +Whitelisting under Shorewall + + + + + + + + +
    +

    Whitelisting under Shorewall

    +
    +

    For a brief time, the 1.2 version of Shorewall supported an +/etc/shorewall/whitelist file. This file was intended to contain a list of IP +addresses of hosts whose POLICY to all zones was ACCEPT. The whitelist file was +implemented as a stop-gap measure until the facilities necessary for +implementing white lists using zones was in place. As of Version 1.3 RC1, those +facilities were available.

    +

    White lists are most often used to give special privileges to a +set  of hosts within an organization. Let us suppose that we have the +following environment:

    +
      +
    • A firewall with three interfaces -- one to the internet, one + to a local network and one to a DMZ.
    • +
    • The local network uses SNAT to the internet and is comprised + of the class B network 10.10.0.0/16 (Note: While this example uses an RFC 1918 + local network, the technique described here in no way depends on that or on + SNAT. It may be used with Proxy ARP, Subnet Routing, Static NAT, etc.).
    • +
    • The network operations staff have workstations with IP + addresses in the class C network 10.10.10.0/24
    • +
    • We want the network operations staff to have full access to + all other hosts.
    • +
    • We want the network operations staff to bypass the transparent + HTTP proxy running on our firewall.
    • +
    +

    The basic approach will be that we will place the operations +staff's class C in its own zone called ops. Here are the appropriate +configuration files:

    +

    Zone File

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + ZONE + DISPLAY + COMMENTS
    netNetInternet
    opsOperationsOperations Staff's Class C
    locLocalLocal Class B
    dmzDMZDemilitarized zone
    +
    +

    The ops zone has been added to the standard 3-zone zones file -- since +ops is a sub-zone of loc, we list it BEFORE loc.

    +

    Interfaces File

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + ZONE + INTERFACE + BROADCAST + OPTIONS
    neteth0<whatever><options>
    dmzeth1<whatever>routestopped
    -eth210.10.255.255 
    +
    +

    Because eth2 interfaces to two zones (ops and loc), we +don't specify a zone for it here.

    +

    Hosts File

    +
    + + + + + + + + + + + + + + + + + + + + + +
    + ZONE + HOST(S) + OPTIONS
    opseth2:10.10.10.0/24routestopped
    loceth2:0.0.0.0/0 
    +
    +

    Here we define the ops and loc zones. When Shorewall is +stopped, only the hosts in the ops zone will be allowed to access the +firewall and the DMZ. I use 0.0.0.0/0 to define the loc zone rather than +10.10.0.0/16 so that the limited broadcast address (255.255.255.255) falls into +that zone. If I used 10.10.0.0/16 then I would have to have a separate entry for +that special address.

    +

    Policy File

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SOURCEDEST + POLICY + LOG LEVELLIMIT:BURST
    opsallACCEPT  
    allopsCONTINUE  
    locnetACCEPT  
    netallDROPinfo 
    allallREJECTinfo 
    +
    +

    Two entries for ops have been added to the standard 3-zone policy file. +WARNING: You must be running Shorewall 1.3.1 or later +for the above to work properly.

    +

    Rules File

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ACTIONSOURCEDEST + PROTODEST
    + PORT(S)
    SOURCE
    + PORT(S)
    ORIGINAL
    + DEST
    REDIRECTloc!ops3128tcphttp  
    ...      
    +
    +

    This is the rule that transparently redirects web traffic to the transparent +proxy running on the firewall. The SOURCE column explicitly excludes the ops +zone from the rule.

    + + + +

    + Updated 5/31/2002 - Tom +Eastep +

    + + + +

    Copyright + © 2002 Thomas M. Eastep.

    + + + + + + \ No newline at end of file diff --git a/STABLE/fallback.sh b/STABLE/fallback.sh index 61b89b7e7..71c0e9ba4 100755 --- a/STABLE/fallback.sh +++ b/STABLE/fallback.sh @@ -28,7 +28,7 @@ # shown below. Simply run this script to revert to your prior version of # Shoreline Firewall. -VERSION=1.3.6 +VERSION=1.3.7 usage() # $1 = exit status { diff --git a/STABLE/firewall b/STABLE/firewall index 9c18802d7..be028befd 100755 --- a/STABLE/firewall +++ b/STABLE/firewall @@ -1565,7 +1565,13 @@ add_nat_rule() { # Replace destination port by the new destination port - [ -n "$servport" ] && dports="--dport ${servport#*:}" + if [ -n "$servport" ]; then + if [ -z "$multiport" ]; then + dports="--dport ${servport#*:}" + else + dports="--dports ${servport#*:}" + fi + fi # Handle SNAT @@ -1650,18 +1656,21 @@ add_a_rule() case $proto in tcp|udp|TCP|UDP|6|17) if [ -n "$port" -a "x${port}" != "x-" ]; then - [ -n "$multioption" ] && \ - [ "$port" != "${port%,*}" ] && \ + dports="--dport" + if [ -n "$multioption" -a "$port" != "${port%,*}" ]; then multiport="$multioption" - dports="--dport $port" + dports="--dports" + fi + dports="$dports $ports" fi if [ -n "$cport" -a "x${cport}" != "x-" ]; then - [ -n "$multioption" ] && \ - [ -z "$multiport" ] && \ - [ "$cport" != "${cport%,*}" ] && \ + sports="--sport" + if [ -n "$multioption" -a "$cport" != "${cport%,*}" ]; then multiport="$multioption" - sports="--sport $cport" + sports="--sports" + fi + sports="$sports $cport" fi ;; icmp|ICMP|1) @@ -2428,7 +2437,7 @@ setup_masq() if [ -n "$address" -a -n "$ADD_SNAT_ALIASES" ]; then list_search $address $aliases_to_add || \ - aliases_to_add="$aliases_to_add $external $address" + aliases_to_add="$aliases_to_add $address $interface" fi destination=$destnet @@ -2778,7 +2787,8 @@ add_common_rules() { logoptions="$LOGPARAMS --log-prefix Shorewall:badpkt:DROP:" logoptions="$logoptions --log-level $LOGUNCLEAN --log-ip-options" run_iptables -A badpkt -p tcp -j LOG $logoptions --log-tcp-options - run_iptables -A badpkt -p !tcp -j LOG $logoptions + run_iptables -A badpkt -p tcp -j DROP # Workaround for iptables 1.2.7 + run_iptables -A badpkt -j LOG $logoptions fi run_iptables -A badpkt -j DROP @@ -2803,7 +2813,8 @@ add_common_rules() { logoptions="$LOGPARAMS --log-prefix Shorewall:logpkt:LOG:" logoptions="$logoptions --log-level $LOGUNCLEAN --log-ip-options" run_iptables -A logpkt -p tcp -j LOG $logoptions --log-tcp-options - run_iptables -A logpkt -p !tcp -j LOG $logoptions + run_iptables -A logpkt -p tcp -j RETURN # Workaround for iptables 1.2.7 + run_iptables -A logpkt -j LOG $logoptions echo "Mangled/Invalid Packet Logging enabled on:" @@ -2814,16 +2825,15 @@ add_common_rules() { echo " $interface" done fi + ########################################################################### + # PING + # + [ -n "$FORWARDPING" ] && \ + run_iptables -A common -p icmp --icmp-type echo-request -j ACCEPT ############################################################################ # Common ICMP rules # - icmpdef=`find_file icmpdef` - - if [ -f $icmpdef ]; then - . $icmpdef - else - . `find_file icmp.def` - fi + run_user_exit icmpdef ############################################################################ # Common rules in each chain # @@ -2838,7 +2848,6 @@ add_common_rules() { # BROADCASTS # drop_broadcasts `find_broadcasts` - ########################################################################### # RFC 1918 # @@ -3400,6 +3409,7 @@ do_initialize() { MERGE_HOSTS= MUTEX_TIMEOUT= LOGNEWNOTSYN= + FORWARDPING= stopping= have_mutex= masq_seq=1 @@ -3476,6 +3486,7 @@ do_initialize() { MULTIPORT=`added_param_value_no MULTIPORT $MULTIPORT` DETECT_DNAT_IPADDRS=`added_param_value_no DETECT_DNAT_IPADDRS $DETECT_DNAT_IPADDRS` MERGE_HOSTS=`added_param_value_no MERGE_HOSTS $MERGE_HOSTS` + FORWARDPING=`added_param_value_no FORWARDPING $FORWARDPING` } ################################################################################ diff --git a/STABLE/icmp.def b/STABLE/icmp.def index 629b724d9..b6b39510b 100644 --- a/STABLE/icmp.def +++ b/STABLE/icmp.def @@ -1,22 +1,6 @@ ############################################################################## # Shorewall 1.3 /etc/shorewall/icmp.def # -# This file defines the default rules for accepting ICMP packets. +# This file is obsolete and is included for compatibility with existing +# icmpdef extension scripts that source it. # -# Do not modify this file -- if you wish to change these rules, create -# /etc/shorewall/icmpdef to replace it. It is suggested that you include -# the command "source /etc/shorewall/icmp.def" in your -# /etc/shorewall/icmpdef file so that you will continue to get the -# advantage of new releases of this file. -# -# For example, if you want to accept 'ping' everywhere then create -# /etc/shorewall/icmpdef with the following two lines: -# -# source /etc/shorewall/icmp.def -# run_iptables -A icmpdef -p ICMP --icmp-type echo-request -j ACCEPT -# -run_iptables -A icmpdef -p ICMP --icmp-type echo-reply -j ACCEPT -run_iptables -A icmpdef -p ICMP --icmp-type source-quench -j ACCEPT -run_iptables -A icmpdef -p ICMP --icmp-type destination-unreachable -j ACCEPT -run_iptables -A icmpdef -p ICMP --icmp-type time-exceeded -j ACCEPT -run_iptables -A icmpdef -p ICMP --icmp-type parameter-problem -j ACCEPT diff --git a/STABLE/install.sh b/STABLE/install.sh index 710e06109..1626089db 100755 --- a/STABLE/install.sh +++ b/STABLE/install.sh @@ -54,7 +54,7 @@ # /etc/rc.d/rc.local file is modified to start the firewall. # -VERSION=1.3.6 +VERSION=1.3.7 usage() # $1 = exit status { @@ -479,11 +479,17 @@ if [ -z "$PREFIX" -a -n "$first_install" ]; then fi elif [ -x /sbin/chkconfig -o -x /usr/sbin/chkconfig ]; then if chkconfig --add $FIREWALL ; then - echo -e "\nFirewall will automatically start in run levels as follows:" + echo -e "\nFirewall will start automatically in run levels as follows:" chkconfig --list $FIREWALL else cant_autostart fi + elif [ -x /sbin/rc-update ]; then + if rc-update add shorewall default; then + echo -e "\nFirewall will start automatically at boot" + else + cant_autostart + fi else modify_rclocal fi diff --git a/STABLE/interfaces b/STABLE/interfaces index fb99fcf4e..eb20f46cd 100644 --- a/STABLE/interfaces +++ b/STABLE/interfaces @@ -12,20 +12,24 @@ # of a zone defined in /etc/shorewall/zones. # # If the interface serves multiple zones that will be -# defined in the /etc/shorewall/hosts file, you may +# defined in the /etc/shorewall/hosts file, you should # place "-" in this column. # -# INTERFACE Name of interface +# INTERFACE Name of interface. Each interface may be listed only +# once in this file. # # BROADCAST The broadcast address for the subnetwork to which the # interface belongs. For P-T-P interfaces, this -# column is left black. +# column is left black.If the interface has multiple +# addresses on multiple subnets then list the broadcast +# addresses as a comma-separated list. # # If you use the special value "detect", the firewall # will detect the broadcast address for you. If you # select this option, the interface must be up before -# the firewall is started and you must have iproute -# installed. +# the firewall is started, you must have iproute +# installed and the interface must only be associated +# with a single subnet. # # If you don't want to give a value for this column but # you want to enter a value in the OPTIONS column, enter diff --git a/STABLE/policy b/STABLE/policy index abee2aa0c..4b144d54e 100644 --- a/STABLE/policy +++ b/STABLE/policy @@ -18,7 +18,7 @@ # in /etc/shorewall/zones, $FW or "all" # # POLICY Policy if no match from the rules file is found. Must -# be "ACCEPT", "DENY", "REJECT" or "CONTINUE" +# be "ACCEPT", "DROP", "REJECT" or "CONTINUE" # # LOG LEVEL If supplied, each connection handled under the default # POLICY is logged at that level. If not supplied, no diff --git a/STABLE/releasenotes.txt b/STABLE/releasenotes.txt index d3e57380b..11eb0c2e7 100644 --- a/STABLE/releasenotes.txt +++ b/STABLE/releasenotes.txt @@ -3,13 +3,22 @@ fixes. New features include: -1) The new "Shorewall Setup Guide" is included in this release. This - guide is intended for users who have multiple static external IP - addresses and for users who what to learn a bit more abound - Shorewall than is described in the single-address guides. +1) The 'icmp.def' file is now empty! The rules in that file were + required in ipchains firewalls but are not required in Shorewall. + Users who have ALLOWRELATED=No in shorewall.conf should see the + Upgrade Issues. +2) A 'FORWARDPING' option has been added to shorewall.conf. The effect + of setting this variable to Yes is the same as the effect of adding + an ACCEPT rule for ICMP echo-request in + /etc/shorewall/icmpdef. Users who have such a rule in icmpdef are + encouraged to switch to FORWARDPING=Yes. +3) The loopback CLASS A Network (127.0.0.0/8) has been added to the + rfc1918 file. +4) Shorewall now works with iptables 1.2.7. +5) The documentation and Web site no longer use FrontPage themes. -2) Shorewall now drops non-SYN tcp packets that are not part of an - established connection. These packets can be optionally logged by - setting the new LOGNEWNOTSYN variable in shorewall.conf. +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. diff --git a/STABLE/rfc1918 b/STABLE/rfc1918 index d3ef5954a..a2e066f49 100644 --- a/STABLE/rfc1918 +++ b/STABLE/rfc1918 @@ -45,13 +45,13 @@ 42.0.0.0/8 logdrop # Reserved 58.0.0.0/7 logdrop # Reserved 60.0.0.0/8 logdrop # Reserved -69.0.0.0/8 logdrop # Reserved 70.0.0.0/7 logdrop # Reserved 72.0.0.0/5 logdrop # Reserved 82.0.0.0/7 logdrop # Reserved 84.0.0.0/6 logdrop # Reserved 88.0.0.0/5 logdrop # Reserved 96.0.0.0/3 logdrop # Reserved +127.0.0.0/8 logdrop # Loopback 197.0.0.0/8 logdrop # Reserved 222.0.0.0/7 logdrop # Reserved 240.0.0.0/4 logdrop # Reserved diff --git a/STABLE/shorewall.conf b/STABLE/shorewall.conf index 36ccc6955..adef919b5 100644 --- a/STABLE/shorewall.conf +++ b/STABLE/shorewall.conf @@ -349,4 +349,12 @@ MUTEX_TIMEOUT=60 LOGNEWNOTSYN= +# +# Forward "Ping" +# +# If FORWARDPING is set to "Yes" then Echo Request ("Ping") packets are +# forwarded by the firewall. + +FORWARDPING=Yes + #LAST LINE -- DO NOT REMOVE diff --git a/STABLE/shorewall.spec b/STABLE/shorewall.spec index 24cae25e5..aedc4cc1f 100644 --- a/STABLE/shorewall.spec +++ b/STABLE/shorewall.spec @@ -1,5 +1,5 @@ %define name shorewall -%define version 1.3.6 +%define version 1.3.7 %define release 1 %define prefix /usr @@ -76,6 +76,8 @@ if [ $1 = 0 ]; then if [ -x /sbin/insserv ]; then /sbin/insserv -r /etc/init.d/s %doc COPYING INSTALL changelog.txt releasenotes.txt tunnel %changelog +* Thu Aug 22 2002 Tom Eastep +- Changed version to 1.3.7 * Sun Aug 04 2002 Tom Eastep - Changed version to 1.3.6 * Mon Jul 29 2002 Tom Eastep diff --git a/STABLE/uninstall.sh b/STABLE/uninstall.sh index 7e9920320..8dfcbe0e3 100755 --- a/STABLE/uninstall.sh +++ b/STABLE/uninstall.sh @@ -26,7 +26,7 @@ # You may only use this script to uninstall the version # shown below. Simply run this script to remove Seattle Firewall -VERSION=1.3.6 +VERSION=1.3.7 usage() # $1 = exit status {