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.

Kauf mir einen Kaffee

Molecule Test Status YamlLint Test Status PyLint Test Status Ansible-Lint Test Status Ansible Galaxy

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
    • Ü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
Über das Projekt

Role to install and configure ufw firewall-rules on a linux machine

Installieren
ansible-galaxy install ansibleguy.linux_ufw
GitHub Repository
Lizenz
gpl-3.0
Downloads
2.5k
Besitzer
guy@ansibleguy.net | GPG: https://badges.ansibleguy.net/public.gpg