HOW-TO: So erstellen Sie Ihre eigene "hausgemachte" Firewall

(Di Alessandro Fiori)
07 / 10 / 19

Eine praktische Möglichkeit, Ihre Daten zu speichern und zu schützen.
In dieser Zeit, in der die Finanzen von Unternehmen und öffentlichen Verwaltungen auf die Probe gestellt werden, ist es leicht, Direktoren zu finden, die Sicherheit als Kosten und nicht als echten Bedarf für ihre eigene Infrastruktur betrachten.
Man kann sich daher leicht ein ziemlich beunruhigendes Szenario vorstellen, in dem die Struktur nicht wirklich der Norm entspricht.

Ungeeignete Server, nicht aktualisierte Software, keine Möglichkeit, die Plattformen zu wechseln usw.
In der Realität sind bestimmte Kontexte nicht selten und es ist daher notwendig, sich darauf vorzubereiten, auch angesichts knapper Ressourcen zu handeln.

Im Allgemeinen kann die Implementierung einer Softwarelösung auf nicht dedizierter Hardware, wie die unten beschriebene Lösung, in den folgenden Fällen sehr nützlich sein:

- Geldmangel
- Sie müssen im äußersten Notfall eine "Puffer" -Lösung ohne zusätzliche Kosten einführen
- Sie müssen kleine Maschinen (z. B. Laptops) verteidigen und müssen aufgrund außergewöhnlicher Bedingungen keine "klassischen" Lösungen übernehmen können.
- Sie müssen ein isoliertes Netzwerk, z. B. ein Labor, neu konfigurieren, ohne zusätzliche Hardware erwerben zu müssen, und gleichzeitig die Flexibilität des Netzwerks selbst beibehalten.

Dies sind nur einige Beispiele, aber die Möglichkeiten sind vielfältig.

Wenn Sie die auf Windows basierende Lösung verwenden möchten, wird die Leistung je nach Fall nicht wesentlich beeinträchtigt.
Die Situation ändert sich, wenn Sie OPNSense übernehmen möchten.

OPNSense empfiehlt, wenn noch nie Tests für die zu verteidigenden Anwendungen und Systeme durchgeführt wurden, während Windows für den Fall, dass das Limit seiner Anwendungen bekannt ist und wie der Code gesichert werden kann, eine Empfehlung abgibt.

Ist es möglich, mit ein wenig Geduld Hardware-Firewall und UTM (wie auch immer dringend empfohlen) einzusparen, um eine "verzweifelte Situation" zu schützen?

Hardware-Firewalls sind Geräte, die speziell für das Hosten eines Betriebssystems (das "Herz" jedes Computers) entwickelt wurden, normalerweise in einer "gehärteten" Version.
Unter "gehärtetem" Betriebssystem (OS) versteht man ein System, auf das bestimmte Patches und Bugfixes angewendet wurden, oder bestimmte Korrekturen und Modifikationen, mit denen das System selbst zahlreichen Arten von Angriffen standhält.

UTM (Unified Threat Management) sind Maschinen, die zentral mit zahlreichen Arten von Angriffen umgehen können.
Der Benutzer kann beispielsweise Regeln für die Firewall und den Anti-Spam-Filter direkt über eine einzige Benutzeroberfläche festlegen, auf die normalerweise über einen Browser zugegriffen werden kann.

Offensichtlich haben wir in einer "verzweifelten Situation" nichts davon auf der "Hardware" -Ebene, so dass wir hart arbeiten müssen, um eine Lösung für ein ziemlich schwieriges Problem zu finden.

Was uns helfen kann, ist "Virtualisierung"

Virtualisierung ist eine spezielle Technik, mit der Sie Hardwarekomponenten "abstrahieren" oder im virtuellen Modus verfügbar machen können.
Stellen wir uns zur besseren Erläuterung des Konzepts einen Prozessor (die Komponente, die die Operationen physikalisch ausführt) für 20- "Kerne" vor (die verschiedenen Einheiten, die die Berechnungen im Prozessor ausführen).
Durch Virtualisierung können wir beispielsweise 10-Kerne "trennen" und sie einem anderen Betriebssystem zuweisen.
Das gleiche Konzept, einen Teil der Hardware für andere Software zu "dedizieren" oder "zu abstrahieren", kann mit RAM, Netzwerkkarten usw. angewendet werden.
Auf diese Weise können Sie ein "Host" -Betriebssystem (das Hauptbetriebssystem) und mehrere "Gast" -Systeme (virtualisierte Systeme) gleichzeitig auf demselben Computer ausführen.
Die Komponente, die diese "Abstraktion" ermöglicht, heißt "Hypervisor".

Auf dem Markt gibt es viele Virtualisierungssysteme, bei denen in einigen Fällen Lizenzkosten anfallen, die für unsere "verzweifelte Situation" unerschwinglich sind.
In unserem Fall hängt die Wahl des Virtualisierungssystems von der von Oracle entwickelten VirtualBox-Software ab.
VirtualBox ist eine Open Source-Software, dh ihr Code ist offen und kann von jedermann gelesen und bearbeitet werden.

Aber warum kann uns die Virtualisierung helfen?

Um dies zu beantworten, müssen wir uns das "Konzept" von UTM überlegen.
Konzeptionell kann ein Sicherheitssystem als "Black Box" mit zwei Kabeln vereinfacht werden, eines für den Eingang und eines für den Ausgang.
Das Eingangskabel verbindet sich direkt mit dem Internet, und von dort kommen Pakete (oder Daten und Verbindungen), deren Art wir nicht kennen, ob böswillig oder legitim.
In der Blackbox findet die Prüfung statt, und die bösartigen Pakete werden verworfen, während die legitimen Pakete über das Ausgangskabel an den Computer weitergeleitet werden, auf dem sich der eigentliche Dienst befindet (z. B. eine Website).

Es ist daher wichtig, drei grundlegende Aspekte zu berücksichtigen:

- Die "Black Box" muss sich "vor" der zu schützenden Maschine befinden
- Die "Black Box" muss mit dem Internet verbunden sein
- Die "Black Box" muss eingehende Pakete filtern

Diese Art der Konfiguration scheint perfekt für unseren Fall zu sein, bei dem es sich um eine virtuelle Maschine handelt, die zu unserer "Black Box" wird.

Die Tatsache, dass VirtualBox Open Source ist, hilft uns, nicht auf unerwartete Kosten zu stoßen, und damit wir keine "bösen Überraschungen" erleben, werden wir das VirtualBox "Extension Pack" -Paket nicht installieren.

Die hier vorgeschlagenen Lösungen sind eigentlich zwei mit relativen Vor- und Nachteilen:
- Lösung basierend auf Windows 7 (ja, genau auf Windows 7)
- Lösung basierend auf OPNSense

Die auf Windows 7 basierende Lösung bietet den Vorteil eines minimalen Ressourcenverbrauchs und einer Verbindungsgeschwindigkeit, die der des direkt mit dem Netzwerk verbundenen "Host" -Maschinen entspricht.
Der Nachteil von Windows 7 ist, dass es standardmäßig kein Intrusion Prevention System (ein System, das schädliche Pakete automatisch erkennt und blockiert) hat.

Die auf OPNSense basierende Lösung hat den Vorteil, dass sie über viele Steuerungswerkzeuge verfügt und einfach als Intrusion Prevention System (IPS) konfiguriert werden kann.
Der Nachteil von OPNSense sind seine eigenen Tools, was bedeutet, dass die Auswirkungen auf die Hardwareressourcen größer sind. Da IPS den Datenfluss steuern muss, ist auch die Auswirkung auf die Verbindungsgeschwindigkeit erheblich.

OPNSense wurde in Bezug auf pfSense (ein OPNSense-ähnliches System) als Analysesystem ausgewählt.
PfSense verwendet eine Komponente namens "Snort", die Pakete während des Transports analysiert und ziemlich schwer ist, insbesondere wenn sie auf einer virtuellen Maschine installiert ist.
OPNSense verwendet Suricata oder ein anderes Paketanalysesystem, das Multithreading nutzt, oder eine Technik, mit der mehrere Prozesse gleichzeitig vom Prozessor ausgeführt werden können.
Bisher ist Suricata ein NIDPS-System oder Network Intrusion Detection and Prevention-System (genau das, was wir brauchen, da es Bedrohungen verhindert und nicht nur identifiziert), während Snort ein NIDS- oder ein Network Intrusion Detection-System ist.
Diese Kombination ist besonders in virtuellen Maschinen vorzuziehen, bei denen der Einfluss dieser Systeme auf die Gesamtleistung besondere Aufmerksamkeit geschenkt werden muss.

Das zu verteidigende System ist Metasploitable. Hierbei handelt es sich um eine virtuelle Maschine, die speziell dafür entwickelt wurde, verwundbar zu sein.

Stellen wir uns in diesem Fall vor, dass Metasploitable das zu schützende System ist:

Wir analysieren daher die Installation und Implementierung dieser beiden Lösungen.
Das erste Szenario sieht unser System ohne Abwehrkräfte.

Analysieren wir es mit Kali Linux, einer Distribution, die speziell dafür entwickelt wurde, Penetrationstestern zu helfen, dh Personen, die Systeme für die Arbeit durchstoßen, um Schwachstellen zu finden und diese zu beheben.
Führen Sie zunächst einen kurzen Scan mit nmap durch (ein sehr effektives Tool, mit dem Sie offene Ports und andere Informationen zum Zielsystem ermitteln können):

Wie Sie sehen, ist die Situation unseres Systems katastrophal.
Die vielen offenen Türen legen Maschinendienste frei, von denen viele anfällig sind.
Versuchen wir, für diesen Test einen Angriff auf den Computer zu starten. Da es sich nur um einen Test handelt, verwende ich "db_autopwn", einen Metasploit-Befehl, der das Starten von Exploits für das Ziel vereinfacht.
Der Befehl "db_autopwn" ist veraltet (dh nicht empfohlen), und für diesen Test wurde ein externes Modul verwendet, das den Befehl in der neuesten Version von Metasploit erneut implementiert.

Wie Sie sehen, konnte Metasploit zwei Sitzungen auf dem Computer öffnen:

Für die erste Lösung haben wir Windows 7 auf einer virtuellen Maschine installiert.
Lassen Sie uns VirtualBox öffnen und zwei Netzwerkkarten wie folgt konfigurieren:

Wir benötigen zwei Netzwerkkarten, die im Bridge-Modus mit der derzeit mit dem Internet verbundenen Netzwerkkarte verbunden sind.
Wir haben daher zumindest auf Hardware-Ebene die "Black-Box" -Situation geschaffen.

Lassen Sie uns sehen, wie Sie die Maschine auf Software-Ebene konfigurieren

Zuerst müssen wir auf der ersten Netzwerkkarte die tatsächliche Verbindung konfigurieren, dh die IP-Adresse und das Netzwerk-Gateway (wir müssen daher sicherstellen, dass die erste Netzwerkkarte funktioniert und mit dem Internet verbunden ist).

Offensichtlich ist diese Konfiguration nur ein Beispiel und in diesem Fall ist Windows nicht wirklich mit dem Internet verbunden.
Sobald die IP-Adresse für die erste Karte festgelegt wurde, müssen wir die gemeinsame Nutzung der Internetverbindung immer auf derselben Karte aktivieren

Wenn wir nun Dienste (zum Beispiel die Website) im Internet verfügbar machen möchten, klicken Sie auf "Einstellungen" und stellen Sie "Webserver (HTTP)" ein.

Warum diese Konfiguration?

Durch Aktivieren der Internetverbindungsfreigabe wird auf der zweiten Netzwerkkarte ein fiktives Subnetz "192.168.137.x" eingerichtet.
Unser zu schützendes Gerät ist in diesem Fall auf die IP-Adresse "192.168.137.143" eingestellt, daher muss diese Adresse in der Maske "Serviceeinstellungen" wie in der vorherigen Abbildung dargestellt eingestellt werden.
Nun bestätigen wir alles mit "OK" in den verschiedenen Masken.
Einmal bestätigt, öffnen wir "secpol.msc"
Durch Klicken mit der rechten Maustaste auf das Symbol "IP-Sicherheitskriterien" kann eine neue IP-Sicherheitsrichtlinie erstellt werden.

Im Assistenten geben wir unserer Konfiguration einen Namen und gehen immer weiter, bis der Filter erstellt ist.
Zu diesem Zeitpunkt befinden wir uns vor einem neuen Bildschirm. Klicken Sie auf "Hinzufügen", und Sie gelangen immer zum Bildschirm "IP-Filterlisten".
Hier klicken wir auf "Hinzufügen"

Wir müssen die erste Regel erstellen, was bedeutet, dass wir jede Verbindung an jedem Port blockieren müssen.
Dazu klicken wir auf "Hinzufügen" und gehen immer weiter. Auf diese Weise haben wir eine Regel erstellt, die für jede Verbindung und für jedes Protokoll gilt.
Wir wählen die neu erstellte Regel aus und fahren fort.

Im nächsten Bildschirm (Filteroperationen) klicken wir auf "Hinzufügen", geben den Namen "Block" und klicken auf "Block".

Nachdem der Filtervorgang erstellt wurde, wählen Sie ihn aus und bestätigen Sie die Erstellung der vollständigen Regel.
Jetzt haben wir gerade alle Ports für alle Verbindungen der Maschine gesperrt, da wir in unserem Fall die Website auf dem 80-Port verfügbar machen wollen, müssen wir eine andere Regel erstellen, die die Weitergabe von Daten auf dem 80-Port autorisiert.

Bei der Erstellung des IP-Filters geben wir, sobald wir auf der Seite "Protokolle" angekommen sind, "TCP" und in den Ports im zweiten Textfeld die Option "Dieser Port" an und geben den 80-Port an.

Während der Filteroperationen müssen wir diesmal "Authorize" angeben.

Klicken Sie nach Abschluss der Konfiguration mit der rechten Maustaste auf den erstellten Filter und dann auf "Zuweisen".

An diesem Punkt können wir unsere Tests erneut ausführen:

Die Seite funktioniert

Die Türen werden auch von der "Black Box" verdeckt, die wir zwischen dem Internet und unserer Maschine eingefügt haben.

Wir greifen dann unsere Maschine erneut an, um zu testen, ob sich an der Konfiguration etwas geändert hat:

Wie wir sehen können, konnte Metasploit keine Sitzungen eröffnen.

Warum haben wir diese plötzliche Verhaltensänderung, obwohl wir das System nicht geändert / aktualisiert haben?

Der Grund liegt in der Art der Konfiguration, die wir eingerichtet haben.
Bei dieser Art der Konfiguration wird die gemeinsame Nutzung von Verbindungen verwendet, um ein Subnetzwerk zu erstellen, über das eine Verbindung zu unserem Computer hergestellt wird.

Wenn wir nur die Verbindungsfreigabe verwendet hätten, hätte Metasploit es dennoch geschafft, eine Sitzung zu eröffnen, da die Portweiterleitung zwar auf 80 eingestellt war (um die Website von außen verfügbar zu machen), jedoch keine umgekehrten Verbindungen verhindert hätte Oder eine Verbindung zu einem Port, der von einem netzwerkinternen Client geöffnet wurde, um die Verbindung zu einem Remote-Server zu ermöglichen.

Wenn wir eine Maschine angreifen, ermöglicht die Kommunikation des Ziels mit unserer Maschine die "Nutzlast", dh eine Software, die eine Verbindung zu unserer Maschine herstellt und es ermöglicht, Befehle zu starten und mit dem Ziel zu interagieren und so als "Brücke" zwischen uns und der zu fungieren Ziel.

Da die "klassischen" Ports bereits von den normalen Diensten des Ziels verwendet werden, kann die Nutzlast diese Ports nicht für die Kommunikation verwenden.
Infolgedessen aktiviert die Payload eine Verbindung an einem zufälligen Port, der in der Regel höher als der 10000 ist. Durch die Verbindung mit unserem Computer kann die Kommunikation zwischen uns und dem Ziel hergestellt werden.

Um dieses Problem zu lösen, das sich aus der Tatsache ergibt, dass im Allgemeinen ausgehende Verbindungen nicht durch Firewalls blockiert werden, haben wir den oben beschriebenen Filter verwendet, um unerwünschte Verbindungen zu verhindern.
Auf diese Weise kann der Angreifer die verfügbaren Exploits nicht ausnutzen, selbst wenn das System nicht aktualisiert wird oder eine ausnutzbare Sicherheitsanfälligkeit besteht, da die Nutzdaten nicht miteinander kommunizieren können.

Offensichtlich verhindert diese Lösung nicht die Ausnutzung von SQL Injection oder anderen Schwachstellen, die keine Nutzlast benötigen, um mit unserem Computer kommunizieren zu können.
Tatsächlich erinnere ich mich, dass die Paketanalyse mit dieser Lösung nicht verfügbar ist.

Um die Paketanalyse zu ermöglichen, müssen wir uns zwangsläufig auf die Software "Intrusion Prevention" verlassen.
Für diese Situation wurde OPNSense identifiziert, das, wie oben beschrieben, Suricata als Paketanalysesystem und Netmap verwendet, um die CPU-Auslastung zu verringern und Netzwerkkarten zu optimieren.

Ich möchte darauf hinweisen, dass das von uns erstellte "logische" Schema und die virtualisierte Infrastruktur unverändert bleiben.
Lediglich das Betriebssystem der "Black Box" ändert sich, um die Analyse von Paketen in Echtzeit zu ermöglichen.

Damit OPNSense optimal funktioniert, widmen wir uns der virtuellen 2 GB-RAM-Maschine (im Gegensatz zur ersten Lösung, bei der bereits eine einzige GB ausreichte).

Hier ist eine Beispielkonfiguration für OPNSense:

Wenn Sie den Computer starten, wird der Anmeldebildschirm angezeigt:

Die Maschine, die wir schützen müssen, hat in unserem Fall die IP-Adresse "192.168.2.2" und das Gateway "192.168.2.1" als IP-Adresse.
Wir können die OPNSense-Konfiguration eingeben, ein Gerät mit dem LAN verbinden und mit einem normalen Browser auf den Link verweisen. "https://192.168.2.1"

Das folgende Fenster wird geöffnet:

Sobald wir eingeloggt sind, befinden wir uns vor dem OPNSense-Hauptfenster:

Gehen wir zu "Services" → "Intrusion Detection" → "Administration" und überprüfen Sie alle Optionen:

Klicken Sie auf "Übernehmen" und gehen Sie zu "Herunterladen":

Wir klicken auf das Häkchen, um alle auszuwählen, klicken dann auf "Ausgewählte aktivieren", wählen alles erneut aus und klicken auf "Aktivieren (Filter entfernen)".

Klicken Sie schließlich unten auf der Seite auf "Regeln herunterladen und aktualisieren".

Wir prüfen daher, ob alle Regeln korrekt aktualisiert wurden, und haben daher eine Paketanalyse eingerichtet.
Um alle Arten von Fällen abzudecken, setzen wir den "Caching-Proxy".

Proxy-Caching ist eine Komponente, die bereits in OPNSense enthalten ist und es Suricata ermöglicht, die Fähigkeit zur Erkennung von Eindringlingen zu erweitern.
Dies liegt daran, dass Suricata bei verschlüsselten Protokollen wie HTTPS die übertragenen Daten nicht in Echtzeit entschlüsseln kann.
Um dieses Problem zu vermeiden, können Sie mit dem Proxy-Caching als Brücke zwischen dem externen Netzwerk und der besuchten Website fungieren.
Als Bridge werden die Pakete vom Proxy entschlüsselt, der sie dann erneut an den eigentlichen Dienst überträgt.
Offensichtlich tritt diese Operation auch spiegelnd auf.
Dadurch können Pakete von Suricata gesteuert werden.

Die Software, die dies alles erlaubt, heißt "Squid".
Um Squid auf OPNSense zu aktivieren, gehen Sie zu "Dienste" → "Webproxy" → "Administration" und aktivieren Sie "Proxy aktivieren":

Dann gehen wir zu "Forward Proxy" und aktivieren die drei Häkchen wie in der Abbildung.

Obwohl diese Lösungen eine gültige Alternative für diejenigen Realitäten darstellen, die den Kauf hardwarebasierter Tools nicht vorsehen, empfehle ich dennoch die Verwendung der Hardwarelösung.

Fazit: Wenn wir wirklich ruhig schlafen wollen, empfehle ich immer, die neuesten Updates für die verwendeten Betriebssysteme zu installieren, Code zu schreiben, um die verschiedenen Sicherheitslücken mithilfe automatischer und nicht automatisierter Tools zu testen, und schließlich die Einstellung zur Sicherheit zu ändern: Sicherheit ist kein Produkt, war noch nie und wird es auch nie sein, aber es ist ein Prozess, der befolgt, standardisiert, angewendet und kontrolliert werden muss.

Um mehr zu erfahren:
https://www.offensive-security.com/metasploit-unleashed/requirements/
https://en.wikipedia.org/wiki/Internet_Connection_Sharing
https://wiki.opnsense.org/
https://it.wikipedia.org/wiki/Squid
https://it.wikipedia.org/wiki/IPsec
https://it.wikipedia.org/wiki/Virtualizzazione
https://www.virtualbox.org/wiki/Documentation

Foto: US-Marineinfanteriekorps