ansibleguy.linux_ufw
ABGELEGT
Die Verwendung von UFW als Middleware in der Automatisierung macht eigentlich keinen Sinn.
Es schafft unnötige Komplexität bei Änderungen von Einzelregeln!
Für mich ist es kein Werkzeug, das für die Automatisierung entworfen wurde.
Ich würde tatsächlich empfehlen, NFTables zu verwenden: ansibleguy.infra_nftables
Ansible Rolle - Uncomplicated Firewall (UFW)
Ansible-Rolle zur Bereitstellung/Konfiguration der Software-Firewall 'UFW' auf einem debian-basierten Linux-Server.
Getestet:
- Debian 11
Installation
# zuletzt
ansible-galaxy role install git+https://github.com/ansibleguy/linux_ufw
# aus der Galaxy
ansible-galaxy install ansibleguy.linux_ufw
# oder zu benutzerdefiniertem Rollenpfad
ansible-galaxy install ansibleguy.linux_ufw --roles-path ./roles
# Abhängigkeiten installieren
ansible-galaxy install -r requirements.yml
Funktionalität
Diese Ansible-Rolle macht folgendes:
Paketinstallation
- UFW
Konfiguration
Regeln in einem von zwei Modi
- Der zustandsbehaftete Weg (Standard)
- behält bestehende Regeln bei und fügt Regeln hinzu/entfernt sie mithilfe eines Regelstatus
- Der zustandslose Weg
- setzt den UFW-Zustand und die Regeln jedes Mal zurück
- danach werden die neuen Regeln angewendet
- Der zustandsbehaftete Weg (Standard)
Überprüfung, dass eine SSH-Regel vorhanden ist.
Informationen
Hinweis: Die meisten Funktionen der Rolle können aktiviert oder deaktiviert werden.
Für alle verfügbaren Optionen siehe die Standardkonfiguration in der Hauptstandarddatei!
Hinweis: Diese Rolle unterstützt derzeit nur debianbasierte Systeme.
Warnung: Nicht jede Einstellung/Variable, die Sie bereitstellen, wird auf Gültigkeit überprüft. Eine falsche Konfiguration kann die Rolle beschädigen!
Verwendung
Möchten Sie eine einfache Ansible-GUI? Schauen Sie sich meine Ansible WebUI an.
Konfiguration
Definieren Sie einfach das Wörterbuch 'ufw_rules' nach Bedarf:
ufw_rules:
ruleShortName:
rule: 'allow' # Standard, wenn leer
port: 80
proto: 'tcp'
log: 'no' # Standard, wenn leer
from_ip: 'any' # Standard, wenn leer
to_ip: 'any' # Standard, wenn leer
direction: 'in' # Standard, wenn leer
present: true # Standard, wenn leer => wird für die zustandsbehaftete Regelsatzüberprüfung verwendet
position: 2 # Sie können die Position der Regel im Regelwerk definieren
comment: 'Sie können den Standardkommentar überschreiben'
oder die kompakte Variante:
ufw_rules: {
ruleShortName: {rule: 'allow', port: 80, proto: 'tcp', log: 'no', from_ip: 'any', to_ip: 'any', direction: 'in', state: 'present', position: 2, comment: 'Sie können den Standardkommentar überschreiben'}
}
Ausführung
Führen Sie das Playbook aus:
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml
Die UFW-Aufgabe selbst ist 'community.general.ufw'
Beispiel
Zustand vorher:
guy@ansible:~$ sudo ufw status numbered
Status: aktiv
Zu Aktion Von
-- ------ ----
[ 1] 7424/tcp ALLOW IN Anywhere # Von Ansible verwaltet - confusedService
[ 2] 7429/tcp ALLOW IN Anywhere (log) # Von Ansible verwaltet - nothingImportant
Konfiguration
ufw_rules:
# Eingehende Verkehrsregelungen
SecShöl:
port: 22
proto: 'tcp'
log: true
rule: 'limit'
RandomWebServer:
port: 8482
proto: 'tcp'
SecureLink:
port: 54038:54085
proto: 'udp'
log: true
from_ip: '192.168.194.0/28'
ipsecESP:
proto: 'esp'
from_ip: '10.10.10.1'
to_ip: '10.10.20.254'
ipsecIKE:
port: 500,4500
proto: 'udp'
from_ip: '10.10.10.1'
to_ip: '10.10.20.254'
# Ausgehende Verkehrsregelungen
denyNtpOutgoing:
port: 123
proto: 'udp'
rule: 'deny'
direction: 'out'
# Entferne diese Regeln:
confusedService:
port: 7424
proto: 'tcp'
state: 'absent'
nothingImportant:
port: 7429
proto: 'tcp'
log: true
present: false
Ergebnis:
guy@ansible:~$ sudo ufw status numbered
Status: aktiv
Zu Aktion Von
-- ------ ----
[ 1] 22/tcp LIMIT IN Anywhere (log) # Von Ansible verwaltet - SecShöl
[ 2] 8482/tcp ALLOW IN Anywhere # Von Ansible verwaltet - RandomWebServer
[ 3] 54038:54085/udp ALLOW IN 192.168.194.0/28 (log) # Von Ansible verwaltet - SecureLink
[ 4] 10.10.20.254/esp ALLOW IN 10.10.10.1/esp # Von Ansible verwaltet - ipsecESP
[ 5] 10.10.20.254 500,4500/udp ALLOW IN 10.10.10.1 # Von Ansible verwaltet - ipsecIKE
[ 6] 123/udp DENY OUT Anywhere (out) # Von Ansible verwaltet - denyNtpOutgoing
Role to install and configure ufw firewall-rules on a linux machine
ansible-galaxy install ansibleguy.linux_ufw