Setup von Hashicorp Nomad -
Schritt 2.2: Ansible - fail2ban

Der Artikel fokussiert auf das Setup von Nomad, beginnend mit einem überblickgebenden Einführungstext, gefolgt von einer konkreten Folge von Schritten, die in einzelnen Blockartikeln inklusive exakter Anweisungen beschrieben werden.  Die Artikel bauen aufeinander auf,  können allerdings je nach Bedarf auch übersprungen werden.

Wir haben vorhin bereits einen Command namens ansible-galaxy ausgeführt. Nun gehen wir darauf ein was diese Ansible Galaxy eigentlich ist.

Ansible Galaxie ist ein webbasiertes Open-Source-Online-Repository für Ansible-Inhalte (hauptsächlich Rollen und Sammlungen).

Collections (Sammlungen) sind ähnlich zu Rollen, nur haben sie einen größeren Umfang. Sie umfassen nicht nur Rollen, sondern auch Playbooks, Module oder Plugins.

Es gibt also für viele Anwendungsfälle bereits Rollen von anderen Entwickler*innen die wir einfach benutzen aus der Ansible Galaxy ziehen können. Dazu müssen wir die Rollen aber zuerst installieren. Da wir die benötigten Rollen dokumentieren wollen, erstellen wir im Ordner roles eine Datei namens requirements.yml. Dort fügen wird dann folgenden Code ein:

				
					---
-   src: oefenweb.fail2ban
    name: fail2ban

				
			

Über src geben wir an woher wir die Rolle beziehen möchten. In unserem Fall verwenden wir hier eine Rolle von Ansible Galaxy, daher geben wir username.rolename an (in diesem Fall oefenweb.fail2ban). Danach vergeben wir noch einen spezifischen Namen zum späteren Aufruf im Playbook, denn dort müssen wir diese Rolle wieder unter roles einbinden, wie auch bei der ufw Rolle. Es gibt auch die Möglichkeit eine spezielle Version der Rolle/Kollektion mit dem version: Tag auszuwählen.
Zuerst installieren wir aber unsere Requirements mit folgendem Befehl: ansible-galaxy install -r requirements.yml dadurch werden alle in der requirements.yml befindlichen Rollen installiert.

Die Rollen können dabei nicht von Ansible Galaxy kommen, sondern auch von einem Github-Repo, einem lokal geklonten Git-Repo, WebServer wo die Rolle als tar.gz/bz2/xz. Datei abgelegt ist oder anderen Git Repositories (wie BitBucket, Gitlab, AzureDevOps)

Nun fügen wir die installiere Rolle also in unser Playbook ein, das sollte dann so aussehen:

				
					---
-   hosts: azure_nomad_vms
    become: yes
    roles:
        - ufw
        - fail2ban

    vars:
        failed2ban_services:
            -   name: sshd
                port: 22
                maxretry: 5
                bantime: 60
        ufw_apps_allow:
            -   OpenSSH
# ufw_ports_allow:

				
			

Wir fügen also den name Wert der oefenweb.fail2ban Rolle in den roles Block ein. Danach können wir dann auch den sshd Port mit einem Schutz versehen.

Durch diese Einstellung wird ein Angreifer für 1 Minute gesperrt, sofern er 5 mal das falsche Passwort bzw. den falschen SSH-Schlüssel angibt.

Autoren:

Portrait Keith

Keith Schuijlenburg

Cloud Architect

Jonas portrait

Jonas Budde

Cloud Engineer

Aleksandra Portrait

Aleksandra Bury

Cloud Engineer