55 lines
1.5 KiB
YAML
55 lines
1.5 KiB
YAML
---
|
||
# roles/wireguard/tasks/failsafe.yml
|
||
# Sicherstellt, dass SSH über VPN funktioniert und ein Fallback vorhanden ist
|
||
|
||
- name: Stelle sicher, dass wireguard_network gesetzt ist
|
||
assert:
|
||
that:
|
||
- wireguard_network is defined
|
||
fail_msg: "wireguard_network muss gesetzt sein (z. B. 10.8.0.0/24)"
|
||
|
||
- name: Automatisch externe IP als fallback_ip setzen (nur wenn nicht gesetzt)
|
||
shell: curl -s ifconfig.me
|
||
register: detected_fallback_ip
|
||
when: fallback_ip is not defined
|
||
changed_when: false
|
||
|
||
- name: Setze fallback_ip dynamisch als Ansible-Fact (wenn nicht gesetzt)
|
||
set_fact:
|
||
fallback_ip: "{{ detected_fallback_ip.stdout }}"
|
||
when: fallback_ip is not defined
|
||
|
||
- name: (Optional) Erlaube temporär Fallback-SSH von aktueller IP
|
||
ufw:
|
||
rule: allow
|
||
port: 22
|
||
proto: tcp
|
||
from_ip: "{{ fallback_ip }}"
|
||
|
||
- name: Erlaube SSH-Zugriff über VPN
|
||
ufw:
|
||
rule: allow
|
||
port: 22
|
||
proto: tcp
|
||
from_ip: "{{ wireguard_network }}"
|
||
|
||
- name: (Warnung) Prüfe ob VPN-Interface aktiv ist
|
||
shell: ip a show dev wg0
|
||
register: vpn_interface_check
|
||
failed_when: false
|
||
|
||
- name: Hinweis, wenn VPN-Interface nicht aktiv ist
|
||
debug:
|
||
msg: "⚠️ VPN-Interface wg0 scheint nicht aktiv zu sein. SSH über VPN wird nicht funktionieren."
|
||
when: vpn_interface_check.rc != 0
|
||
|
||
- name: (Optional) SSH von überall blockieren – nur wenn VPN aktiv
|
||
when:
|
||
- ssh_lockdown | default(false)
|
||
- vpn_interface_check.rc == 0
|
||
ufw:
|
||
rule: deny
|
||
port: 22
|
||
proto: tcp
|
||
from_ip: 0.0.0.0/0
|