Shorewall – Firewall installieren und einrichten

Für Shorewall Version 5.0.4

Wie immer als root auf dem Server anmelden und über apt shorewall installieren:

apt install shorewall

Die erforderlichen Konfigurationsdaten aus dem Beispielen heraus kopieren:

cp /usr/share/doc/shorewall/examples/one-interface/interfaces /etc/shorewall/
cp /usr/share/doc/shorewall/examples/one-interface/zones /etc/shorewall/
cp /usr/share/doc/shorewall/examples/one-interface/policy /etc/shorewall/
cp /usr/share/doc/shorewall/examples/one-interface/rules /etc/shorewall/

Und nun die Datei /etc/shorewall/interfaces mit einem Editor öffnen und den Inhalt kontrollieren bzw. entsprechend den nachfolgenden Zeilen anpassen:

##########################################################
#ZONE INTERFACE OPTIONS
net eth0 dhcp,tcpflags,logmartians,nosmurfs,sourceroute=0

OK, das meiste was da steht ist, glaube ich, verständlich. Wir sagen hier im Wesentlichen, dass wir eine Netzwerkkarte eth0 haben, die wir der Zone (kommt gleich…) net zuordnen. Wenn ihr nicht sicher seit ob eure Netzwerkkarte wirklich ‚eth0‘ heißt, schaut bitte in der Datei ‚/etc/network/interfaces‘ nach. Natürlich können hier bei Bedarf auch mehr Interfaces und Zonen definiert werden.

Besonderheit Strato vServer

Beim Strato vServer heißt das Interface nicht ‚eth0‘ sondern ‚venet0‘. Die Einstellungen sind entsprechen anzupassen.

Jetzt die Datei /etc/shorewall/zones mit einem Editor öffnen und den Inhalt kontrollieren bzw. entsprechend den nachfolgenden Zeilen anpassen:

##########################################################
#ZONE TYPE OPTIONS IN OUT
# OPTIONS OPTIONS
fw firewall
net ipv4

Hier haben wir jetzt zwei Zonen definiert. Einerseits haben wir die Firewall selbst fw als  Zone vom Typ firewall festgelegt. Dabei steht fw letztlich auch als Synonym für den den Rechner selbst, da aller Netzwerkverkehr ja über die Firewall läuft. In der zweiten Zeile definieren wir eine Zone net vom Typ ipv4. Die Zone net hatten wir ja schon zuvor an die Netzwerkkarte eth0 gebunden, somit steht net für den gesamten Netzwerkverkehr der nach außen oder von außen kommt.

Jetzt die Datei /etc/shorewall/policy mit einem Editor öffnen und den Inhalt kontrollieren bzw. entsprechend den nachfolgenden Zeilen anpassen:

########################################################################
 SOURCE         DEST            POLICY          LOG LEVEL    LIMIT:BURST
 $FW             net             DROP
 net             all             DROP            info
 The FOLLOWING POLICY MUST BE LAST
 all             all             REJECT          info

Aber was bedeuten diese drei magischen Zeilen? In der Datei policy werden quasi die Grundeinstellungen gesetzt für alle Fälle die in der Datei rules nicht geregelt werden. Diese Einstellung wirr auf DROP gesetzt für den Fall, dass ein ungewollt laufendes Programm irgendetwas nach außen senden will oder Infomation über das Netzwerk sammeln will.
$FW net DROP info – aller Netzwerkverkehr von der Quelle $FW zum Ziel net wird verworfen (DROP). In dem Logfile wird ein bei loglevel info ein Eintrag gesetzt.
net all DROP info – aller Netzwerkverkehr von der Quelle net zum Ziel all wird verworfen (DROP). Logfile, wie vor.
all all REJECT info – Wenn keine von den beiden Regeln zuvor greifen sollte, kommt diese Regel zur Anwendung: Weise allen Netzwerkverkehr von und in alle Richtungen zurück.

Im Ergebnis haben wir nun jeglichen Netzwerkverkehr unterbunden, es sei denn wir definieren in den rules spezifische Regeln für erlaubten Verkehr.

Zu guter Letzt die Datei /etc/shorewall/rules mit einem Editor öffnen und den Inhalt den nachfolgenden Zeilen anpassen. Die standardmäßig vorhanden Ping/DROP Regel, kann gelöscht werden und wir starten mit folgender Mindestkonfiguration:

SSH incoming
SSH(ACCEPT) net $FW
DNS outgoing
DNS(ACCEPT) $FW net
FTP outgoing
FTP(ACCEPT) $FW net
HTTP outgoing
HTTP(ACCEPT) $FW net

Damit sind – recht minimalistisch – nur vier Verbindungen möglich:
1. Mit SSH von außen auf den Firewall
2. DNS Anfragen des Firewallrechners an die Außenwelt
3. FTP vom Firewallrechner ins Netz (für Downloads)
3. HTTP vom Firewallrechner ins Netz

Die ausgehenden DNS, FTP und HTTP Regeln sind alleine schon deswegen erforderlich, da sonst z. B. keine Sicherheitsupdates mehr über Netz installiert werden können.

In der Datei rules können nach Bedarf weitere Ports Schritt für Schritt aufgemacht werden.

Die Konfiguration testen wir schnell auf  Tipp- und/oder Syntaxfehler:

shorewall check

Wenn das soweit fehlerfrei ist bitte die Datei /etc/default/shorewall mit einem Editor öffenn und den Start von shorewall mit folgendem Eintrag erlauben

startup=1

Zum Testen ein wird der Dienst von Hand gestartet (Evtl. Fehler werden angezeigt….):

/etc/init.d/shorewall start

Die laufende SSH-Sitzung sollte i. d. R. durch den Start von shorewall nicht unterbrochen werden. Wenn der Start funktioniert öffnen wir ein weiteres Terminal (lokal) und melden uns dort per SSH auf dem Server an, damit wir sicher sein können, dass wir uns nicht ausgesperrt haben.

Ob der Server nun wirklich so schweigsam ist wie erwartet, können wir mit einem schlichten ping testen. Mit der obigen Konfiguration sollte der Server nicht mal den Hauch einer Antwort auf den Ping geben.

Ach übrigens, die Hersteller von Routern würden diese Konfiguration marketing-gerecht hochtrabend als „Stealth-Mode“ bezeichnen…….

Nun noch den folegenden Befehl eingeben damit Shoreall auch beim Start startet.

systemctl enable shorewall.service

One thought on “Shorewall – Firewall installieren und einrichten

Schreib' was! :-)

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>