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:
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install -y gcc git python-minimal python2.7-dev libffi-dev libssl-dev make
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo -H python get-pip.py
$ sudo -H pip install ansible
$ git clone https://github.com/PaloAltoNetworks/minemeld-ansible.git
$ cd minemeld-ansible
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:
$ ansible-playbook -K -i 127.0.0.1, local.yml
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):
sudo usermod -a -G minemeld <your user>
Um die einzelnen Dienste etwas genauer zu betrachten, kann dieser Befehl genutzt werden:
$ sudo -u minemeld /opt/minemeld/engine/current/bin/supervisorctl -c /opt/minemeld/supervisor/config/supervisord.conf status
Überprüfung auf Status
Um den Status von Minemeld zu überprüfen, kann systemctl genutzt werden.
systemctl status minemeld
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 admin – minemeld gemacht werden. Danach sollte direkt das Standard-Kennwort geändert werden, warum muss ich wohl nicht weiter erklären…
Pingback:Dynamische Palo Alto Firewall-Regeln basierend auf Minemeld - Teil 2 - Jans Blog
Hallo Jan,
dein Blog ist spitze. Umso besser, dass du dich nun auch mit Palo Alto Firewalls beschäftigst.
Mach weiter so!
Gruß
Christian