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).
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.