diff --git a/host_vars/a.ns.oopen.de/ipt-server.yml b/host_vars/a.ns.oopen.de/ipt-server.yml new file mode 100644 index 0000000..4593dd3 --- /dev/null +++ b/host_vars/a.ns.oopen.de/ipt-server.yml @@ -0,0 +1,27 @@ +--- +# ipt-firewall configuration for a.ns.oopen.de +# Generated by extract-fw-host-vars.py - review before committing! +# Place in: host_vars//ipt_firewall.yml + +fw_manage_config: true + +# --- Network +fw_ext_interfaces: + - "eth0" +fw_ext_ips_v4: + - "195.201.179.131" +fw_ext_ips_v6: + - "2a01:4f8:231:19a7::131" + +# --- Munin +munin_remote_ipv4: 37.27.121.227 +munin_remote_ipv6: "2a01:4f9:3070:2bda::227" + +# --- DNS +fw_dns_server_ips: $ext_ips + +# --- VPN / WireGuard +fw_wireguard_server_ips: $ext_ips + +# --- Block +fw_blocked_ips: 222.184.0.0/13 61.160.0.0/16 116.8.0.0/14 diff --git a/roles/ipt-server/MIGRATION.md b/roles/ipt-server/MIGRATION.md index 92fd445..8018053 100644 --- a/roles/ipt-server/MIGRATION.md +++ b/roles/ipt-server/MIGRATION.md @@ -26,7 +26,27 @@ dann überschrieben, wenn die Migration explizit freigegeben wird (`fw_manage_co --- -## Schritt 1 — Aktuelle Konfiguration auslesen +## Schritt 1 — Aktuellen Stand einfrieren + +Vor jeder anderen Änderung den Zustand der laufenden Firewall-Rules sichern. +Das ist der Referenzwert für den späteren Vergleich mit den Ansible-generierten +Rules. + +```bash +HOSTNAME= + +ssh -t ${HOSTNAME} ' + sudo iptables-save | grep -v "^#" | sed "s/\[[0-9]*:[0-9]*\]/[0:0]/g" \ + > /tmp/fw_before_v4.rules + sudo ip6tables-save | grep -v "^#" | sed "s/\[[0-9]*:[0-9]*\]/[0:0]/g" \ + > /tmp/fw_before_v6.rules + echo "Stand gesichert." +' +``` + +--- + +## Schritt 2 — Aktuelle Konfiguration auslesen Das Skript `extract-fw-host-vars.py` liest die vier Conf-Dateien vom Host via SSH, mappt alle Variablen auf die `fw_*`-Ansible-Variablen und schreibt eine fertige @@ -59,7 +79,7 @@ Alle Variablen und ihre Bedeutung stehen in `defaults/main.yml`. --- -## Schritt 2 — Erste Ausrollung (Safety-Guard aktiv) +## Schritt 3 — Erste Ausrollung (Safety-Guard aktiv) Solange `fw_manage_config` nicht auf `true` gesetzt ist (Default: `false`), überschreibt Ansible **keine** bestehenden Config-Dateien. Es werden nur @@ -79,28 +99,12 @@ ansible-playbook ipt-server.yml --limit ${HOSTNAME} --check --diff ansible-playbook ipt-server.yml --limit ${HOSTNAME} ``` -Die Firewall wird dabei **nicht neu gestartet** — die bestehenden Config-Dateien -bleiben unangetastet. +Die host-spezifischen Config-Dateien (`main_ipv4.conf`, `main_ipv6.conf`, +`interfaces_ipv4.conf`, `interfaces_ipv6.conf`) bleiben unangetastet. ---- - -## Schritt 3 — Aktuellen Stand einfrieren - -Bevor Ansible die Config-Dateien überschreibt, wird der aktuelle Zustand der -laufenden Firewall-Rules gesichert. Das ist der Referenzwert für den späteren -Vergleich. - -```bash -HOSTNAME= - -ssh -t ${HOSTNAME} ' - sudo iptables-save | grep -v "^#" | sed "s/\[[0-9]*:[0-9]*\]/[0:0]/g" \ - > /tmp/fw_before_v4.rules - sudo ip6tables-save | grep -v "^#" | sed "s/\[[0-9]*:[0-9]*\]/[0:0]/g" \ - > /tmp/fw_before_v6.rules - echo "Stand gesichert." -' -``` +Ändern sich jedoch Firewall-Skripte, geteilte Conf-Dateien oder Systemd-Units +(typisch bei Erstinstallation), **wird die Firewall neu gestartet** — mit den +bestehenden Config-Dateien, also ohne inhaltliche Regeländerung. --- @@ -197,7 +201,7 @@ Da `fw_manage_config: true` gesetzt ist, werden direkte Änderungen in Absicherung enthält jede von Ansible generierte Config-Datei oben folgenden Hinweis (via `{{ ansible_managed }}`): -``` +```ini # Ansible managed # DO NOT EDIT - changes will be overwritten on the next Ansible run. # Edit host_vars/${HOSTNAME}/ipt-server.yml instead. @@ -208,10 +212,10 @@ Hinweis (via `{{ ansible_managed }}`): ## Zusammenfassung | Schritt | Befehl / Aktion | Wann | -|---|---|---| -| 1 | `extract-fw-host-vars.py` ausführen, Ergebnis prüfen | Einmalig pro Host | -| 2 | Erste Ausrollung (Safety-Guard aktiv) — Skripte + Units | Einmalig pro Host | -| 3 | Aktuellen Rules-Stand auf dem Host sichern | Einmalig pro Host | +| --- | --- | --- | +| 1 | Aktuellen Rules-Stand auf dem Host sichern | Einmalig pro Host | +| 2 | `extract-fw-host-vars.py` ausführen, Ergebnis prüfen | Einmalig pro Host | +| 3 | Erste Ausrollung (Safety-Guard aktiv) — Skripte + Units | Einmalig pro Host | | 4 | `fw_manage_config: true` + `--check --diff` + ausrollen + Rules vergleichen | Einmalig pro Host | | 5 | Alte Rolle deaktivieren, git-Repo auf Host entfernen | Einmalig pro Host | | — | Änderungen: host_vars editieren + `ansible-playbook` | Ab jetzt immer so |