= Iptables with shorewall!
Apostolos rootApostolos@swarmlab.io
// Metadata:
:description: Intro and Install
:keywords: sec, tcpdump
:data-uri:
:toc: right
:toc-title: Πίνακας περιεχομένων
:toclevels: 4
:source-highlighter: highlight
:icons: font
:sectnums: 

include::header.adoc[]


{empty} +


[[cheat-Docker]]
== Install swarmlab-sec (Home PC)

HowTo: See http://docs.swarmlab.io/lab/sec/sec.adoc.html


.NOTE
[NOTE]
====
Assuming you're already logged in
====



== shorewall


**Shorewall** is an open source firewall tool for Linux that builds upon the Netfilter (iptables/ipchains) system built into the Linux kernel, making it easier to manage more complex configuration schemes by providing a higher level of abstraction for describing rules using text files. 

https://en.wikipedia.org/wiki/Shorewall[More: wikipedia]


=== Installation

Shorewall is already installed on swarmlab-sec. 


== Basic Two-Interface Firewall


image::basics.png[Basic Two-Interface Firewall]



.connect to master first
[NOTE]
====

Assuming you're already logged in master!

master is now our Firewall/Router

swarmlab-sec login 
====


== Shorewall Concepts

The configuration files for Shorewall are contained in the directory /etc/shorewall 

=== zones — Shorewall zone declaration file

The /etc/shorewall/zones file declares your network zones. You specify the hosts in each zone through entries in /etc/shorewall/interfaces 


./etc/shorewall/zones
[source,bash]
----
#ZONE   TYPE     OPTIONS                 IN_OPTIONS              OUT_OPTIONS
fw      firewall
net     ipv4
loc     ipv4
----

=== interfaces — Shorewall interfaces file

The interfaces file serves to define the firewall's network interfaces to Shorewall. 

./etc/shorewall/interfaces
[source,bash]
----
#ZONE       INTERFACE       BROADCAST      OPTIONS
net         eth0                           dhcp,routefilter
loc         eth1            detect
----


=== policy — Shorewall policy file

This file defines the high-level policy for connections between zone


./etc/shorewall/policy
[source,bash]
----
#SOURCE    DEST        POLICY      LOGLEVEL    LIMIT
loc        net         ACCEPT
net        all         DROP        info
all        all         REJECT      info
----


=== rules — Shorewall rules file

Entries in this file govern connection establishment by defining exceptions to the policies


./etc/shorewall/rules
[source,bash]
----
#ACTION    SOURCE    DEST               PROTO     DPORT
ACCEPT     $FW       net                udp       53
ACCEPT     net       $FW         	udp       53
ACCEPT     $FW       net                tcp       80
ACCEPT     net       $FW         	tcp       80
----




:hardbreaks:

{empty} +
{empty} +
{empty} 

:!hardbreaks:

'''

.Reminder
[NOTE]
====
:hardbreaks:
Caminante, no hay camino, 
se hace camino al andar.

Wanderer, there is no path, 
the path is made by walking.

*Antonio Machado* Campos de Castilla
====
