From f3790a541bd8bf205f6b4cce6b12f8f11cb02911 Mon Sep 17 00:00:00 2001
From: teastep Shorewall consists of the following components: You may use the file /etc/shorewall/params file to set shell variables
- that you can then use in some of the other configuration files. It is suggested that variable names begin with an upper case letter to distinguish them from variables used internally
- within the Shorewall programs Example: Example (/etc/shorewall/interfaces record): The result will be the same as if the record had been written Variables may be used anywhere in the other configuration
- files. 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: The /etc/shorewall/zones file released with Shorewall is as follows: 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. You may use the file /etc/shorewall/params file to set shell variables
+ that you can then use in some of the other configuration
+ files. It is suggested that variable names begin with an upper case letter to distinguish them from variables used internally
+ within the Shorewall programs Example: Example (/etc/shorewall/interfaces record): The result will be the same as if the record had been written Variables may be used anywhere in the other configuration
+ files. 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: The /etc/shorewall/zones file released with Shorewall is as follows: 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. Warning 1: If you rename or delete a zone, you should perform "shorewall
- stop; shorewall start" to install the change rather than "shorewall
- restart".
-
-
-
+
+
-
+
+
+
+
+
-
-
- Shorewall 1.3 Reference
- Shorewall 1.4 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.
-
+
Components
-
+
-
-
-
-
- /etc/shorewall/params
-
-
- NET_IF=eth0
-
-
NET_BCAST=130.252.100.255
NET_OPTIONS=blacklist,norfc1918 net $NET_IF $NET_BCAST $NET_OPTIONS
-
- net eth0 130.252.100.255 blacklist,norfc1918
-
- /etc/shorewall/zones
-
-
-
-
-
-
+
+
+
-
-
-
-
-
- ZONE
- DISPLAY
- COMMENTS
-
-
- net
- Net
- Internet
-
-
- loc
- Local
- Local networks
-
-
-
-
-
-
-
-dmz
- DMZ
- Demilitarized zone
- /etc/shorewall/params
+ NET_IF=eth0
+
+
NET_BCAST=130.252.100.255
NET_OPTIONS=blacklist,norfc1918 net $NET_IF $NET_BCAST $NET_OPTIONS
+
+ net eth0 130.252.100.255 blacklist,norfc1918
+
+ /etc/shorewall/zones
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ZONE
+ DISPLAY
+ COMMENTS
+
+
+ net
+ Net
+ Internet
+
+
+ loc
+ Local
+ Local networks
+
+
+
+
+
+
+
+dmz
+ DMZ
+ Demilitarized zone
+
Warning 2: The order of entries in the /etc/shorewall/zones file is - significant in some cases.
+ significant in some cases. - +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:
- - tcpflags (added in version 1.3.11) - This option causes Shorewall
to make sanity checks on the header flags in TCP packets arriving on this
interface. Checks include Null flags, SYN+FIN, SYN+RST and FIN+URG+PSH; these
@@ -296,1099 +309,1078 @@ flag combinations are typically used for "silent" port scans. Packets failing
these checks are logged according to the TCP_FLAGS_LOG_LEVEL option in /etc/shorewall/shorewall.conf and are disposed of according
to the TCP_FLAGS_DISPOSITION option.
-
- blacklist - This option causes incoming packets on this
- interface to be checked against the
+ blacklist - This option causes incoming packets
+ on this interface to be checked against the blacklist.
-
- dhcp - The interface is assigned an IP address
- via DHCP or is used by a DHCP server running on the firewall.
- The firewall will be configured to allow DHCP traffic to and
- from the interface even when the firewall is stopped. You may
- also wish to use this option if you have a static IP but you are
- on a LAN segment that has a lot of Laptops that use DHCP and you
- select the norfc1918 option (see below).
noping - This option is deprecated and is not available
- when OLD_PING_HANDLING=No in /etc/shorewall/shorewall.conf. ICMP echo-request
- (ping) packets addressed to the firewall will be ignored by this
- interface.
-
- filterping - This option is deprecated
- and is not available when OLD_PING_HANDLING=No in /etc/shorewall/shorewall.conf.
- ICMP echo-request (ping) packets addressed to the firewall
-will be handled according to the /etc/shorewall/rules and /etc/shorewall/policy
- file. If the applicable policy is DROP or REJECT and you have
-supplied your own /etc/shorewall/icmpdef file then these 'ping' requests
- will be passed through the rules in that file before being dropped
- or rejected. If neither noping nor filterping
- is specified then the firewall will automatically ACCEPT these
-'ping' requests. If both noping and filterping
- are specified, filterping takes precedence.
routestopped - Beginning with Shorewall 1.3.4, this option - is deprecated in favor of the /etc/shorewall/routestopped - file. When the firewall is stopped, traffic to and from - this interface will be accepted and routing will occur between -this interface and other routestopped interfaces.
- - - -norfc1918 - Packets arriving on this interface and that + +
norfc1918 - Packets arriving on this interface and that
have a source address that is reserved in RFC 1918 or in other
- RFCs will be dropped after being optionally logged. If packet mangling is enabled in /etc/shorewall/shorewall.conf
- , then packets arriving on this interface that have a destination
- address that is reserved by one of these RFCs will also be logged
- and dropped.
-
- Addresses blocked by the standard
+
+ Addresses blocked by the standard rfc1918 file include those
- addresses reserved by RFC1918 plus other ranges reserved by the
- IANA or by other RFCs.
Beware that as IPv4 addresses become in increasingly short supply, - ISPs are beginning to use RFC 1918 addresses within their -own infrastructure. Also, many cable and DSL "modems" have -an RFC 1918 address that can be used through a web browser for -management and monitoring functions. If you want to specify norfc1918 - on your external interface but need to allow access to certain -addresses from the above list, see FAQ 14.
+ ISPs are beginning to use RFC 1918 addresses within their + own infrastructure. Also, many cable and DSL "modems" have + an RFC 1918 address that can be used through a web browser for + management and monitoring functions. If you want to specify norfc1918 + on your external interface but need to allow access to certain + addresses from the above list, see FAQ +14. - + +routefilter - Invoke the Kernel's route filtering - (anti-spoofing) facility on this interface. The kernel - will reject any packets incoming on this interface that have -a source address that would be routed outbound through another - interface on the firewall. Warning: - If you specify this option for an interface then the -interface must be up prior to starting the firewall.
+ (anti-spoofing) facility on this interface. The kernel + will reject any packets incoming on this interface that have + a source address that would be routed outbound through another + interface on the firewall. Warning: + If you specify this option for an interface then the + interface must be up prior to starting the firewall. - -multi - The interface has multiple addresses and - you want to be able to route between them. Example: you - have two addresses on your single local interface eth1, one - each in subnets 192.168.1.0/24 and 192.168.2.0/24 and you want to - route between these subnets. Because you only have one interface - in the local zone, Shorewall won't normally create a rule to forward - packets from eth1 to eth1. Adding "multi" to the entry for eth1 - will cause Shorewall to create the loc2loc chain and the appropriate - forwarding rule.
+ + + dropunclean - Packets from this interface that
+ are selected by the 'unclean' match target in iptables will
+ be optionally logged and then dropped.
+ Warning: This feature
+ requires that UNCLEAN match support be configured in your
+ kernel, either in the kernel itself or as a module. UNCLEAN
+ support is broken in some versions of the kernel
+ but appears to work ok in 2.4.17-rc1.
+
+ Update 12/17/2001: The
+ unclean match patch from 2.4.17-rc1 is
+ available
+ for download. I am currently running
+ this patch applied to kernel 2.4.16.
dropunclean - Packets from this interface that
- are selected by the 'unclean' match target in iptables will
- be optionally logged and then dropped.
- Warning: This feature
- requires that UNCLEAN match support be configured in your
- kernel, either in the kernel itself or as a module. UNCLEAN
- support is broken in some versions of the kernel
-but appears to work ok in 2.4.17-rc1.
-
- Update 12/17/2001: The
- unclean match patch from 2.4.17-rc1 is available
- for download. I am currently running this
- patch applied to kernel 2.4.16.
Update 12/20/2001: I've - seen a number of tcp connection requests with - OPT (020405B40000080A...) being dropped - in the badpkt chain. This appears to be - a bug in the remote TCP stack whereby it is 8-byte aligning - a timestamp (TCP option 8) but rather than padding with 0x01 - it is padding with 0x00. It's a tough call whether -to deny people access to your servers because of this - rather minor bug in their networking software. If - you wish to disable the check that causes these -connections to be dropped, 0000080A...) being + dropped in the badpkt chain. This appears to be + a bug in the remote TCP stack whereby it is 8-byte aligning + a timestamp (TCP option 8) but rather than padding +with 0x01 it is padding with 0x00. It's a tough call +whether to deny people access to your servers because + of this rather minor bug in their networking software. + If you wish to disable the check that causes +these connections to be dropped, here's a kernel patch against 2.4.17-rc2.
- +logunclean - This option works like dropunclean - with the exception that packets selected by - the 'unclean' match target in iptables are logged - but not dropped. The level at which - the packets are logged is determined by the setting - of LOGUNCLEAN and if - LOGUNCLEAN has not been set, "info" is assumed.
+ with the exception that packets selected + by the 'unclean' match target in iptables +are logged but not dropped. The +level at which the packets are logged is determined by + the setting of LOGUNCLEAN +and if LOGUNCLEAN has not been set, "info" is assumed. - +proxyarp (Added in version 1.3.5) - This option
causes Shorewall to set /proc/sys/net/ipv4/conf/<interface>/proxy_arp
- and is used when implementing Proxy ARP
-Sub-netting as described at
-
- http://www.tldp.org/HOWTO/mini/Proxy-ARP-Subnet/. Do
- not set this option if you are implementing Proxy
-ARP through entries in
- /etc/shorewall/proxyarp.
-
- maclist (Added in version 1.3.10) - If this
- option is specified, all connection requests from this interface
-are subject to MAC Verification.
-May only be specified for ethernet interfaces.
My recommendations concerning options:
-
- +
Example 1: You have a conventional firewall setup in which eth0 connects - to a Cable or DSL modem and eth1 connects to your local network - and eth0 gets its IP address via DHCP. You want to check all -packets entering from the internet against the -black list. Your /etc/shorewall/interfaces file - would be as follows:
+ to a Cable or DSL modem and eth1 connects to your local +network and eth0 gets its IP address via DHCP. You want to +check all packets entering from the internet + against the black list. Your /etc/shorewall/interfaces + file would be as follows: - +- -- - -- -
-- -ZONE -INTERFACE -BROADCAST -OPTIONS -- -net -eth0 -detect -dhcp,norfc1918,blacklist -- - - - - - - -loc -eth1 -detect --
-
Example 2: You have a standalone dialup GNU/Linux System. Your /etc/shorewall/interfaces - file would be:
- - -- -- +- -
-- -ZONE -INTERFACE -BROADCAST -OPTIONS -- - - - - - - - -net -ppp0 - --
--
-
ZONE | +INTERFACE | +BROADCAST | +OPTIONS | +
net | +eth0 | +detect | +dhcp,norfc1918,blacklist | +
loc | +eth1 | +detect | + + |
+
Example 2: You have a standalone dialup GNU/Linux System. Your /etc/shorewall/interfaces + file would be:
+ + ++ ++ ++ +
++ +ZONE +INTERFACE +BROADCAST +OPTIONS ++ + + + + + + + +net +ppp0 + ++
++
+
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 -- +loc -eth1 ++ +ZONE +INTERFACE +BROADCAST +OPTIONS ++ +loc +eth1 -192.168.1.255,192.168.12.255 --
-192.168.1.255,192.168.12.255 ++ - - + + - +
+
For most applications, specifying zones entirely in terms of network interfaces is sufficient. There may be times though where you need to define a zone to be a more general collection of hosts. This is the purpose of the /etc/shorewall/hosts file.
- +WARNING: 90% of Shorewall users don't need to put entries in this file and 80% of those who try to add such entries do it wrong. Unless you are ABSOLUTELY SURE that you need entries in this file, don't touch it.
- +Columns in this file are:
- +- ++ - --
- +- An IP address (example - eth1:192.168.1.3)
+- An IP address (example + - eth1:192.168.1.3)
-- A subnet in CIDR notation - (example - eth2:192.168.2.0/24)
+- A subnet in CIDR notation + (example - eth2:192.168.2.0/24)
- +The interface name much match an entry in /etc/shorewall/interfaces.
-
- - -- - -routestopped - Beginning with Shorewall - 1.3.4, this option is deprecated in favor of the - /etc/shorewall/routestopped - file. When the firewall is stopped, traffic to and from - this host (these hosts) will be accepted and routing will - occur between this host and other routestopped interfaces - and hosts.
-
-
- maclist - Added in version 1.3.10. If specified, - connection requests from the hosts specified in this entry are subject - to MAC Verification. This option is only - valid for ethernet interfaces.
-
If you don't define any hosts for a zone, the hosts in the zone default - to i0:0.0.0.0/0 , i1:0.0.0.0/0, ... where i0, i1, ... are -the interfaces to the zone.
- - -Note 1: You probably -DON'T want to specify any hosts for your internet zone since the hosts -that you specify will be the only ones that you will be able to access -without adding additional rules.
- - -Note 2: - The setting of the MERGE_HOSTS variable - in /etc/shorewall/shorewall.conf - has an important effect on how the -host file is processed. Please read the -description of that variable carefully.
- - -Example:
- - -Your local interface is eth1 and you have two groups of local hosts that - you want to make into separate zones:
- - -Your /etc/shorewall/interfaces file might look like:
- - --- - -- -
-- -ZONE -INTERFACE -BROADCAST -OPTIONS -- -net -eth0 -detect -dhcp,norfc1918 -- - - - - - - - -- -eth1 -detect --
-
The '-' in the ZONE column for eth1 tells Shorewall that eth1 interfaces - to multiple zones.
- - -Your /etc/shorewall/hosts file might look like:
- - -- - -- - -- -
-- -ZONE -HOST(S) -OPTIONS -- -loc1 -eth1:192.168.1.0/25 --
-- - - - - - - - -loc2 -eth1:192.168.1.128/25 -routestopped -
Hosts in 'loc2' can communicate with the firewall while Shorewall is - stopped -- those in 'loc1' cannot.
- - -The /etc/shorewall/interfaces and /etc/shorewall/hosts file allow - you to define nested or overlapping zones. Such overlapping/nested zones - are allowed and Shorewall processes zones in the order that - they appear in the /etc/shorewall/zones file. So if you have nested - zones, you want the sub-zone to appear before the super-zone -and in the case of overlapping zones, the rules that will apply -to hosts that belong to both zones is determined by which zone appears -first in /etc/shorewall/zones.
- - -Hosts that belong to more than one zone may be managed by the rules - of all of those zones. This is done through use of the special - CONTINUE policy described below.
- - -This file is used to describe the firewall policy regarding establishment - of connections. Connection establishment is described in terms - of clients who initiate connections and servers who - receive those connection requests. Policies defined in /etc/shorewall/policy - describe which zones are allowed to establish connections with - other zones.
- - - -Policies established in /etc/shorewall/policy can be viewed as default - policies. If no rule in /etc/shorewall/rules applies to a -particular connection request then the policy from /etc/shorewall/policy - is applied.
- - - -Four policies are defined:
- -For each policy specified in /etc/shorewall/policy, you can indicate - that you want a message sent to your system log each time -that the policy is applied.
- - -Entries in /etc/shorewall/policy have four columns as follows:
- - -In the SOURCE and DEST columns, you can enter "all" to indicate all - zones.
- - -The policy file installed by default is as follows:
- - -- - -- - - -- -
-- -SOURCE -DEST -POLICY -LOG LEVEL -LIMIT:BURST -- -loc -net -ACCEPT -- -
--
-- -net -all -DROP -info --
-- - - - - - - - -all -all -REJECT -info --
-
This table may be interpreted as follows:
- - -WARNING:
- - -The firewall script processes the - /etc/shorewall/policy file from top to bottom and uses -the first applicable policy that it finds. For example, -in the following policy file, the policy for (loc, loc) connections -would be ACCEPT as specified in the first entry even though the -third entry in the file specifies REJECT.
- - -- -- -- -
-- -SOURCE -DEST -POLICY -LOG LEVEL -LIMIT:BURST -- - -loc -all -ACCEPT --
--
-- -net -all -DROP -info --
-- - - +loc -loc -REJECT -info --
--+maclist - Added in version 1.3.10. If specified, connection + requests from the hosts specified in this entry are subject to + MAC Verification. This option is only + valid for ethernet interfaces.
+ - -
+
If you don't define any hosts for a zone, the hosts in the zone default + to i0:0.0.0.0/0 , i1:0.0.0.0/0, ... where i0, i1, ... are + the interfaces to the zone.
- -Where zones are nested or overlapping , the - CONTINUE policy allows hosts that are within multiple zones to - be managed under the rules of all of these zones. Let's look at -an example:
- -/etc/shorewall/zones:
+ +Note: You probably DON'T + want to specify any hosts for your internet zone since the hosts that +you specify will be the only ones that you will be able to access without +adding additional rules.
+ + + + +Example:
+ + +Your local interface is eth1 and you have two groups of local hosts that + you want to make into separate zones:
+ + +Your /etc/shorewall/interfaces file might look like:
+ -- +- - -- -
-- -ZONE -DISPLAY -COMMENTS -- -sam -Sam -Sam's system at home -- -net -Internet -The Internet -- - - - - - - - -loc -Loc -Local Network -
/etc/shorewall/interfaces:
- - -- -- - -- -
-- -ZONE -INTERFACE -BROADCAST -OPTIONS -- -- -eth0 -detect -dhcp,norfc1918 -- - - - - - - - -loc -eth1 -detect -routestopped -
/etc/shorewall/hosts:
- - -- -+ - -- -
-- -ZONE -HOST(S) -OPTIONS -- - -net -eth0:0.0.0.0/0 --
-- + +sam -eth0:206.191.149.197 -routestopped -+ +ZONE +INTERFACE +BROADCAST +OPTIONS ++ +net +eth0 +detect +dhcp,norfc1918 ++ - +- +eth1 +detect ++
+
Note that Sam's home system is a member of both the sam zone - and the net zone - and as described above , that means that -sam must be listed before net in /etc/shorewall/zones.
- -/etc/shorewall/policy:
+ +The '-' in the ZONE column for eth1 tells Shorewall that eth1 interfaces + to multiple zones.
- -- + + +- -Your /etc/shorewall/hosts file might look like:
+ + + ++ ++- - -
-- -SOURCE -DEST -POLICY -LOG LEVEL -- - -loc -net -ACCEPT --
-- - -sam -all -CONTINUE --
-- -net -all -DROP -info -- - - - - - - - + +all -all -REJECT -info -+ +ZONE +HOST(S) +OPTIONS ++ +loc1 +eth1:192.168.1.0/25 ++
++ + +loc2 +eth1:192.168.1.128/25 ++
+
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 if there is no match then the connection -request should be treated under rules where the source zone is -net. It is important that this policy be listed BEFORE -the next policy (net to all).
- -Partial /etc/shorewall/rules:
- -- + + ++ + + +Nested and Overlapping +Zones
+ + + +The /etc/shorewall/interfaces and /etc/shorewall/hosts file allow + you to define nested or overlapping zones. Such overlapping/nested zones + are allowed and Shorewall processes zones in the order that + they appear in the /etc/shorewall/zones file. So if you have + nested zones, you want the sub-zone to appear before the super-zone + and in the case of overlapping zones, the rules that will apply + to hosts that belong to both zones is determined by which zone +appears first in /etc/shorewall/zones.
+ + + +Hosts that belong to more than one zone may be managed by the rules + of all of those zones. This is done through use of the special + CONTINUE policy described below.
+ + + ++ /etc/shorewall/policy Configuration.
+ + +This file is used to describe the firewall policy regarding establishment + of connections. Connection establishment is described in +terms of clients who initiate connections and servers +who receive those connection requests. Policies defined +in /etc/shorewall/policy describe which zones are allowed +to establish connections with other zones.
+ + + +Policies established in /etc/shorewall/policy can be viewed as default + policies. If no rule in /etc/shorewall/rules applies to +a particular connection request then the policy from /etc/shorewall/policy + is applied.
+ + + +Four policies are defined:
+ + ++
+ + + +- 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.
+- 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.
+ +For each policy specified in /etc/shorewall/policy, you can indicate + that you want a message sent to your system log each time + that the policy is applied.
+ + + +Entries in /etc/shorewall/policy have four columns as follows:
+ + + ++ +
+ + + +- SOURCE + - The name of a client zone (a zone defined in the /etc/shorewall/zones file , the name of the firewall zone or "all").
+ +- DEST + - The name of a destination zone (a zone defined in the /etc/shorewall/zones file , the name of the firewall zone or "all"). Shorewall automatically + allows all traffic from the firewall to itself so the name of the firewall zone cannot appear in both the + SOURCE and DEST columns.
+ +- POLICY + - The default policy for connection requests from the SOURCE + zone to the DESTINATION zone.
+ +- LOG + LEVEL - Optional. If left empty, no log message is generated + when the policy is applied. Otherwise, this column should contain + an integer or name indicating a syslog level.
+ +- LIMIT:BURST + - Optional. If left empty, TCP connection requests + from the SOURCE zone to the DEST zone will + not be rate-limited. Otherwise, this column specifies the maximum + rate at which TCP connection requests will be accepted followed + by a colon (":") followed by the maximum burst size that will be + tolerated. Example: 10/sec:40 specifies that the maximum + rate of TCP connection requests allowed will be 10 per second and + a burst of 40 connections will be tolerated. Connection requests +in excess of these limits will be dropped.
+ + + +In the SOURCE and DEST columns, you can enter "all" to indicate all + zones.
+ + + +The policy file installed by default is as follows:
+ + + ++ ++- + +
-+ +SOURCE +DEST +POLICY +LOG LEVEL +LIMIT:BURST ++ loc +net +ACCEPT +-
+- -ACTION -SOURCE -DEST -PROTO -DEST -
- PORT(S)SOURCE -
- PORT(S)ORIGINAL - -
- DEST- - -... --
--
--
--
--
--
-- -DNAT -sam -loc:192.168.1.3 -tcp -ssh -- --
-- -DNAT -net -loc:192.168.1.5 -tcp -www -- --
-- +... --
--
--
--
--
--
-+ +
++ +net +all +DROP +info ++
++ - +all +all +REJECT +info ++
+
This table may be interpreted as follows:
+ + +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 all hosts in the net zone, Sam can connect to the -firewall's internet interface on TCP port 80 and the connection -request will be forwarded to 192.168.1.5. The order of the rules -is not significant.
+WARNING:
- -Sometimes it is necessary to suppress port forwarding - for a sub-zone. For example, suppose that all hosts can SSH - to the firewall and be forwarded to 192.168.1.5 EXCEPT Sam. When - Sam connects to the firewall's external IP, he should be connected - to the firewall itself. Because of the way that Netfilter is constructed, - this requires two rules as follows:
+ +The firewall script processes the + /etc/shorewall/policy file from top to bottom and uses + the first applicable policy that it finds. For example, + in the following policy file, the policy for (loc, loc) connections + would be ACCEPT as specified in the first entry even though the + third entry in the file specifies REJECT.
- -- -+ + +- - - +
- -
+- + +ACTION -SOURCE -DEST -PROTO -DEST -
- PORT(S)SOURCE -
- PORT(S)ORIGINAL -
- DEST+ +SOURCE +DEST +POLICY +LOG LEVEL +LIMIT:BURST ++ + +loc +all +ACCEPT ++
++
++ +net +all +DROP +info ++
++ + + + + + + + + +loc +loc +REJECT +info ++
+
Where zones are nested or overlapping , the + CONTINUE policy allows hosts that are within multiple zones + to be managed under the rules of all of these zones. Let's look + at an example:
+ + +/etc/shorewall/zones:
+ + ++ ++ + ++ + +
++ +ZONE +DISPLAY +COMMENTS ++ +sam +Sam +Sam's system at home ++ +net +Internet +The Internet ++ + + + + + + + + +loc +Loc +Local Network +
/etc/shorewall/interfaces:
+ + ++ ++ + + ++
-- --
--
--
--
--
--
--
-- -... --
--
--
--
--
-- -
-- -DNAT -sam -fw -tcp -ssh -- --
-- -DNAT -net!sam -loc:192.168.1.3 -tcp -ssh -- --
-- +... --
--
--
--
--
--
-ZONE +INTERFACE +BROADCAST +OPTIONS + ++ +- +eth0 +detect +dhcp,norfc1918 ++ - + + - + +loc +eth1 +detect ++
+
/etc/shorewall/hosts:
+ + ++ ++ + ++ + +
++ +ZONE +HOST(S) +OPTIONS ++ + +net +eth0:0.0.0.0/0 ++
++ + + + + + + + +sam +eth0:206.191.149.197 ++
+
Note that Sam's home system is a member of both the sam zone + and the net + zone and as described above , that means + that sam must be listed before net in /etc/shorewall/zones.
+ + +/etc/shorewall/policy:
+ + ++ ++ + ++ + +
++ +SOURCE +DEST +POLICY +LOG LEVEL ++ + +loc +net +ACCEPT ++
++ + +sam +all +CONTINUE ++
++ +net +all +DROP +info ++ + + + + + + + + + +all +all +REJECT +info +
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 if there is no match then the connection + request should be treated under rules where the source zone is + net. It is important that this policy be listed BEFORE +the next policy (net to all).
+ + +Partial /etc/shorewall/rules:
+ + ++ ++ + ++ + +
++ +ACTION +SOURCE +DEST +PROTO +DEST +
+ PORT(S)SOURCE +
+ PORT(S)ORIGINAL + +
+ DEST+ + +... ++
++
++
++
++
++
++ +DNAT +sam +loc:192.168.1.3 +tcp +ssh +- ++
++ +DNAT +net +loc:192.168.1.5 +tcp +www +- ++
++ + + + + + + + + + +... ++
++
++
++
++
++
+
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 all hosts in the net zone, Sam can +connect to the firewall's internet interface on TCP port 80 +and the connection request will be forwarded to 192.168.1.5. The +order of the rules is not significant.
+ + +Sometimes it is necessary to suppress port forwarding + for a sub-zone. For example, suppose that all hosts can +SSH to the firewall and be forwarded to 192.168.1.5 EXCEPT +Sam. When Sam connects to the firewall's external IP, he should +be connected to the firewall itself. Because of the way that Netfilter + is constructed, this requires two rules as follows:
+ + ++ ++ ++ + + +
+ +
++ + +ACTION +SOURCE +DEST +PROTO +DEST +
+ PORT(S)SOURCE +
+ PORT(S)ORIGINAL +
+ DEST+ ++
++
++
++
++
++
++
++ +... ++
++
++
++
++
++ +
++ +DNAT +sam +fw +tcp +ssh +- ++
++ +DNAT +net!sam +loc:192.168.1.3 +tcp +ssh +- ++
++ + + + + + + + +... ++
++
++
++
++
++
+
The first rule allows Sam SSH access to the firewall. The second rule says that any clients from the @@ -1397,478 +1389,489 @@ is not significant.
connection port forwarded to 192.168.1.3. If you need to exclude more than one zone in this way, - you can list the -zones separated by - commas (e.g., net!sam,joe,fred). - This technique also may be used when - the ACTION is REDIRECT. + you can list +the zones separated by + commas (e.g., net!sam,joe,fred). + This technique also may be used when + the ACTION is REDIRECT. - +The /etc/shorewall/rules file defines exceptions to the policies established
- in the /etc/shorewall/policy file. There is one entry in /etc/shorewall/rules
- for each of these rules.
-
Shorewall automatically enables firewall->firewall traffic over the
- loopback interface (lo) -- that traffic cannot be regulated using
-rules and any rule that tries to regulate such traffic will generate
-a warning and will be ignored.
-
Entries in the file have the following columns:
- +The ACTION may optionally be followed by ":" and a syslog 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.
-
Example 1. You wish to forward all - ssh connection requests from the internet to local system -192.168.1.3.
- - -- -- - -- - -
-- -ACTION -SOURCE -DEST -PROTO -DEST -
- PORT(S)SOURCE -
- PORT(S)ORIGINAL - -
- DEST- - - - - - - - - - -DNAT -net -loc:192.168.1.3 -tcp -ssh --
--
-
Example 2. You want to redirect all local www connection requests - EXCEPT those -to your own http server - (206.124.146.177) to a Squid - transparent proxy running on the firewall and -listening on port 3128. Squid will of course require access to -remote web servers. This example shows yet - another use for the ORIGINAL - DEST column; here, connection - requests that were NOT - - (notice the "!") originally - destined to 206.124.146.177 - are redirected to local - port 3128.
- - -- -- - -- - -
-- -ACTION -SOURCE -DEST -PROTO -DEST -
- PORT(S)SOURCE -
- PORT(S)ORIGINAL - -
- DEST- -REDIRECT -loc -3128 -tcp -www -- -
-!206.124.146.177 -- - - - - - - - - - -ACCEPT -fw -net -tcp -www --
--
-
Example 3. You want to run a web server at 155.186.235.222 in -your DMZ and have it accessible remotely and locally. the DMZ is managed - by Proxy ARP or by classical sub-netting.
+ ssh connection requests from the internet to local system + 192.168.1.3. -- +- - -- - -
-- -ACTION -SOURCE -DEST -PROTO -DEST -
- PORT(S)SOURCE -
- PORT(S)ORIGINAL - -
- DEST- - -ACCEPT -net -dmz:155.186.235.222 -tcp -www -- --
-- - - - - - - - - - -ACCEPT -loc -dmz:155.186.235.222 -tcp -www --
--
-
Example 4. You want to run wu-ftpd on 192.168.2.2 in your masqueraded
- DMZ. Your internet interface address is 155.186.235.151 and
- you want the FTP server to be accessible from the internet in
-addition to the local 192.168.1.0/24 and dmz 192.168.2.0/24
-subnetworks. Note that since the server is in the 192.168.2.0/24 subnetwork,
- we can assume that access to the server from that subnet will not
-involve the firewall (but see FAQ 2).
-Note that unless you
- have more than one external
- IP address, you can leave
- the ORIGINAL DEST column
- blank in the first rule. You
- cannot leave it blank in the
- second rule though because
- then all ftp connections
- originating in the
-local subnet 192.168.1.0/24
- would be sent to 192.168.2.2
- regardless of
-the site that the
-user was trying to
- connect to. That is
- clearly not what you want
-
- .
- -+ + + +- +
-- -ACTION -SOURCE -DEST -PROTO -DEST -
- PORT(S)SOURCE -
- PORT(S)ORIGINAL +
- DESTACTION +SOURCE +DEST +PROTO +DEST +
+ PORT(S)SOURCE +
+ PORT(S)ORIGINAL
+ DEST- -DNAT -net -dmz:192.168.2.2 -tcp -ftp --
--
-- +DNAT -loc:192.168.1.0/24 -dmz:192.168.2.2 -tcp -ftp -- -155.186.235.151 -+ - +DNAT +net +loc:192.168.1.3 +tcp +ssh ++
++
+
Example 2. You want to redirect all local www connection requests + EXCEPT those + to your own http server + (206.124.146.177) to a Squid + transparent proxy running on the firewall +and listening on port 3128. Squid will of course require access +to remote web servers. This example shows yet + another use for the ORIGINAL + DEST column; here, connection + requests that were NOT + +(notice the "!") originally + destined to 206.124.146.177 are + redirected to local port 3128.
+ + ++ ++ + ++ + +
++ +ACTION +SOURCE +DEST +PROTO +DEST +
+ PORT(S)SOURCE +
+ PORT(S)ORIGINAL + +
+ DEST+ +REDIRECT +loc +3128 +tcp +www +- +
+!206.124.146.177 ++ - -ACCEPT +fw +net +tcp +www ++
++
+If you are running wu-ftpd, you should restrict the range of passive - in your /etc/ftpaccess file. I only need a few simultaneous FTP sessions - so I use port range 65500-65535. In /etc/ftpaccess, this entry - is appropriate:
- -+ ++ + + +
Example 3. You want to run a web server at 155.186.235.222 in +your DMZ and have it accessible remotely and locally. the DMZ is managed + by Proxy ARP or by classical sub-netting.
+ + ++ ++ + ++ + +
++ +ACTION +SOURCE +DEST +PROTO +DEST +
+ PORT(S)SOURCE +
+ PORT(S)ORIGINAL + +
+ DEST+ + +ACCEPT +net +dmz:155.186.235.222 +tcp +www +- ++
++ + + + + + + -ACCEPT +loc +dmz:155.186.235.222 +tcp +www ++
++
+passive ports 0.0.0.0/0 65500 65534
+
Example 4. You want to run wu-ftpd on 192.168.2.2 in your masqueraded
+ DMZ. Your internet interface address is 155.186.235.151
+ and you want the FTP server to be accessible from the internet
+ in addition to the local 192.168.1.0/24 and dmz 192.168.2.0/24
+ subnetworks. Note that since the server is in the 192.168.2.0/24
+ subnetwork, we can assume that access to the server from that subnet
+ will not involve the firewall (but see FAQ
+ 2). Note that unless you
+ have more than one external
+ IP address, you can leave
+ the ORIGINAL DEST column
+ blank in the first rule. You
+ cannot leave it blank
+in the second rule though
+ because then all
+ftp connections
+ originating in the local
+ subnet 192.168.1.0/24 would
+ be sent to 192.168.2.2
+ regardless of the site that
+ the user was trying to
+ connect to. That is
+ clearly not what you
+want
+ .
+ +- + ++ + +
+ +ACTION +SOURCE +DEST +PROTO +DEST +
+ PORT(S)SOURCE +
+ PORT(S)ORIGINAL + +
+ DEST+ +DNAT +net +dmz:192.168.2.2 +tcp +ftp ++
++
++ + + + + + + + + + +DNAT +loc:192.168.1.0/24 +dmz:192.168.2.2 +tcp +ftp +- +155.186.235.151 +
If you are running wu-ftpd, you should restrict the range of passive + in your /etc/ftpaccess file. I only need a few simultaneous FTP sessions + so I use port range 65500-65535. In /etc/ftpaccess, this + entry is appropriate:
+ + + + ++ + + ++ + + +passive ports 0.0.0.0/0 65500 65534
+
If you are running pure-ftpd, you would include "-p 65500:65534" on - the pure-ftpd runline.
+ the pure-ftpd runline. - +The important point here is to ensure that the port range used for FTP - passive connections is unique and will not overlap with any -usage on the firewall system.
+ passive connections is unique and will not overlap with +any usage on the firewall system. - +Example 5. You wish to allow unlimited DMZ access to the host @@ -1877,54 +1880,110 @@ usage on the firewall system.
- +- ++ - Example -6. You wish to allow access to the SMTP server in your DMZ from -all zones.- -
-- +ACTION -SOURCE -DEST -PROTO -DEST -
- PORT(S)SOURCE -
- PORT(S)ORIGINAL +
- DEST+ -ACTION +SOURCE +DEST +PROTO +DEST +
+ PORT(S)SOURCE +
+ PORT(S)ORIGINAL -
+ DEST- + +ACCEPT -loc:~02-00-08-E3-FA-55 -dmz -all --
--
--
-+ - + - +ACCEPT +loc:~02-00-08-E3-FA-55 +dmz +all ++
++
++
+
+ Example + 6. You wish to allow access to the SMTP server in your DMZ +from all zones.+ Using "DNAT-" rather than "DNAT" avoids two extra copies + of the third rule from being generated.
+ ++ ++ Example 7 (For advanced users running Shorewall version + 1.3.13 or later). From the internet, you with to forward tcp +port 25 directed to 192.0.2.178 and 192.0.2.179 to host 192.0.2.177 +in your DMZ. You also want to allow access from the internet directly +to tcp port 25 on 192.0.2.177.+ +
++ +ACTION +
+SOURCE +
+DEST +
+PROTO +
+DEST +
+ PORT(S)
+SOURCE +
+ PORT(S)
+ORIGINAL +
+ DEST
++ + + + + +ACCEPT +
+all +
+dmz +
+tcp +
+25 +
++
++
+
+ Note: When 'all' is used as a source or destination, + intra-zone traffic is not affected. In this example, if there were + two DMZ interfaces then the above rule would NOT enable SMTP traffic + between hosts on these interfaces.
+
+ +- Example 7 (For advanced users running Shorewall version 1.3.13 - or later). From the internet, you with to forward tcp port 25 directed - to 192.0.2.178 and 192.0.2.179 to host 192.0.2.177 in your DMZ. You -also want to allow access from the internet directly to tcp port 25 on -192.0.2.177.-
@@ -1937,21 +1996,53 @@ all zones. +
PROTO
DEST
- PORT(S)
+ PORT(S)
SOURCE
- PORT(S)
+ PORT(S)
ORIGINAL
- DEST
+ DEST
+ +DNAT- +
+net +
+dmz:192.0.2.177 +
+tcp +
+25 +
+0 +
+192.0.2.178 +
++ DNAT- +
+net +
+dmz:192.0.2.177 +
+tcp +
+25 +
+0 +
+192.0.2.179 +
+- - + + ACCEPT -
all
+net -
dmz
+dmz:192.0.2.177
tcp @@ -1963,111 +2054,25 @@ all zones.
- Note: When 'all' is used as a source or destination, intra-zone - traffic is not affected. In this example, if there were two DMZ interfaces - then the above rule would NOT enable SMTP traffic between hosts on -these interfaces.
-
- --- Using "DNAT-" rather than "DNAT" avoids two extra copies of the - third rule from being generated.- -
-- -ACTION -
-SOURCE -
-DEST -
-PROTO -
-DEST -
- PORT(S)
-SOURCE -
- PORT(S)
-ORIGINAL -
- DEST
-- -DNAT- -
-net -
-dmz:192.0.2.177 -
-tcp -
-25 -
-0 -
-192.0.2.178 -
-- -DNAT- -
-net -
-dmz:192.0.2.177 -
-tcp -
-25 -
-0 -
-192.0.2.179 -
-- - - - -ACCEPT -
-net -
-dmz:192.0.2.177 -
-tcp -
-25 -
--
--
-
- +
Look here for information on other services.
- +Shorewall allows definition of rules that apply between all zones. @@ -2077,198 +2082,209 @@ also want to allow access from the internet directly to tcp port 25 on but may be modified to suit individual requirements. Rather - than -modify /etc/shorewall/common.def, - you -should copy that - file to - /etc/shorewall/common - and modify that file.
+ than + modify +/etc/shorewall/common.def, + you should copy that + file to + /etc/shorewall/common + and modify that + file. - +The /etc/shorewall/common - file -is expected to - contain iptables - commands; rather than - running iptables - directly, you should run - it indirectly using the - Shorewall function - 'run_iptables'. - That way, if iptables - encounters an error, the - firewall will be safely - stopped.
+ file + is expected to + contain iptables + commands; rather than + running iptables + directly, you should run + it indirectly using the + Shorewall function + 'run_iptables'. + That way, if iptables + encounters an error, the + firewall will be safely + stopped. - +The /etc/shorewall/masq file is used to define classical IP Masquerading - and Source Network Address Translation (SNAT). There is one -entry in the file for each subnet that you want to masquerade. -In order to make use of this feature, you must have NAT enabled .
- +Columns are:
- +Example 1: You have eth0 connected to a cable modem and eth1 - connected to your local subnetwork 192.168.9.0/24. Your /etc/shorewall/masq - file would look like:
+ connected to your local subnetwork 192.168.9.0/24. Your +/etc/shorewall/masq file would look like: - --- - -- - -
-- -INTERFACE -SUBNET -ADDRESS -- - - - - - - - - - -eth0 -192.168.9.0/24 --
-
Example 2: You have a number of IPSEC tunnels through ipsec0 - and you want to masquerade traffic from your 192.168.9.0/24 - subnet to the remote subnet 10.1.0.0/16 only.
- - -- -- - -- - -
-- -INTERFACE -SUBNET -ADDRESS -- - - - - - - - - - -ipsec0:10.1.0.0/16 -192.168.9.0/24 --
-
Example 3: You have a DSL line connected on eth0 and a local - network - (192.168.10.0/24) - connected to eth1. You - want all local->net - connections to use - source address - 206.124.146.176.
- -+- + + + + + + + ++ - -
-- -INTERFACE -SUBNET -ADDRESS -- +eth0 -192.168.10.0/24 -206.124.146.176 -+ +INTERFACE +SUBNET +ADDRESS ++ - + + - -eth0 +192.168.9.0/24 ++
+
Example 2: You have a number of IPSEC tunnels through ipsec0 + and you want to masquerade traffic from your 192.168.9.0/24 + subnet to the remote subnet 10.1.0.0/16 only.
+ + + ++ + ++ + + ++ + +
++ +INTERFACE +SUBNET +ADDRESS ++ + + + + + + + + + + +ipsec0:10.1.0.0/16 +192.168.9.0/24 ++
+
Example 3: You have a DSL line connected on eth0 and a local + network + (192.168.10.0/24) + connected to eth1. You + want all local->net + connections to use + source address + 206.124.146.176.
+ + ++ ++ + ++ + +
++ +INTERFACE +SUBNET +ADDRESS ++ + + + + + + + + +eth0 +192.168.10.0/24 +206.124.146.176 +
Example 4: Same as example 3 except that you wish @@ -2279,70 +2295,72 @@ an IP address configured on the INTERFACE or you must have ADD_SNAT_ALIASES - +
- ++ - Example - 5 (Shorewall version >= 1.3.14): You have a second IP address (206.124.146.177) - assigned to you and wish to use it for SNAT of the subnet 192.168.12.0/24. - You want to give that address the name eth0:0. You must have ADD_SNAT_ALIASES=Yes - in /etc/shorewall/shorewall.conf.- -
-- -INTERFACE -SUBNET -ADDRESS -- + +eth0 -192.168.10.0/24!192.168.10.44,192.168.10.45 -206.124.146.176 -+ +INTERFACE +SUBNET +ADDRESS ++ - + + - +eth0 +192.168.10.0/24!192.168.10.44,192.168.10.45 +206.124.146.176 +
- +- + +- -
-- -INTERFACE -SUBNET -ADDRESS -- + +eth0:0 -192.168.12.0/24 -206.124.146.177 -+ +INTERFACE +SUBNET +ADDRESS ++ - + + - +eth0:0 +192.168.12.0/24 +206.124.146.177 +
If you want to use proxy ARP on an entire sub-network, @@ -2352,30 +2370,30 @@ an IP address configured on the INTERFACE or you must have ADD_SNAT_ALIASES href="http://www.tldp.org/HOWTO/mini/Proxy-ARP-Subnet/"> http://www.tldp.org/HOWTO/mini/Proxy-ARP-Subnet/. -If you decide to use - the technique - described in that - HOWTO, you can set - the proxy_arp flag - for an interface - (/proc/sys/net/ipv4/conf/<interface>/proxy_arp) - by -including the - proxyarp option - in the interface's - record in - - /etc/shorewall/interfaces. - When using Proxy -ARP sub-netting, - you do NOT - include any - entries in - /etc/shorewall/proxyarp.
+ If you decide to use + the technique + described in that + HOWTO, you can set + the proxy_arp flag + for an interface + (/proc/sys/net/ipv4/conf/<interface>/proxy_arp) + +by including the + proxyarp option + in the interface's + record in + + /etc/shorewall/interfaces. + When using +Proxy ARP + sub-netting, you do + NOT include + any entries in + /etc/shorewall/proxyarp. - +The /etc/shorewall/proxyarp file is used to define Proxy ARP. The file is typically used for @@ -2383,51 +2401,52 @@ ARP sub-netting, on a small set of systems since you need one entry - in - this file for each - system using proxy - ARP. Columns are:
- + in + this file for each + system using proxy + ARP. Columns are: +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 - column of the change/added entry(s). If you are having problems communicating - between an individual host (A) on that segment and a system whose - entry has changed, you may need to flush the ARP cache on host -A as well.
+ file, you may need to flush the ARP cache of all routers +on the LAN segment connected to the interface specified in the +EXTERNAL column of the change/added entry(s). If you are having +problems communicating between an individual host (A) on that +segment and a system whose entry has changed, you may need to +flush the ARP cache on host A as well. - +ISPs typically have ARP configured with long TTL (hours!) so if your ISPs router has a stale cache entry (as seen using "tcpdump -nei <external interface> host <IP addr>"), it may @@ -2437,106 +2456,106 @@ order after changing my proxy ARP settings.
- +Example: You have public IP addresses 155.182.235.0/28. You configure your - firewall as follows:
- + firewall as follows: +In your DMZ, you want to install a Web/FTP server with public address - 155.186.235.4. On the Web server, you subnet just like the -firewall's eth0 and you configure 155.186.235.1 as the default -gateway. In your /etc/shorewall/proxyarp file, you will have:
+ 155.186.235.4. On the Web server, you subnet just like the + firewall's eth0 and you configure 155.186.235.1 as the default + gateway. In your /etc/shorewall/proxyarp file, you will have: - + +- ++ - +- + -
-- ADDRESS -INTERFACE -EXTERNAL -HAVEROUTE -- +155.186.235.4 -eth2 -eth0 -No -ADDRESS +INTERFACE +EXTERNAL +HAVEROUTE + ++ - + + - +155.186.235.4 +eth2 +eth0 +No +
Note: You may want to configure the servers in your DMZ with a subnet - that is smaller than the subnet of your internet interface. -See the Proxy ARP Subnet Mini HOWTO (http://www.tldp.org/HOWTO/mini/Proxy-ARP-Subnet/) - for details. In this case you will want to place "Yes" in the - HAVEROUTE column.
+ for details. In this case you will want to place "Yes" in + the HAVEROUTE column. - -To learn how I use Proxy ARP in my DMZ, see my -configuration files.
- +Warning: Do not use Proxy ARP and FreeS/Wan on the same system unless you are prepared to suffer the consequences. - If you start or restart Shorewall with an IPSEC tunnel active, - the proxied IP addresses are mistakenly assigned to the IPSEC tunnel - device (ipsecX) rather than to the interface that you specify -in the INTERFACE column of /etc/shorewall/proxyarp. I haven't had -the time to debug this problem so I can't say if it is a bug in the -Kernel or in FreeS/Wan.
- + If you start or restart Shorewall with an IPSEC tunnel active, + the proxied IP addresses are mistakenly assigned to the IPSEC + tunnel device (ipsecX) rather than to the interface that you +specify in the INTERFACE column of /etc/shorewall/proxyarp. I haven't +had the time to debug this problem so I can't say if it is a bug +in the Kernel or in FreeS/Wan. +You might be able to work around this problem using the following - (I haven't tried it):
- + (I haven't tried it): +In /etc/shorewall/init, include:
- +qt service ipsec stop
- +In /etc/shorewall/start, include:
- +qt service ipsec start
- +The /etc/shorewall/nat file is used to define static NAT. There is one - entry in the file for each static NAT relationship that you - wish to define. In order to make use of this feature, you must - have NAT enabled .
+ entry in the file for each static NAT relationship that +you wish to define. In order to make use of this feature, you +must have NAT enabled . - +IMPORTANT: If @@ -2548,498 +2567,394 @@ Kernel or in FreeS/Wan.
static NAT. Port forwarding can be accomplished - with - simple entries in - the - - rules file. - Also, in most - cases - - Proxy ARP - provides a - superior solution - to static NAT - because the - internal systems - are accessed -using -the same IP - address internally - and externally. + with + simple entries in + the + + rules file. + Also, in most + cases + + Proxy ARP + provides a + superior solution + to static NAT + because the + internal systems + are accessed + using + the same IP + address internally + and externally. - +Columns in an entry are:
- +Look here for additional information and an example. -
+ - +The /etc/shorewall/tunnels file allows you to define IPSec, GRE, IPIP, -OpenVPN and PPTP tunnels - with end-points on your firewall. To use ipsec, you must install -version 1.9, 1.91 or the current OpenVPN and PPTP + tunnels with end-points on your firewall. To use ipsec, you must + install version 1.9, 1.91 or the current FreeS/WAN development snapshot.
- -Note: For kernels 2.4.4 and above, you will need to use version 1.91 - or a development snapshot as patching with version 1.9 results - in kernel compilation errors.
- + +Note: For kernels 2.4.4 and above, you will need to use version 1.91 + or a development snapshot as patching with version 1.9 +results in kernel compilation errors.
+ + +Instructions for setting up IPSEC tunnels may - be found here, instructions for - IPIP and GRE tunnels are here, instructions + for IPIP and GRE tunnels are here, instructions for OpenVPN tunnels are here, and -instructions for PPTP tunnels are here.
- + instructions for PPTP tunnels are here. +This file is used to set the following firewall parameters:
- +ZONE | -HOSTS | -BROADCAST | -OPTIONS | -
loc | -eth1 | -- | -dhcp | -
- | -ppp+ | - - |
- - |
-
- Hosts File:
-
ZONE | -HOSTS | -
loc | -ppp+: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.
-
Rules not meeting those criteria will continue to generate an individual - rule for each listed port or port range.
-The file /etc/shorewall/modules contains commands for loading the kernel - modules required by Shorewall-defined firewall rules. Shorewall - will source this file during start/restart provided that it -exists and that the directory specified by the MODULESDIR parameter -exists (see /etc/shorewall/shorewall.conf -above).
+ modules required by Shorewall-defined firewall rules. Shorewall + will source this file during start/restart provided that +it exists and that the directory specified by the MODULESDIR +parameter exists (see /etc/shorewall/shorewall.conf + above). - +The file that is released with Shorewall calls the Shorewall function - "loadmodule" for the set of modules that I load.
+ "loadmodule" for the set of modules that I load. - +The loadmodule function is called as follows:
- +- + ++ - +loadmodule <modulename> [ <module parameters> ]
-
where
- ++- +<modulename>
- +- + ++is the name of the modules without the trailing ".o" (example ip_conntrack).
-
<module parameters>
- +- + +- + + - +Optional parameters to the insmod utility.
-
The function determines if the module named by <modulename> - is already loaded and if not then the function determines - if the ".o" file corresponding to the module exists in the moduledirectory; - if so, then the following command is executed:
+ is already loaded and if not then the function determines + if the ".o" file corresponding to the module exists in the + moduledirectory; if so, then the following command +is executed: - +- ++ parameters> + - +insmod moduledirectory/<modulename>.o <module - parameters>
-
If the file doesn't exist, the function determines of the ".o.gz" file corresponding to the module exists in the moduledirectory. If it does, the function assumes that the running configuration supports @@ -3281,436 +3202,431 @@ compressed modules and execute the following command:
- +- ++ parameters> + - +insmod moduledirectory/<modulename>.o.gz <module - parameters>
-
The /etc/shorewall/tos file allows you to set the Type of Service field - in packet headers based on packet source, packet destination, - protocol, source port and destination port. In order for this - file to be processed by Shorewall, you must have mangle support enabled .
- +Entries in the file have the following columns:
- +- ++ Maximize-Throughput (8)- + +-Minimize-Delay (16)
-
- Maximize-Throughput (8)
- Maximize-Reliability (4)
- Minimize-Cost (2)
- Normal-Service (0)
The /etc/shorewall/tos file that is included with Shorewall contains - the following entries.
+ the following entries. - +- ++ - +- + +
-+ SOURCE +DEST +PROTOCOL +SOURCE +
+ PORT(S)DEST PORT(S) +TOS +- -SOURCE -DEST -PROTOCOL -SOURCE -
- PORT(S)DEST PORT(S) -TOS -- -all -all -tcp -- -ssh -16 -- -all -all -tcp -ssh -- -16 -- -all -all -tcp -- -ftp -16 -- -all -all -tcp -ftp -- -16 -- -all -all -tcp -- -ftp-data -8 -- +all -all -tcp -ftp-data -- -8 -all +all +tcp +- +ssh +16 + ++ +all +all +tcp +ssh +- +16 ++ +all +all +tcp +- +ftp +16 ++ +all +all +tcp +ftp +- +16 ++ +all +all +tcp +- +ftp-data +8 ++ - + - +all +all +tcp +ftp-data +- +8 +
WARNING: Users have reported that odd routing problems result from - adding the ESP and AH protocols to the /etc/shorewall/tos file. -
+ adding the ESP and AH protocols to the /etc/shorewall/tos +file. - +Each line in /etc/shorewall/blacklist contains - an - IP - address, a MAC address in Shorewall Format or subnet address. - Example:
+ Example: - +130.252.100.69- +
206.124.146.0/24
Packets
from
hosts
listed
in
- the
- blacklist
- file
- will
- be
+ the
+ blacklist
+ file
+ will
- disposed
- of
- according
- to
- the
+be
+ disposed
+ of
+ according
+ to
+ the
- value
- assigned
- to
- the BLACKLIST_DISPOSITION
-
- and BLACKLIST_LOGLEVEL variables
+ value
+ assigned
+ to
+ the BLACKLIST_DISPOSITION
- in
- /etc/shorewall/shorewall.conf.
- Only
- packets
-
- arriving
- on
- interfaces
- that
- have
-
- the
- 'blacklist'
- option
+ and BLACKLIST_LOGLEVEL variables
in
- /etc/shorewall/interfaces
- are
- checked
+ /etc/shorewall/shorewall.conf.
+ Only
+ packets
- against
- the
- blacklist. The black list is designed to prevent
- listed hosts/subnets from accessing services on your
- network.
-
Beginning with Shorewall 1.3.8, the blacklist file has three columns:
-
Shorewall also has a dynamic blacklist - capability.
+ capability. - +IMPORTANT: The Shorewall blacklist file is NOT - designed to police your users' web browsing -- to do that, I -suggest that you install and configure Squid (http://www.squid-cache.org).
- +This file lists the subnets affected by the norfc1918 - interface option. Columns in the file are:
+ interface option. Columns in the file are: - +This file defines the hosts that are accessible from the firewall when - the firewall is stopped. Columns in the file are:
+ the firewall is stopped. Columns in the file are: - +Example: When your firewall is stopped, you want firewall accessibility - from local hosts 192.168.1.0/24 and from your DMZ. Your DMZ interfaces - through eth1 and your local hosts through eth2.
+ from local hosts 192.168.1.0/24 and from your DMZ. Your DMZ + interfaces through eth1 and your local hosts through eth2. - +- ++ - +- -
-- - - +INTERFACE - -HOST(S) - -- + -eth2 +INTERFACE -192.168.1.0/24 +HOST(S) -+ - + + +eth1 +eth2 -- +192.168.1.0/24 -+ + - + - +eth1 + +- + +
Updated 3/4/2003 - Tom Eastep -
+ +Updated 3/6/2003 - Tom Eastep +
- +Copyright © 2001, 2002, 2003 Thomas M. Eastep.
-
-
+ |
-
+
+
Shorewall FAQs- |
-
1a. Ok -- I followed those instructions
+ but it doesn't work.
+
1b. I'm still having problems with + port forwarding
+ + + + + + + + +3. I want to use Netmeeting + or MSN Instant Messenger with Shorewall. What + do I do?
+ + + + + +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?
- - - - - - - -1a. Ok -- I followed those instructions
- but it doesn't work.
-
1b. I'm still having problems with - port forwarding
- - - - - - - -3. I want to use Netmeeting - or MSN Instant Messenger with Shorewall. What -do I do?
- - - - - -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?
- +6a. Are there any log parsers + that work with Shorewall?
+6b. DROP messages on port 10619 are flooding the logs with their connect
- requests. Can i exclude these error messages for this port temporarily
- from logging in Shorewall?
-
8. When I try to start Shorewall - on RedHat I get messages about insmod failing -- -what's wrong?
+ +8. When I try to start Shorewall
+ on RedHat I get messages about insmod failing --
+ what's wrong?
+
9. Why can't Shorewall detect - my interfaces properly?
+ +8a. When I try to start Shorewall
+on RedHat I get a message referring me to FAQ #8
+
9. Why can't Shorewall detect + my interfaces properly?
- -10. What distributions does - it work with?
+ +10. What distributions does + it work with?
- -11. What features does it - support?
+ +11. What features does it +support?
- +12. Is there a GUI?
- +13. Why do you call it "Shorewall"?
- - + + - - + + - -15. My local systems can't see - out to the net
+ +15. My local systems can't see + out to the net
- -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: The first example in the rules file documentation shows how to - do port forwarding under Shorewall. The format of a port-forwarding - rule to a local system is as follows:
+ href="Documentation.htm#Rules">rules file documentation shows how to + do port forwarding under Shorewall. The format of a + port-forwarding rule to a local system is as follows: - -- -- - -- -
-- -ACTION -SOURCE -DESTINATION -PROTOCOL -PORT -SOURCE PORT -ORIG. DEST. -- + +DNAT -net -loc:<local IP address>[:<local - port>] -<protocol> -<port #> --
--
-- - - -- -
So to forward UDP port 7777 to internal system 192.168.1.5, - the rule is:
- - -- -- - -- -
-- -ACTION -SOURCE -DESTINATION -PROTOCOL -PORT -SOURCE PORT -ORIG. DEST. -- - - - - - - -DNAT -net -loc:192.168.1.5 -udp -7777 --
--
-
- -- - Finally, if you need to forward a range of ports, in the PORT column -specify the range as low-port:high-port.- -
-- -ACTION -SOURCE -DESTINATION -PROTOCOL -PORT -SOURCE PORT -ORIG. DEST. -- - - - - - - -DNAT -net -loc:<local IP address>[:<local - port>] -<protocol> -<port #> -- -<external IP> -
ACTION | +SOURCE | +DESTINATION | +PROTOCOL | +PORT | +SOURCE PORT | +ORIG. DEST. | +
DNAT | +net | +loc:<local + IP address>[:<local port>] | +<protocol> | +<port #> | + + |
+ + |
+
So to forward UDP port 7777 to internal system 192.168.1.5, + the rule is:
+ + ++ + ++ + ++ +
++ +ACTION +SOURCE +DESTINATION +PROTOCOL +PORT +SOURCE PORT +ORIG. DEST. ++ + + + + + + + +DNAT +net +loc:192.168.1.5 +udp +7777 ++
++
+
+ + ++ + Finally, if you need to forward a range of ports, in the PORT +column specify the range as low-port:high-port.+ +
++ +ACTION +SOURCE +DESTINATION +PROTOCOL +PORT +SOURCE PORT +ORIG. DEST. ++ + + + + + + + +DNAT +net +loc:<local + IP address>[:<local port>] +<protocol> +<port #> +- +<external +IP> +
Answer: That is usually the result of one of two things:
- +Answer: I have two objections to this setup.
- +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 and that eth1 has IP address 192.168.1.254 with subnet -192.168.1.0/24, do the following:
- -a) In /etc/shorewall/interfaces, specify "multi" as an option - for eth1 (No longer required as of Shorewall version -1.3.9).
+ +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 and that eth1 has IP address 192.168.1.254 with subnet + 192.168.1.0/24, in /etc/shorewall/rules, add:
- -b) In /etc/shorewall/rules, add:
-- + +++++ +-- -
-- -ACTION -SOURCE -DESTINATION -PROTOCOL -PORT -SOURCE PORT -ORIG. DEST. -- + +DNAT -loc:192.168.1.0/24 -loc:192.168.1.5 -tcp -www -- -130.151.100.69:192.168.1.254 -+ +ACTION +SOURCE +DESTINATION +PROTOCOL +PORT +SOURCE PORT +ORIG. DEST. ++ - - - + + + +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 address. If you have a dynamic IP address and are - running Shorewall 1.3.4 or later then include this in /etc/shorewall/params:
-That rule only works of course if you have a static external + IP address. If you have a dynamic IP address and +are running Shorewall 1.3.4 or later then include this +in /etc/shorewall/init:
+ETH0_IP=`find_interface_address eth0`-
and make your DNAT rule:
-- + +++++ +-- -
-- -ACTION -SOURCE -DESTINATION -PROTOCOL -PORT -SOURCE PORT -ORIG. DEST. -- + +DNAT -loc:192.168.1.0/24 -loc:192.168.1.5 -tcp -www -- -$ETH0_IP:192.168.1.254 -+ +ACTION +SOURCE +DESTINATION +PROTOCOL +PORT +SOURCE PORT +ORIG. DEST. ++ - - - + + + +DNAT +loc:192.168.1.0/24 +loc:192.168.1.5 +tcp +www +- +$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.
-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.
+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.
+ +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.
- -Another good way to approach this problem is to switch from - static NAT to Proxy ARP. That way, the hosts in Z have - non-RFC1918 addresses and can be accessed externally and -internally using the same address.
+ +Another good way to approach this problem is to switch from + static NAT to Proxy ARP. That way, the hosts in Z +have non-RFC1918 addresses and can be accessed externally +and internally using the same address.
- -If you don't like those solutions and prefer routing all -Z->Z traffic through your firewall then:
+ +If you don't like those solutions and prefer routing all Z->Z +traffic through your firewall then:
- -a) Specify "multi" on the entry for Z's interface in /etc/shorewall/interfaces
- (If you are running a Shorewall version earlier than 1.3.9).
- b) Set the Z->Z policy to ACCEPT.
- c) Masquerade Z to itself.
-
- Example:
a) Set the Z->Z policy to ACCEPT.
+ b) Masquerade Z to itself.
+
+ Example:
Zone: dmz
- Interface: eth2
- Subnet: 192.168.2.0/24
In /etc/shorewall/interfaces:
- -- + +- ++ ++- -
-- -ZONE -INTERFACE -BROADCAST -OPTIONS -- + +dmz -eth2 -192.168.2.255 -multi -+ +ZONE +INTERFACE +BROADCAST +OPTIONS ++ - - - + + + +dmz +eth2 +192.168.2.255 ++
+
In /etc/shorewall/policy:
- -- + +- + ++ ++- -
-- -SOURCE -DESTINATION -POLICY -LIMIT:BURST -- + +dmz -dmz -ACCEPT --
-+ +SOURCE +DESTINATION +POLICY +LIMIT:BURST ++ - - - + + + +dmz +dmz +ACCEPT ++
+
In /etc/shorewall/masq:
- -- + +++ ++ + +- -
+- -INTERFACE - -SUBNET -ADDRESS -- + +eth2 -192.168.2.0/24 --
-+ +INTERFACE + +SUBNET +ADDRESS ++ + + + + +eth2 +192.168.2.0/24 ++
+3. I want to use Netmeeting or MSN Instant + Messenger with Shorewall. What do I do?
+ + +Answer: There is an H.323 connection + tracking/NAT module that may help with Netmeeting. + Look here for a solution + for MSN IM but be aware that there are significant security risks involved + with this solution. Also check the Netfilter mailing list + archives at http://www.netfilter.org. +
+ + +4. I just used an online port scanner + to check my firewall and it shows some ports as +'closed' rather than 'blocked'. 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 necessary to prevent + outgoing connection problems to services that use the + 'Auth' mechanism for identifying requesting users. Shorewall + also rejects TCP ports 135, 137 and 139 as well as UDP ports + 137-139. These are ports that are used by Windows (Windows can + be configured to use the DCE cell locator on port 135). Rejecting + these connection requests rather than dropping them cuts down + slightly on the amount of Windows chatter on LAN segments connected + to the Firewall.
+ + +If you are seeing port 80 being 'closed', that's probably + your ISP preventing you from running a web server + in violation of your Service Agreement.
+ + +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 the port as +open. If you want to see which UDP ports are really open, + temporarily change your net->all policy to REJECT, restart + Shorewall and do the nmap UDP scan again.
+ - - - -
Answer: If you want your firewall to be totally open + for "ping",
- -Answer: There is an H.323 connection - tracking/NAT module that may help with Netmeeting. - Look here for a solution - for MSN IM but be aware that there are significant security risks involved - with this solution. Also check the Netfilter mailing list -archives at http://www.netfilter.org. -
+ +a) Create /etc/shorewall/common if it doesn't already exist.
+
+ b) Be sure that the first
+command in the file is ". /etc/shorewall/common.def"
+ c) Add the following to /etc/shorewall/common
+
- -+ For a complete description of Shorewall 'ping' management, + see this page. + +Answer: The common.def included with version 1.3.x - always rejects connection requests on TCP port 113 -rather than dropping them. This is necessary to prevent -outgoing connection problems to services that use the 'Auth' -mechanism for identifying requesting users. Shorewall also -rejects TCP ports 135, 137 and 139 as well as UDP ports 137-139. - These are ports that are used by Windows (Windows can -be configured to use the DCE cell locator on port 135). Rejecting -these connection requests rather than dropping them cuts down -slightly on the amount of Windows chatter on LAN segments connected - to the Firewall.
+ +run_iptables -A icmpdef -p ICMP --icmp-type echo-request + -j ACCEPT
+
+
If you are seeing port 80 being 'closed', that's probably - your ISP preventing you from running a web server -in violation of your Service Agreement.
+ +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 "man +syslog") in your policies and rules. The destination for messaged +logged by syslog is controlled by /etc/syslog.conf (see "man syslog.conf"). + When you have changed /etc/syslog.conf, be sure to restart + syslogd (on a RedHat system, "service syslog restart"). +
- -By default, older versions of Shorewall ratelimited log messages + through settings + in /etc/shorewall/shorewall.conf -- If you want to log + all messages, set:
- -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 the port as open. - If you want to see which UDP ports are really open, temporarily - change your net->all policy to REJECT, restart Shorewall -and do the nmap UDP scan again.
+ +LOGLIMIT=""+Beginning with Shorewall version 1.3.12, you can set up Shorewall to log all of its messages +to a separate file.
LOGBURST=""
Answer: If you want your firewall to be totally open - for "ping":
+ +Answer: Here are several links that may be helpful: +
- -a) Do NOT specify 'noping' on any interface in /etc/shorewall/interfaces.
- b) Copy /etc/shorewall/icmp.def
-to /etc/shorewall/icmpdef
- c) Add the following to /etc/shorewall/icmpdef:
-
- -+ I personnaly use Logwatch. It emails me a report + each day from my various systems with each report summarizing +the logged activity on the corresponding system. + +- -- For a complete description of Shorewall 'ping' management, - see this page. - -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?
- - -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 "man syslog") in your policies - and rules. The destination for messaged - logged by syslog is controlled by /etc/syslog.conf (see "man syslog.conf"). - When you have changed /etc/syslog.conf, be sure to restart - syslogd (on a RedHat system, "service syslog restart").
- - -By default, older versions of Shorewall ratelimited log messages - through settings -in /etc/shorewall/shorewall.conf -- If you want to log -all messages, set:
- - --- - -LOGLIMIT=""-
LOGBURST=""
Beginning with Shorewall version 1.3.12, you can set up Shorewall to log all of its messages to a separate file.6a. Are there any log parsers that work - with Shorewall?
- - -Answer: Here are several links that may be helpful: -
- - -- +- I personnaly use Logwatch. It emails me a report each - day from my various systems with each report summarizing the logged - activity on the corresponding system. - -http://www.shorewall.net/pub/shorewall/parsefw/
-
- http://www.fireparse.com
- http://cert.uni-stuttgart.de/projects/fwlogwatch
- http://www.logwatch.org
- http://gege.org/iptables
-6b. DROP messages on port 10619 - are flooding the logs with their connect requests. Can i exclude - these error messages for this port temporarily from logging in Shorewall?
- Temporarily add the following rule:
- -DROP net fw udp 10619- -6c. All day long I get a steady flow - of these DROP messages from port 53 to some high numbered port. They -get dropped, but what the heck are they?
- -Jan 8 15:50:48 norcomix kernel: Shorewall:net2all:DROP:IN=eth0 OUT= MAC=00:40:c7:2e:09:c0:00:01:64:4a:70:00:08:00- Answer: There are two possibilities:
SRC=208.138.130.16 DST=24.237.22.45 LEN=53 TOS=0x00 PREC=0x00
TTL=251 ID=8288 DF PROTO=UDP SPT=53 DPT=40275 LEN=33
- + http://www.logwatch.org
+ http://gege.org/iptables
+ +
DROP net fw udp 10619+ +
Jan 8 15:50:48 norcomix kernel: Shorewall:net2all:DROP:IN=eth0 OUT= MAC=00:40:c7:2e:09:c0:00:01:64:4a:70:00:08:00+ Answer: There are two possibilities:
SRC=208.138.130.16 DST=24.237.22.45 LEN=53 TOS=0x00 PREC=0x00
TTL=251 ID=8288 DF PROTO=UDP SPT=53 DPT=40275 LEN=33
+ You can distinguish the difference by setting the logunclean + option (/etc/shorewall/interfaces) + on your external interface (eth0 in the above example). If they get + logged twice, they are corrupted. I solve this problem by using an +/etc/shorewall/common file like this:+ The above file is also include in all of my sample configurations + available in the Quick Start + Guides and in the common.def file in Shorewall 1.4.0 and later.
+ +- The above file is also include in all of my sample configurations - available in the Quick Start -Guides.#-
# Include the standard common.def file
#
. /etc/shorewall/common.def
#
# The following rule is non-standard and compensates for tardy
# DNS replies
#
run_iptables -A common -p udp --sport 53 -mstate --state NEW -j DROP
- -6d. Why is the MAC address in - Shorewall log messages so long? I thought MAC addresses were only 6 bytes - in length.
-What is labeled as the MAC address in a Shorewall log message is actually -the Ethernet frame header. It contains:
- +
The 'stop' command is intended to place your firewall into - a safe state whereby only those hosts listed in /etc/shorewall/routestopped' - are activated. If you want to totally open up your firewall, - you must use the 'shorewall clear' command.
+ +The 'stop' command is intended to place your firewall into + a safe state whereby only those hosts listed in /etc/shorewall/routestopped' + are activated. If you want to totally open up your firewall, + you must use the 'shorewall clear' command.
- -Answer: The output you will see looks something like - this:
+ +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- -
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.
This is usually cured by the following sequence of commands: -
+ +This is usually cured by the following sequence of commands: +
- -service ipchains stop-
chkconfig --delete ipchains
rmmod ipchains
service ipchains stop+
chkconfig --delete ipchains
rmmod ipchains
Also, be sure to check the errata - for problems concerning the version of iptables (v1.2.3) - shipped with RH7.2.
-Also, be sure to check the errata
+ for problems concerning the version of iptables (v1.2.3)
+ shipped with RH7.2.
+
I just installed Shorewall and when I issue the start command, - I see the following:
+ +I just installed Shorewall and when I issue the start command, + I see the following:
- -Processing /etc/shorewall/shorewall.conf ...-
Processing /etc/shorewall/params ...
Starting Shorewall...
Loading Modules...
Initializing...
Determining Zones...
Zones: net loc
Validating interfaces file...
Validating hosts file...
Determining Hosts in Zones...
Net Zone: eth0:0.0.0.0/0
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
-Shorewall works with any GNU/Linux distribution that includes - the proper -prerequisites.
- - -Answer: See the Shorewall - Feature List.
- - -Answer: Yes. Shorewall support is included in Webmin - 1.060 and later versions. See http://www.webmin.com -
- - -Answer: Shorewall is a concatenation of "Shoreline" - (the city - where I live) and "Firewall". The full name of - the product is actually "Shoreline Firewall" but "Shorewall" is must - more commonly used.
- - -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-
If you are running version 1.3.1 or later, simply add the - following to /etc/shorewall/rfc1918:
-- --- -
-- -SUBNET -TARGET -- - + + +192.168.100.1 -RETURN -+- - -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
+
Be sure that you add the entry ABOVE the entry for 192.168.0.0/16.
-
Shorewall works with any GNU/Linux distribution that includes + the proper + prerequisites.
- -Note: If you add a second IP address to your external firewall
- interface to correspond to the modem address, you must
-also make an entry in /etc/shorewall/rfc1918 for that address.
-For example, if you configure the address 192.168.100.2 on your
-firewall, then you would add two entries to /etc/shorewall/rfc1918:
-
-
Answer: See the Shorewall + Feature List.
+ + +Answer: Yes. Shorewall support is included in Webmin + 1.060 and later versions. See http://www.webmin.com +
+ + +Answer: Shorewall is a concatenation of "Shoreline" + (the +city where I live) and "Firewall". The full +name of the product is actually "Shoreline Firewall" but "Shorewall" +is must more commonly used.
+ + +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+
If you are running version 1.3.1 or later, simply add the + following to /etc/shorewall/rfc1918:
+- --- -
-- -SUBNET -
-TARGET -
-- -192.168.100.1 -
-RETURN -
-- - - - - - - -192.168.100.2 -
-RETURN -
-
The solution is the same as FAQ 14 above. Simply substitute - the IP address of your ISPs DHCP server.
-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" when things -are working properly. That aside, the most common causes of -this problem are:
- - -The default gateway on each local system isn't set to - the IP address of the local firewall interface.
-The entry for the local network in the /etc/shorewall/masq - file is wrong or missing.
-The DNS settings on the local systems are wrong or the - user is running a DNS server on the firewall and hasn't - enabled UDP and TCP port 53 from the firewall to the -internet.
-Answer: "man dmesg" -- add a suitable 'dmesg' command
- to your startup scripts or place it in /etc/shorewall/start.
- Under RedHat, the max log level that is sent to the
-console is specified in /etc/sysconfig/init in the LOGLEVEL
-variable.
-
- -- 192.0.2.3 is external on my firewall... 172.16.0.0/24 - is my internal LANNov 25 18:58:52 linux kernel: Shorewall:net2all:DROP:IN=eth1 OUT= MAC=00:60:1d:f0:a6:f9:00:60:1d:f6:35:50:08:00-
SRC=206.124.146.179 DST=192.0.2.3 LEN=56 TOS=0x00 PREC=0x00 TTL=110 ID=18558 PROTO=ICMP TYPE=3 CODE=3
[SRC=192.0.2.3 DST=172.16.1.10 LEN=128 TOS=0x00 PREC=0x00 TTL=47 ID=0 DF PROTO=UDP SPT=53 DPT=2857 LEN=108 ]
net:<ip1>,<ip2>,...- Example:
ACCEPT net:192.0.2.16/28,192.0.2.44 fw tcp 22+
SUBNET + | +TARGET | +
192.168.100.1 | +RETURN | +
Be sure that you add the entry ABOVE the entry for 192.168.0.0/16.
+
Note: If you add a second IP address to your external firewall
+ interface to correspond to the modem address, you must
+ also make an entry in /etc/shorewall/rfc1918 for that address.
+ For example, if you configure the address 192.168.100.2 on
+ your firewall, then you would add two entries to /etc/shorewall/rfc1918:
- /sbin/shorewall version
-
- Last updated 3/5/2003 - Tom Eastep
-
-
Copyright ©
-2001, 2002, 2003 Thomas M. Eastep.
-
+ +++ +
++ +SUBNET +
+TARGET +
++ +192.168.100.1 +
+RETURN +
++ + + + + + + +192.168.100.2 +
+RETURN +
+
The solution is the same as FAQ 14 above. Simply substitute + the IP address of your ISPs DHCP server.
+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" when things + are working properly. That aside, the most common causes + of this problem are:
+ + +The default gateway on each local system isn't set to + the IP address of the local firewall interface.
+The entry for the local network in the /etc/shorewall/masq + file is wrong or missing.
+The DNS settings on the local systems are wrong or the + user is running a DNS server on the firewall and + hasn't enabled UDP and TCP port 53 from the firewall + to the internet.
+Answer: "man dmesg" -- add a suitable 'dmesg' command
+ to your startup scripts or place it in /etc/shorewall/start.
+ Under RedHat, the max log level that is sent to the
+ console is specified in /etc/sysconfig/init in the LOGLEVEL
+ variable.
+
+ ++ 192.0.2.3 is external on my firewall... 172.16.0.0/24 + is my internal LANNov 25 18:58:52 linux kernel: Shorewall:net2all:DROP:IN=eth1 OUT= MAC=00:60:1d:f0:a6:f9:00:60:1d:f6:35:50:08:00+
SRC=206.124.146.179 DST=192.0.2.3 LEN=56 TOS=0x00 PREC=0x00 TTL=110 ID=18558 PROTO=ICMP TYPE=3 CODE=3
[SRC=192.0.2.3 DST=172.16.1.10 LEN=128 TOS=0x00 PREC=0x00 TTL=47 ID=0 DF PROTO=UDP SPT=53 DPT=2857 LEN=108 ]
net:<ip1>,<ip2>,...+ Example:
ACCEPT net:192.0.2.16/28,192.0.2.44 fw tcp 22+ + +
Copyright
+© 2001, 2002, 2003 Thomas M. Eastep.
+