Обзор развертывания Haltdos Community WAF на сервере¶
Предпосылки и предварительные требования¶
Для успешного развертывания приложения необходимо наличие сервера с операционной системой Ubuntu. Требуется наличие прав суперпользователя (root) для выполнения всех операций установки и конфигурации.
Система должна иметь доступ к интернету для загрузки установочных скриптов, пакетов и получения сертификатов. Необходимо заранее определить доменное имя (FQDN), которое будет использоваться для доступа к приложению, а также адрес электронной почты для регистрации в Let's Encrypt.
Приложение требует освобождения портов 80 и 443. Перед установкой необходимо остановить любые службы, использующие эти порты, включая веб-серверы Nginx, Apache2, а также контейнеры Docker, которые могут занимать указанные порты.
Структура файлов и каталогов¶
Конфигурация и данные приложения распределяются по следующим каталогам:
/root/nginx— каталог для конфигурации прокси-сервера и скриптов Docker Compose./data/nginx/user_conf.d— каталог для пользовательских конфигурационных файлов прокси./etc/nginx/sites-available/haltdos.conf— файл конфигурации виртуального хоста Nginx./etc/nginx/sites-enabled/haltdos.conf— ссылка на активную конфигурацию./etc/letsencrypt/live— каталог для хранения SSL-сертификатов, полученных через Let's Encrypt./root/setup.sh— скрипт установки Haltdos Community WAF.
Процесс установки приложения¶
Установка приложения выполняется в несколько этапов, включающих настройку системы, установку базовых пакетов и запуск официального скрипта установки.
- Настройка системного имени хоста (hostname) и добавление записи в файл
/etc/hostsдля корректной работы доменного имени. - Установка необходимых пакетов через менеджер пакетов
apt:curl,nginx,certbot. - Остановка служб
nginxиapache2, если они запущены, для освобождения портов. - Остановка контейнеров Docker, занимающих порты 80 и 443.
- Выход из Docker Swarm, если кластер активен.
- Загрузка и выполнение официального скрипта установки Haltdos Community WAF: Скрипт устанавливает приложение и настраивает его для прослушивания порта 9000.
Прокси серверы¶
Для обеспечения доступа к приложению по протоколу HTTPS используется веб-сервер Nginx в качестве обратного прокси.
Получение SSL-сертификата выполняется с помощью утилиты certbot в режиме standalone. Команда для получения сертификата:
<email> — адрес электронной почты администратора, а <fqdn> — полное доменное имя сервера. Конфигурация Nginx включает два блока server: - Первый блок слушает порт 80 и перенаправляет весь трафик на HTTPS с кодом 301. - Второй блок слушает порт 443 с поддержкой SSL и HTTP/2. Он использует сертификаты из каталога /etc/letsencrypt/live/<fqdn>.
Внутри блока location / настроена проксировка запросов на локальный адрес https://127.0.0.1:9000, где работает приложение Haltdos. Настроена передача заголовков Host, X-Real-IP, X-Forwarded-For и X-Forwarded-Proto. Проверка SSL-сертификата на стороне прокси отключена (proxy_ssl_verify off).
Также в конфигурации Docker Compose для контейнера nginx (образ jonasal/nginx-certbot:latest) настроено монтирование тома nginx_secrets в /etc/letsencrypt и каталога /data/nginx/user_conf.d в /etc/nginx/user_conf.d. Контейнер запускается в режиме network_mode: host.
Запуск, остановка и обновление¶
Управление службой Nginx осуществляется через стандартные команды системного менеджера служб:
- Запуск службы:
- Остановка службы:
- Перезапуск службы:
- Проверка конфигурации перед перезапуском:
Для управления контейнером прокси-сервера, развернутым через Docker Compose в каталоге /root/nginx, используются следующие команды:
- Запуск контейнера в фоновом режиме: Команда выполняется из каталога
/root/nginx.
Приложение Haltdos Community WAF запускается автоматически после выполнения скрипта установки и работает как системная служба или процесс, слушающий порт 9000.