Website-Suche

Shorewall – Eine High-Level-Firewall für Linux-Server


Das Einrichten einer Firewall unter Linux kann für einen Neuling oder jemanden, der mit iptables nicht so gut vertraut ist, sehr entmutigend sein. Glücklicherweise gibt es mit Shorewall eine sehr einfach zu verwendende Lösung.

In diesem mehrteiligen Tutorial werde ich Ihnen den Einstieg in Shorewall erleichtern und Sie durch einige fortgeschrittenere Themen mit diesem fantastischen Firewall-System führen.

Was ist Shorewall?

Shorewall ist im Wesentlichen ein Frontend für iptables, aber es ist ein Frontend für eine Befehlszeilenumgebung, das mehrere Textdateien für seine Konfiguration verwendet. Während Shorewall ein robustes Firewall-System ist, das über sehr große Netzwerke skaliert werden kann, die zahlreiche Maschinen bedienen, beginnen wir mit einer grundlegenden Konfiguration mit zwei Schnittstellen und legen die Grundlagen fest.

Eine Konfiguration mit zwei Schnittstellen besteht aus einer Maschine mit zwei Ethernet-Ports, einem eingehenden und einem ausgehenden zum lokalen Netzwerk.

Installieren Sie Shorewall Firewall unter Linux

Shorewall kann mit den Paketmanager-Tools apt und yum installiert werden.

sudo apt install shorewall    [On Debian-based Sysems]
sudo yum install shorewall    [On RHEL-based Sysems]

Nach der Installation müssen wir eine Beispielkonfiguration aus dem Verzeichnis „/usr/share/doc/shorewall“ in das Standardverzeichnis von Shorewall „/etc/shorewall“ kopieren.

sudo cp /usr/share/doc/shorewall/example/two-interfaces/* /etc/shorewall
cd /etc/shorewall

Wenn wir einen Blick in dieses Verzeichnis werfen, sehen wir eine Reihe von Dateien und die Datei shorewall.conf.

Shorewall betrachtet das Netzwerk als eine Gruppe verschiedener Zonen, daher ist die erste Datei, die wir uns ansehen möchten, die Datei „/etc/shorewall/zones“.

sudo nano /etc/shorewall/zones

Hier sehen wir, dass standardmäßig drei Zonen definiert sind: fw, net und loc. Es ist wichtig zu beachten, dass Shorewall die Firewall-Maschine selbst als eigene Zone behandelt und sie in einer Variablen namens $fw speichert.

Die Datei „/etc/shorewall/zones“ ist ziemlich selbsterklärend. Sie haben die Net-Zone (Internet-Schnittstelle), die Loc-Zone (LAN-Schnittstelle) und FW, das ist alles.

Dieses Setup ergibt Folgendes:

  • Es ermöglicht alle Verbindungsanfragen von der Loc-Zone (LAN) zur Netzzone (Internet).
  • Verwirft alle Verbindungsanfragen (ignoriert) von der Netzzone zur Firewall und zum LAN.
  • Lehnt alle anderen Anfragen ab und protokolliert sie.

Das LOG LEVEL-Bit sollte jedem bekannt sein, der bereits mit Apache, MySQL oder einer anderen Anzahl anderer FOSS-Programme gearbeitet hat. In diesem Fall weisen wir Shorewall an, die Infoebene der Protokollierung zu verwenden.

Nachdem wir nun unsere Zonen und Richtlinien festgelegt haben, müssen wir unsere Schnittstellen konfigurieren. Sie tun dies, indem Sie die Datei „/etc/shorewall/interfaces“ bearbeiten.

sudo nano /etc/shorewall/interfaces

Hier haben wir unsere mit dem Internet verbundene Schnittstelle als eth0 auf die Netzzone eingestellt. Auf unserer LAN-Seite haben wir die andere Schnittstelle, eth1, auf die loc-Zone eingestellt. Bitte passen Sie diese Datei an Ihre Konfiguration an.

Die verschiedenen Optionen, die Sie für jede dieser Schnittstellen festlegen können, sind umfangreich und werden am besten auf der Manpage ausführlich erläutert.

man shorewall-interfaces

Ein kurzer Überblick über einige davon ist wie folgt:

  • nosmurfs – Pakete mit einer Broadcast-Adresse als Quelle filtern.
  • Logmartians – Protokollieren Sie Pakete mit der unmöglichen Quelladresse.
  • routefilter – Kernel-Routenfilterung zum Schutz vor Spoofing.

Da unser System jetzt durch eine Firewall geschützt ist, müssen natürlich bestimmte Verbindungen durchgelassen werden, damit wir unsere Aufgaben erledigen können. Diese definieren Sie in der Regeldatei unter „/etc/shorewall/rules“.

sudo nano /etc/shorewall/rules

Diese Datei sieht zunächst verwirrend aus, vor allem weil sich die Spalten überschneiden, aber die Überschriften sind ziemlich selbsterklärend. Zunächst gibt es die Spalte ACTION, die beschreibt, was Sie ausführen möchten.

Als nächstes haben Sie einen SOURCE-Header, in dem Sie die Zone definieren, aus der das Paket stammt. Dann haben Sie Ihr ZIEL oder Ziel, bei dem es sich um die Zone oder IP-Adresse des Ziels handelt. Nehmen wir ein Beispiel.

Angenommen, Sie möchten einen SSH-Server hinter Ihrer Firewall auf dem Computer mit der IP-Adresse 192.168.1.25 betreiben. Sie müssen nicht nur einen Port in Ihrer Firewall öffnen, sondern der Firewall auch mitteilen, dass jeglicher Datenverkehr, der über Port 22 kommt, an den Computer unter 192.168.1.25.

Dies wird als Portweiterleitung bezeichnet. Dies ist eine gemeinsame Funktion der meisten Firewalls/Router. In „/etc/shorewall/rules“ würden Sie dies erreichen, indem Sie eine Zeile wie diese hinzufügen:

SSH(DNAT)	net		loc:192.168.1.25

Oben haben wir definiert, dass alle für SSH bestimmten Pakete, die von der Netzzone zur Firewall kommen, geroutet werden müssen (DNAT).) an Port 22 auf einem Computer mit der Adresse 192.168.1.25.

Dies wird als Network Address Translation oder NAT bezeichnet. Das „D teilt Shorewall lediglich mit, dass es sich um ein NAT für eine Zieladresse handelt.

Damit dies funktioniert, muss die NAT-Unterstützung in Ihrem Kernel aktiviert sein. Wenn Sie NAT benötigen und nicht haben, lesen Sie bitte mein Tutorial zum Neukompilieren eines Debian-Kernels.

Im nächsten Artikel werden wir verschiedene Shorewall-Konfigurationen und -Optionen untersuchen. Allerdings sollten hier ausreichend Informationen vorhanden sein, die Ihnen den Einstieg erleichtern. Weitere Informationen finden Sie wie immer in den Manpages.