Update migration guide: add step to freeze current firewall rules and create ipt-server.yml for a.ns.oopen.de with initial configuration
This commit is contained in:
@@ -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/<hostname>/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
|
||||||
@@ -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=<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,
|
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
|
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`),
|
Solange `fw_manage_config` nicht auf `true` gesetzt ist (Default: `false`),
|
||||||
überschreibt Ansible **keine** bestehenden Config-Dateien. Es werden nur
|
ü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}
|
ansible-playbook ipt-server.yml --limit ${HOSTNAME}
|
||||||
```
|
```
|
||||||
|
|
||||||
Die Firewall wird dabei **nicht neu gestartet** — die bestehenden Config-Dateien
|
Die host-spezifischen Config-Dateien (`main_ipv4.conf`, `main_ipv6.conf`,
|
||||||
bleiben unangetastet.
|
`interfaces_ipv4.conf`, `interfaces_ipv6.conf`) bleiben unangetastet.
|
||||||
|
|
||||||
---
|
Ändern sich jedoch Firewall-Skripte, geteilte Conf-Dateien oder Systemd-Units
|
||||||
|
(typisch bei Erstinstallation), **wird die Firewall neu gestartet** — mit den
|
||||||
## Schritt 3 — Aktuellen Stand einfrieren
|
bestehenden Config-Dateien, also ohne inhaltliche Regeländerung.
|
||||||
|
|
||||||
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=<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."
|
|
||||||
'
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -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
|
Absicherung enthält jede von Ansible generierte Config-Datei oben folgenden
|
||||||
Hinweis (via `{{ ansible_managed }}`):
|
Hinweis (via `{{ ansible_managed }}`):
|
||||||
|
|
||||||
```
|
```ini
|
||||||
# Ansible managed
|
# Ansible managed
|
||||||
# DO NOT EDIT - changes will be overwritten on the next Ansible run.
|
# DO NOT EDIT - changes will be overwritten on the next Ansible run.
|
||||||
# Edit host_vars/${HOSTNAME}/ipt-server.yml instead.
|
# Edit host_vars/${HOSTNAME}/ipt-server.yml instead.
|
||||||
@@ -208,10 +212,10 @@ Hinweis (via `{{ ansible_managed }}`):
|
|||||||
## Zusammenfassung
|
## Zusammenfassung
|
||||||
|
|
||||||
| Schritt | Befehl / Aktion | Wann |
|
| Schritt | Befehl / Aktion | Wann |
|
||||||
|---|---|---|
|
| --- | --- | --- |
|
||||||
| 1 | `extract-fw-host-vars.py` ausführen, Ergebnis prüfen | Einmalig pro Host |
|
| 1 | Aktuellen Rules-Stand auf dem Host sichern | Einmalig pro Host |
|
||||||
| 2 | Erste Ausrollung (Safety-Guard aktiv) — Skripte + Units | Einmalig pro Host |
|
| 2 | `extract-fw-host-vars.py` ausführen, Ergebnis prüfen | Einmalig pro Host |
|
||||||
| 3 | Aktuellen Rules-Stand auf dem Host sichern | 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 |
|
| 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 |
|
| 5 | Alte Rolle deaktivieren, git-Repo auf Host entfernen | Einmalig pro Host |
|
||||||
| — | Änderungen: host_vars editieren + `ansible-playbook` | Ab jetzt immer so |
|
| — | Änderungen: host_vars editieren + `ansible-playbook` | Ab jetzt immer so |
|
||||||
|
|||||||
Reference in New Issue
Block a user