Firewall

Site: dmnb.consulting_moodle
Course: Firewall
Book: Firewall
Printed by: Guest user
Date: Thursday, 19 September 2024, 3:26 AM

Firewalls können sowohl auf dedizierter Hardware als auch auf normalen Computern betrieben werden. Die grundlegende Funktionsweise bleibt gleich, jedoch gibt es Unterschiede in Bezug auf Leistungsfähigkeit, Skalierbarkeit und Anpassungsfähigkeit.

Auf normalen Computern basierende Firewalls

Eine auf einem normalen Computer basierende Firewall ist in der Regel eine Softwarelösung, die auf einem Betriebssystem wie Windows, Linux oder MacOS läuft. Diese Software nutzt die vorhandene Hardware des Computers, um den Netzwerkverkehr zu überwachen und zu filtern. Beispiele hierfür sind die Windows-Firewall oder iptables unter Linux.

Vorteile:
  • Kosteneffizient: Keine Notwendigkeit für zusätzliche, spezialisierte Hardware.
  • Flexibilität: Einfach zu konfigurieren und anzupassen, besonders nützlich in kleinen Netzwerken oder für individuelle Anwendungen.
  • Einfachheit: Gut geeignet für kleinere Unternehmen oder Heimnetzwerke, die keine komplexen Sicherheitsanforderungen haben.
Nachteile:
  • Leistung: Die Leistung kann begrenzt sein, da der Computer auch andere Aufgaben ausführt.
  • Sicherheit: Ein normaler Computer kann anfälliger für Angriffe sein als eine dedizierte Hardware-Lösung.

Dedizierte Hardware-Firewalls

Dedizierte Hardware-Firewalls sind spezialisierte Geräte, die ausschließlich für die Sicherheit des Netzwerks konzipiert sind. Sie bieten in der Regel eine höhere Leistung und fortgeschrittenere Sicherheitsfunktionen als Software-Firewalls.

Vorteile:
  • Höhere Leistung: Speziell für die Verarbeitung von Netzwerkverkehr konzipiert, was zu einer besseren Leistung führt.
  • Erweiterte Sicherheitsfunktionen: Oft mit zusätzlichen Sicherheitsfunktionen ausgestattet, wie VPN-Unterstützung, Intrusion Detection und Prevention.
  • Höhere Zuverlässigkeit: Weniger anfällig für Softwarekonflikte und Systemausfälle.

Verarbeitung eingehender Pakete durch eine Firewall

Unabhängig davon, ob eine Firewall auf einem normalen Computer oder auf dedizierter Hardware betrieben wird, folgt sie einem ähnlichen Prozess bei der Behandlung eingehender Pakete:

  1. Paketüberprüfung: Die Firewall prüft jedes eingehende Paket gegen ihre Sicherheitsregeln. Diese Regeln können Adressen, Ports, Protokolle und andere Merkmale umfassen.

  2. Entscheidung: Basierend auf den Regeln entscheidet die Firewall, ob das Paket akzeptiert, abgelehnt oder verworfen wird.

    • Akzeptieren: Das Paket wird durchgelassen.
    • Ablehnen: Das Paket wird blockiert, und es wird eine Antwort an den Absender geschickt, die ihm mitteilt, dass das Paket abgelehnt wurde.
    • Verwerfen: Das Paket wird stillschweigend blockiert, ohne den Absender zu benachrichtigen.
  3. Protokollierung und Alarmierung: Die Firewall kann die Entscheidung protokollieren und bei verdächtigem oder schädlichem Verkehr Alarmierungen auslösen.

  4. Stateful Inspection: Bei Firewalls, die eine zustandsorientierte Überprüfung durchführen, wird der Zustand der Verbindung überwacht, um sicherzustellen, dass eingehende Pakete Teil einer legitimierten Sitzung sind.


Basisabsicherung durch eine Firewall

Im Allgemeinen wird eine Vielzahl von Maßnahmen empfohlen, um ein Betriebssystem gegen Hackerangriffe zu schützen. Einige der wichtigsten Maßnahmen sind
Regelmäßige Sicherheitsupdates und Patches, um bekannte Schwachstellen zu schließen.
Verwenden Sie Antiviren- und Anti-Malware-Software, um Ihr System vor Malware und anderen Bedrohungen zu schützen.
▪ Verwenden Sie Firewalls, um unerwünschte Netzwerkverbindungen zu blockieren und den Zugriff auf bestimmte Ports und Dienste einzuschränken.
▪ Verwenden Sie starke Passwörter und Multi-Faktor-Authentifizierung, um den Zugriff auf Ihr System einzuschränken.
▪ Beschränken Sie die Administratorrechte, um das Risiko von Malware-Infektionen und anderen Bedrohungen zu minimieren.
▪ Regelmäßige Überprüfung von Protokolldateien, um potenzielle Bedrohungen frühzeitig zu erkennen und darauf reagieren zu können.
Die spezifischen Maßnahmen für Windows oder Linux können je nach Betriebssystem und Umgebung variieren.
Einige spezifische Maßnahmen für Linux sind
- Aktivierung und Konfiguration der Firewall.
- Verwendung von AppArmor, um die Sicherheit von Anwendungen und Diensten zu erhöhen.
- SSH-Schlüssel-basierte Authentifizierung aktivieren und Passwort-Authentifizierung deaktivieren.
- Fail2Ban als Schutzmaßnahme gegen Brute-Force-Angriffe.
- Deaktivieren Sie nicht benötigte Dienste und Anwendungen, um potenzielle Angriffsvektoren zu minimieren.
- Verwendung einer zuverlässigen Antiviren-Software wie ClamAV oder Sophos.

Einige der spezifischen Maßnahmen für Windows sind beispielsweise:
• Aktivieren von Windows-Firewall und konfigurieren Sie diese entsprechend.
• Verwendung von BitLocker oder anderen Verschlüsselungstools, um Festplatten und Daten zu schützen.
• Deaktivieren von nicht benötigten Diensten und Anwendungen, um potenzielle Angriffsvektoren zu minimieren.
• Aktivieren von UAC (User Account Control) und Verwendung von Benutzerkonten mit eingeschränkten Rechten.
• Verwendung von Microsoft Defender Antivirus oder einer anderen zuverlässigen Antivirus-Software.


Eine Firewall ist unter anderem eine Maßnahme zur Kontrolle des ein- und ausgehenden Datenverkehrs anhand von IP-Adressen, Portnummern oder Protokollen.
Eine Firewall vergleicht die Eigenschaften jedes Netzwerkpakets mit definierten Regeln und entscheidet, ob das Paket durchgelassen oder abgewiesen wird.
Es gibt verschiedene Arten von Regeln, die festlegen, wie der Datenverkehr gefiltert und behandelt wird. Diese Regeln werden vom Administrator entsprechend den Sicherheitsanforderungen definiert und konfiguriert.

Firewall-Regeln müssen sorgfältig geplant, verwaltet und aktualisiert werden, um sicherzustellen, dass sie den spezifischen Anforderungen des Netzwerks entsprechen und einen angemessenen Schutz bieten. Regeln können nach verschiedenen Kriterien erstellt werden.


Zulässige Quellen und Ziele: 

Basierend auf den IP-Adressen oder IP-Bereichen der Quelle und des Ziels können bestimmte IP-Adressen oder ganze Subnetze für den Zugriff auf das Netzwerk zugelassen oder gesperrt werden.

Port-basierte Regeln: 

Eine Firewall kann den Datenverkehr von E-Mail, File-Sharing oder anderen Diensten anhand der TCP- oder UDP-Portnummern filtern.

Protokollbasierte Regeln: 

Statt Portnummern können auch Protokolle wie HTTP, FTP, DNS, SSH etc. zur Einschränkung verwendet werden.

Zustandsbasierte Regeln: 

Eine Firewall kann Verbindungen anhand ihres Zustandes überwachen und steuern. Beispielsweise kann sie eingehenden Datenverkehr nur dann zulassen, wenn zuvor eine entsprechende Anfrage aus dem internen Netzwerk gesendet wurde. Dadurch wird der Datenverkehr nur für bereits bestehende Verbindungen zugelassen.

Anwendungs- oder Inhaltsfilterung: 

Fortgeschrittene Firewalls können den Datenverkehr auch auf Anwendungsebene analysieren. Dadurch können bestimmte Arten von Netzwerkangriffen, Viren oder unerwünschte Inhalte erkannt werden.

Zeitbasierte Regeln: 

Regeln können auf bestimmten Zeitpunkten oder Zeitintervallen basieren. Beispielsweise kann der Zugriff auf bestimmte Dienste oder Ressourcen zu bestimmten Zeiten eingeschränkt werden, um die Bandbreitenauslastung zu steuern.


Ein Ruleset besteht aus mehreren einzelnen Regeln, die eine Firewall bei jeder Anfrage in oder aus dem Internet/Netzwerk von oben angefangen nach unten abgearbeitet bzw. überprüft, und beim Zutreffen einer Regel anhält und diese ausführt, die darauffolgenden Regeln werden dann ignoriert!
Das Ruleset verarbeitet jede Kommunikation und filtert alle Datenpäckchen, die zwischen Computern z.B. im Internet / Netzwerk hin- und herlaufen.

Im Regelwerk (Ruleset) einer Firewall wird beschrieben, welcher Verkehr durch eine Firewall erlaubt und welcher verboten ist. Firewall Regeln setzen das Konzept der Mandatory Access Control (MAC) um. Die Entscheidung wird also nicht nach der Identität der Verursachers (DAC) oder seiner Zugehörigkeit zu einer Rolle oder Gruppe (RBAC) getroffen, sondern immer nach Absender, Zustelladresse, Protokoll und Sendevorgang. Die Regel enthält auch die gewünschte Reaktion, also ob erlaubte Datenpakete passieren (engl. pass) dürfen, verbotene werden abgelehnt (reject) oder verworfen (deny, drop).

Die Anwendung des Rulesets ist eine im Kernel von Linux verankerte Aufgabe.
Rulesets wurden in der Vergangenheit in iptables oder nftables editiert.

Eine Regel ergibt sich aus folgenden Komponenten:
▪ Einer Richtung (=Direction), von wo aus eine Verbindung "aufgebaut" werden darf also von "drinnen" oder "draußen".
   o - OUTGOING - Aufbau einer Verbindung durch ein TCP_ACK Signal von drinnen!
   o - INCOMMING - Aufbau einer Verbindung durch ein von draußen!
   o – oder beides: BOTH
▪ Einem Protokoll: Die wichtigsten von den meisten Firewalls unterstützten Protokolle sind TCP, UDP, ICMP
▪ Einer Quelle: Also woher eine Anfrage stammt:
  o - Host (IP oder IP Bereich),
  o - Port,
  o - Service
▪ Einem Ziel (wohin das Packet soll):
  o - Host,
  o - Port,
  o - Service
▪ Einer Anweisung zu blockieren (Block / Deny) oder zu erlauben (Permit)
▪ Viele Firewalls bieten noch eine Option, eine Log-Datei zu führen.

Die Syntax der iptables und nftables ist einerseits sehr leistungsfähig und flexibel, andererseits wird sie auch als komplex empfunden. Auf der Linux Variante Ubuntu wird daher ein unkompliziertes kommandozeilen-basiertes Frontend namens ufw (uncomplicated firewall) bereitgestellt.

ufw verwendet ein dreistufiges Regelwerk, welches in drei Konfigurationsdateien hinterlegt ist. Diese werden in der folgenden Reihenfolge gelesen und ausgewertet:
▪ /etc/ufw/before.rules
▪ /var/lib/ufw/user.rules oder /lib/ufw/user.rules
▪ /etc/ufw/after.rules

Rufen Sie die zuvor genannten Dateien mit dem cat Befehl auf, um die hinterlegten iptables zu sehen.

Durch die Abfolge der Dateiauswertung ergibt sich, dass Regeln in user.rules ggf. die in before.rules überschreiben und Regeln in after.rules die von user.rules.

Ufw bietet eine einfache allgemeine Syntax zur Erstellung von Regeln an.

sudo ufw allow|deny|reject service

Beispiel
sudo ufw allow ssh erlaubt allen Paketen, die SSH nutzen wollen, den Datenverkehr über die Firewall.

Neben der Möglichkeit ein ganzes Protokoll für alle Pakete freizugeben, gibt es auch detailliertere Regeln
Die allgemeine Syntax lautet:
sudo ufw allow|deny [proto <protokoll>] [from <adresse> [port <port>]] [to <addresse> [port <port>]] [comment <kommentar>]
wobei die folgenden Parameter gesetzt werden können:


proto PROTOKOLL  definiert das Protokoll, also TCP oder UDP
from ADRESSE    Definiert die Absenderadresse, auf die die Regel zutrifft, <adresse> ist dabei die (IP-)Adresse.
to ADRESSE   Definiert die Zieladresse, auf die die Regel angewendet wird, <adresse> ist dabei die (IP-)Adresse
port PORT   Definiert den Port, auf die die Regel (für Ausgangs- / Zieladresse) angewendet wird.
Comment KOMMETAR  Fügt den Kommentar an die Regel an, der bei ufw status angezeigt wird.

Grundsätzlich kann für PROTOKOLL, ADRESSE und PORT auch immer any als Wert gesetzt werden. Dann trifft die Regel für den entsprechenden Parameter auf alle möglichen Fälle zu. Eine Regel mit ufw kann z.B. so aussehen:

sudo ufw allow proto tcp from any to 123.456.78.90 port 22

Dies erlaubt das TCP-Protokoll von jedem Port eines beliebigen Systems zum Rechner mit der IP-Adresse 123.456.78.90 und dem dortigen Port 22.

Wichtig zum Verständnis: verbirgt sich hinter 123.456.78.90 der eigene Rechner (damit ist der Rechner gemeint, auf dem gerade ufw konfiguriert wird), so hat man gerade Port 22 für eingehende Verbindungen von einem beliebigen Rechner aus geöffnet.

Hat der eigene Rechner hingegen nicht die IP 123.456.78.90, gilt folgendes Regelwerk: der eigene Rechner kann Pakete, die über den Port 22 herausgeschickt werden, nur an 123.456.78.90 schicken; es sei denn, man definiert eine weitere Regel.

Status, Start, Stop

Als erstes sollte man prüfen, ob das Programm aktiv ist. In der Regel ist ufw deaktiviert, da dies im Zuge der Standardinstallation so vorgegeben wird. Den Status überprüft man mit
sudo ufw status
Aktiviert werden kann die Firewall mittels:
sudo ufw enable
Firewall started and enabled on system startup

So wird ufw auch als Dienst eingerichtet, d.h. beim Neustart des Rechners wird diese direkt aktiviert. Um ufw wieder abzuschalten, dient der Befehl:
sudo ufw disable
Firewall stopped and disabled on system startup
was auch den automatischen Start des Programms deaktivert.


Nach der Installation eines Ubuntu-Systems ist noch keine Firewall vorhanden, da es auch noch keine Netzwerkdienste gibt. Erst wenn remote Zugriffe, Datenbankdienste, ftp- oder email-Dienste eingesetzt werden, ist eine Kontrolle der ein- und ausgehenden Pakete erforderlich.

Sobald die ufw aktiviert wird, gelten bestimmte Grundregeln.
▪ Alles, was nicht erlaubt wird, ist gesperrt.
  Das Aktivieren der Firewall ohne die Definition von Regeln führt bereits dazu, dass alle eingehenden Verbindungen verboten sind!
▪ ufw verwendet ein dreistufiges Regelwerk, welches in mehreren Konfigurationsdateien hinterlegt ist.
 o /etc/ufw/before.rules
 o /var/lib/ufw/user.rules oder /lib/ufw/user.rules hier werden die in der Kommandozeile definierten Regeln abgelegt
 o /etc/ufw/after.rules
▪ Regeln in user.rules ggf. überschreiben die Regeln in before.rules und Regeln in after.rules die von user.rules

Wenn man auf einen Rechner nur per SSH zugreifen kann, besteht die Möglichkeit, dass man sich selber aussperrt. Deshalb sollte man in diesem Fall unbedingt zuerst die Regeln anpassen und die gewünschten Verbindungen explizit erlauben und erst danach die Firewall aktivieren.

Konkret sollten Sie dem Hinweis in der ufw Konfigurationsdatei folgen.



Regeln können schon vor dem Start der ufw festgelegt werden. Dadurch ist es Ihnen möglich, den weiteren Zugang zum Rechner zu garantieren.
Ihre Befehle, die weitere Regeln festlegen, werden in user.rules gesoeichert.
Dabei ist zu unterscheiden, wo die neue Regel eingefügt wird.
Die Syntax ufw allow 22/tcp setzt die Regel als neue Regel an das Ende des Rulesets.
Gäbe es zuvor eine Regel, die den Gebrauch des Ports 22 einschränkt, wäre die allow Regel wirkungslos.
Um sicher zu gehen, dass Ihre Regel wirksam ist, sollten Sie mit ufw insert 1 allow 22/tcp die Regel an den Anfang der Datei stellen.
Allerdings werden folgende insert-Kommandos die Regel von der führenden Position verdrängen.
Einen direkten „Verschiebe-Befehl“ bietet ufw nicht. Sie müssen die Regel durch Löschen und Einfügen an eine neue Position bringen.
Der Befehl sudo ufw delete n löscht die Regel an der Position n.
Beachten Sie dabei, dass sich dann alle folgenden Positionen von Regeln verändern.
Das Löschen eines Bereiches von Regeln sollte daher von der höchsten zur niedrigsten Nummer erfolgen.


Beschränkung des Zugangs auf eine geografische Region
 o Einzelne Regionen ausschließen
 o Zugang nur aus bestimmten Regionen

 Ausschluss einer bestimmten IP.

Im ausgewählten Grundzustand erlaubt ufw allen Zugriff über die Ports der im folgenden angezeigten Ports in IPv4 und IPv6.
Sie erhalten die Liste mit ufw status numbered.

Den Ausschluss einer einzelnen IP erreichen Sie durch sudo uwf insert 1 deny from <ip>

Die gesperrte IP wird bei einem Verbindungsversuch einen Connection timeout erhalten.

Ausschluss einer Region

Um ganze geografische Gebiete durch die Anwendung von Rule-Sets ausschließen zu können, ist es notwendig, die kompletten Netzblöcke der betroffenen Region zu identifizieren. Leider wurden diese Netzblöcke in der Vergangenheit von den zuständigen Institutionen nicht in zusammenhängenden Blöcken vergeben. Da aber auch die manuelle Eingabe von Millionen einzelner IP-Adressen nicht praktikabel ist, ist es zunächst notwendig, sich einen Überblick über die Situation zu verschaffen, und zwar in Form der CIDR-Notation. Die CIDR-Notation ermöglicht eine effiziente Darstellung und Verwaltung von IP-Adressbereichen. CIDR steht für "Classless Inter-Domain Routing" und bezeichnet eine Methode zur Vergabe von IP-Adressen, bei der die Adressblöcke nicht mehr an starre Klassengrenzen gebunden sind.

Indem wir die Netzblöcke einer Region in CIDR-Notation darstellen, können wir sie kompakt und eindeutig identifizieren. Statt Millionen einzelner IP-Adressen müssen wir nur die Startadresse eines Blocks sowie die Anzahl der enthaltenen Adressen angeben. Diese Information ermöglicht es uns, den gesamten Bereich des Netzwerks zu erfassen, der von den betroffenen Regeln ausgeschlossen werden soll.
Dank der CIDR-Notation können wir somit einen systematischen Ansatz verfolgen, um ganze geographische Bereiche von unseren Regelungen auszuschließen. Indem wir uns zunächst einen Überblick über die Netzwerktopologie verschaffen, können wir die erforderlichen Maßnahmen effektiv umsetzen, ohne uns in einem unüberschaubaren Meer von Einzeladressen zu verlieren.

Eine ausfühliche Übersicht über die Zuordnung von IP Addressen zu Ländern finden Sie unter https://lite.ip2location.com/ip-address-ranges-by-country.

Der Link https://www.ip2location.com/free/visitor-blocker ermöglicht den Download vollständiger Listen in verschiedenen Firewall-Formaten:

  Achtung! Stolperstein, wenn ein Zugang über VPN erfolgt oder ein Webinterface genutzt wird, könnte man sich leicht aussperren, falls die IP des SSH-Client in einem der gesperrten Blöcke enthalten ist.