Shorewall

From wiki.techunit.org
Jump to: navigation, search

Firewall

Primitive rule

If you want to disable shorewall, *NEVER* use those commands

  • shorewall stop
  • service shorewall stop

Use this command instead

  • shorewall clear

Installation

  • Install package : shorewall

Minimal configuration

Defining params

Here we are going to define vars

  • Add the following in /etc/shorewall/params
#List all interfaces
LAN_IF=eth0
WLAN_IF=wlan0

#Optional - List LAN or IP Addresses
ADMIN_IP="10.0.0.69"
LAN_NET="10.0.0.0/24"

Defining zones

Here we define one net zone and the firewall zone

  • Edit /etc/shorewall/zones
###############################################################################
#ZONE           TYPE            OPTIONS                 IN                      OUT
fw              firewall
net             ipv4

Declare interfaces

  • Edit /etc/shorewall/interfaces
#ZONE   INTERFACE               BROADCAST       OPTIONS
net     $LAN_IF                 detect          
net     $WLAN_IF                detect

Create policy

  • Create the policy, in this example:
    • We allow all outcoming connections
    • We drop and log all incoming connections
  • Edit /etc/shorewall/policy
#########################################################################
## Depuis la zone -- fw --
#SOURCE         DEST            POLICY          LOG           BURST:LIMIT
fw              all             ACCEPT

#########################################################################
#SOURCE         DEST            POLICY          LOG           BURST:LIMIT
all             all             REJECT          info
#########################################################################
  • Other example with multiple zones
#########################################################################
## From zone -- fw --
#SOURCE         DEST            POLICY          LOG           BURST:LIMIT
fw              all             ACCEPT
 
#########################################################################
## From zone -- admin --
#SOURCE         DEST            POLICY          LOG           BURST:LIMIT
admin           fw              REJECT
admin           lan             DROP
admin           net             DROP
 
#########################################################################
## From zone -- lan --
#SOURCE         DEST            POLICY          LOG           BURST:LIMIT
lan             fw              REJECT
lan             admin           DROP
lan             net             REJECT

#########################################################################
## From zone -- net --
#SOURCE         DEST            POLICY          LOG           BURST:LIMIT
net             fw              DROP
net             admin           DROP
net             lan             DROP
 
#########################################################################
all             all             DROP
#########################################################################

Activate shorewall

  • Edit /etc/default/shorewall
  • Set startup=1
  • Then start shorewall : shorewall start

Optional: Open port

  • Example
    • Allow ping from all
    • Allow SSH from ADMIN_IP (define in in /etc/shorewall/params)
    • Allow Samba access from LAN only
  • Edit /etc/shorewall/rules
############################################################################################################
# From zone -- net --
# net -> fw
#ACTION         SOURCE                 DEST    PROTO   DEST    SOURCE          ORIGINAL        RATE            USER/   MARK
#                                                      PORT    PORT(S)         DEST            LIMIT           GROUP
Ping(ACCEPT)    net                    fw
SSH(ACCEPT)     net:$ADMIN_IP          fw
SMB(ACCEPT)     net:$LAN_NET           fw

Optimize configuration

Add options

  • Modify /etc/shorewall/interfaces
#ZONE   INTERFACE               BROADCAST       OPTIONS
net     $NET_IF                 detect          dhcp,tcpflags,logmartians,nosmurfs,routefilter

Masquerade

  • In this example (define vars in /etc/shorewall/params):
    • Masquerade $OVPN_NET(10.3.0.0/24) > $NET_IF(eth0)
    • Masquerade $DMZ_IF(eth1) > $NET_IF(eth0)
  • Edit /etc/shorewall/masq
#INTERFACE              SOURCE          ADDRESS         PROTO   PORT(S) IPSEC   MARK    USER/
#                                                                                       GROUP
$NET_IF                 $OVPN_NET
$NET_IF                 $DMZ_IF

DNAT

  • Edit /etc/shorewall/rules
############################################################################################################
# DNAT
#ACTION         SOURCE  DEST                     PROTO   DEST    SOURCE          ORIGINAL        RATE            USER/   MARK
#                                                        PORT    PORT(S)         DEST            LIMIT           GROUP
DNAT            net     lan:$SRV_IP              tcp     80

Elliot
techUnit's cofounder