# Beispiel: Passe jeden Task in dieser Datei so an: - name: Aktiviere Firewall-Regeln für WireGuard ufw: rule: allow port: "{{ wireguard_port }}" proto: udp become: true when: ansible_connection != "local" - name: Prüfe, ob UFW installiert ist command: which ufw register: ufw_installed ignore_errors: true changed_when: false - name: Installiere UFW (falls nicht vorhanden) apt: name: ufw state: present update_cache: yes when: ufw_installed.rc != 0 # Setze Standardrichtlinien (erst Konfiguration, dann am Ende aktivieren) - name: Setze Policy für eingehenden Traffic auf "deny" ufw: direction: incoming policy: deny - name: Setze Policy für ausgehenden Traffic auf "allow" ufw: direction: outgoing policy: allow # WireGuard-Port freigeben (UDP) - name: WireGuard-Port erlauben ufw: rule: allow port: "{{ wireguard_port | default(51820) }}" proto: udp # SSH von bestimmter IP erlauben - name: SSH von deiner IP erlauben (empfohlen) ufw: rule: allow port: 22 proto: tcp from_ip: "{{ fallback_ip }}" when: fallback_ip is defined and fallback_ip | length > 0 # Temporär für Tests: SSH für alle erlauben (nur bei Bedarf!) - name: SSH von überall erlauben (fail-safe, NUR während Setup/Test) ufw: rule: allow port: 22 proto: tcp when: (not (fallback_ip is defined and fallback_ip | length > 0)) or (enable_ssh_from_anywhere | default(false)) # Masquerading für WireGuard - name: NAT für WireGuard aktivieren iptables: table: nat chain: POSTROUTING out_interface: "{{ wireguard_exit_interface | default('eth0') }}" source: "{{ wireguard_network }}" jump: MASQUERADE - name: WireGuard Kernel-Modul laden modprobe: name: wireguard state: present # UFW ganz am Schluss aktivieren - name: UFW aktivieren ufw: state: enabled - name: Aktive UFW-Regeln anzeigen (zum Debuggen) command: ufw status verbose register: ufw_status changed_when: false - name: Zeige UFW-Regeln im Ansible-Output debug: var: ufw_status.stdout