Dynamische Palo Alto Firewall-Regeln basierend auf Minemeld – Teil 1

Ich arbeite seit einiger Zeit mit einem Palo Alto Firewall-System. Zwei Firewalls in einem HA-Verbund sorgen dafür, dass Verbindungen von außen und von innen gefiltert, überwacht und ggf. blockiert werden. Nachdem ich einige Zeit mit dem System verbracht habe und mittlerweile auch das ein oder andere Training mitgemacht habe, ging es um das Thema “Dynamische Filterlisten”. Es ging primär um die Frage, ob es eine (einfache) Möglichkeit gibt, alle vorhandenen Microsoft Office365-IPs in der Firewall einzutragen, und zwar nicht per Hand. Ziemlich schnell bin ich dann bei der Möglichkeit der dynamischen Listen gekommen, die in der Palo Alto verfügbar sind

Woher bekomme ich die Listen?

Wenn man in der Palo Alto eine neue Liste hinzufügen möchte, muss man ein paar Informationen eintragen:

Die Quelle für solch eine Liste kann teilweise online liegen, hierbei ist allerdings immer die Frage, wie zuverlässig und aktuell solche Listen sind. Da sich im Bereich von Cyber-Kriminalität ja ein bisschen was tut, sollten diese natürlich möglichst aktuell sein. Mit dem (kostenfreien) Produkt Minemeld hat Palo Alto eine Möglichkeit geschaffen, wie man sich selber Listen nach Bedarf zusammenstellen kann. Als Basis dient eine VM mit Ubuntu / CentOS / RHEL / Debian, alternativ kann eine virtuelle Instanz bei Azure oder AWS betrieben werden. Ich für meinen Fall beschreibe hier die Installation von Minemeld mit einem Ubuntu 16.04, Version 18.04 oder Debian 9 ist leider immer noch als experimental gekennzeichnet.

Update 06.09.2019: Nach kurzer Zeit des Betriebs habe ich festgestellt, dass der Minemeld-Dienst nicht zuverlässig unter Ubuntu 16.04 läuft. Der Wechsel auf Debian 9 (Stretch) sieht bisher besser aus.

Update 16.09.2019: Das neue System unter Debian 9 läuft nun seit über einer Woche fehlerfrei und problemlos. Ich empfehle daher dringend die Nutzung von Debian 9 gegenüber der älteren Ubuntu-Version.

Die Grundinstallation

Die Installation von Ubuntu brauche ich an dieser Stelle nicht weiter beschreiben, hier gibt es tonnenweise Anleitungen im Internetz. Ich nutze eine normale Server-Installation ohne grafische Oberfläche, die einzigen Pakete die installiert werden sind die Basis-Systemtools und ein SSH-Server, damit ich später mit meiner Workstation auf der VM arbeiten kann. Nachdem das System installiert und auf den aktuellsten Level geupdatet wurde, beginnt die eigentliche Installation von Minemeld.

Die Installation von Minemeld

Es gibt unterschiedliche Varianten, wie Minemeld installiert werden kann. Ich habe mich zuerst an dem Download und der Installation des .deb-Pakets versucht, musste allerdings feststellen, dass es hier nur Probleme gab und einige Abhängigkeiten nicht mehr erfüllt werden konnten usw. Der beste und einfachste Weg ist mittlerweile die Installation über ein Ansible Playbook. Wer Ansible nicht kennt: Mit Ansible kann eine Datei geladen und ausgeführt werden, in der genau beschrieben ist, wie das System aussehen soll (ähnlich einem Kochbuch, wo genau drin steht, was benötigt wird). Die Beschreibung in der Datei wird genau so umgesetzt, wie es definiert wurde. Dies bedeutet, dass z.B. der Hersteller der Software eine Installations- und Abhängigkeitsroutine (in Form von dem besagten Playbook) schreiben kann, somit ist sichergestellt, dass die Installation immer gleich durchgeführt wird.
Neben Ansible gibt es auch noch Puppet oder Chef, diese Tools erleichtern einem Administrator das Leben um einiges. Zum Thema Puppet hatte ich hier schon einiges geschrieben.

Die benötigten Befehle zur Installation sind im Github-Repo von Palo Alto enthalten:

Github.com: PaloAltoNetworks – minemeld-ansible

Die ersten acht Befehle können direkt übernommen werden:

Installation der stable Version

Ruft man die Seite auf, ist direkt am Anfang eine Warnung sichtbar, dass ohne eine Anpassung immer der develop Branch genutzt und installiert wird. Dies ist bei produktiven Systemen nicht von Vorteil, hier sollte die stable Variante installiert werden.
Um die stabile Version zu installieren, muss nach dem Klonen des Git-Repos die Datei local.yml angepasst werden.

Die beiden in dem Screenshot eingekreisten Variablen müssen aktiviert werden, standardmäßig sind sie auskommentiert.
Wichtig: Bei Ansible ist es äußerst wichtig, dass die eingerückten Zeichen korrekt sind. Die beiden Variablen müssen genau in Linie mit den Variablen darüber sein (zwei Leerzeichen gegen dem vars:), sonst kommt ein Syntax-Fehler.

Wurde die Datei angepasst und gespeichert, kann nun die Installation fortgesetzt werden. Dazu wird der folgende Befehl ausgeführt:

Wir sehen, dass hier das Ansible Playbook ausgeführt wird. Die Installation dauert ein paar Minuten, danach sollte die Installation mit einer Erfolgsmeldung quittiert werden. Alle benötigten Pakete und Abhängigkeiten werden installiert und bei Bedarf online nachgeladen.

Tipp: Klappt die Installation nicht im ersten Schritt (wie in meinem Fall), kann das ansible-playbook ruhig ein zweites Mal ausgeführt werden. Sind definierte Zustände nicht vorhanden, werden sie nun im zweiten Durchlauf versucht umzusetzen.

Hat die Installation geklappt, müssen wir nun noch die entsprechenden Benutzer in die minemeld-Gruppe hinzufügen (der letzte Befehl in der Github-Anleitung):

Um die einzelnen Dienste etwas genauer zu betrachten, kann dieser Befehl genutzt werden:

Überprüfung auf Status

Um den Status von Minemeld zu überprüfen, kann systemctl genutzt werden.

Ist der Status grün und der Dienst wurde erfolgreich gestartet, können wir eine Anmeldung am Web-Dienst versuchen.

Die erste Anmeldung an der Webkonsole

Wechseln Sie dazu in einen Browser Ihrer Wahl und rufen Sie die IP-Adresse der VM auf. Hat alles geklappt, werden Sie von einer Anmeldemaske begrüßt. Die erste Anmeldung muss mit adminminemeld gemacht werden. Danach sollte direkt das Standard-Kennwort geändert werden, warum muss ich wohl nicht weiter erklären…

Jan

Jan Kappen arbeitet sein 2005 in der IT. Er hat seine Ausbildung 2008 abgeschlossen und war bis 2018 als IT-Consultant im Bereich Hyper-V, Failover Clustering und Software Defined Storage unterwegs. Seit 2015 wurde er jährlich von Microsoft als Most Valuable Professional (MVP) im Bereich "Cloud & Datacenter Management" ausgezeichnet für seine Kenntnisse und die Weitergabe seines Wissens. Jan ist häufig auf Konferenzen als Sprecher zu finden, weiterhin bloggt er viel. Seit September 2018 ist Jan als Senior Network- und Systemadministrator bei einem großen mittelständischen Unternehmen im schönen Sauerland angestellt. In seiner Freizeit kümmert er sich um das Freifunk-Netzwerk in Winterberg und Umgebung.

2 Kommentare:

  1. Pingback:Dynamische Palo Alto Firewall-Regeln basierend auf Minemeld - Teil 2 - Jans Blog

  2. Hallo Jan,
    dein Blog ist spitze. Umso besser, dass du dich nun auch mit Palo Alto Firewalls beschäftigst.
    Mach weiter so!
    Gruß
    Christian

Schreibe einen Kommentar

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