Обзор развертывания Haltdos Community WAF на сервере¶
Предварительные требования¶
-
Операционная система: Ubuntu
-
Привилегии: Для установки и конфигурации требуется доступ Root.
-
Доменная зона: Приложение развертывается в зоне
hostkey.in. -
Требуемые порты:
-
Порт
80: Используется для валидации сертификатов Let's Encrypt и перенаправления HTTP. -
Порт
443: Используется для HTTPS-трафика к панели управления приложением. -
Порт
3000: Внутренний порт службы Haltdos Community WAF. -
Зависимости:
-
curl -
nginx -
certbot -
Docker(требуется для контейнера обратного прокси и установки WAF).
Адрес панели управления¶
Полное доменное имя (FQDN) для доступа к панели Haltdos Community WAF имеет следующий формат: haltdos<Server ID>.hostkey.in
Панель доступна по протоколу HTTPS на порту 443.
Структура файлов и директорий¶
В процессе развертывания создаются или используются следующие директории и файлы:
-
/root/nginx: Директория, содержащая Docker Compose-файл для обратного прокси-сервера. -
/root/nginx/compose.yml: Конфигурация Docker Compose для контейнера Nginx-Certbot. -
/etc/nginx/sites-available/haltdos.conf: Конфигурация блока сервера Nginx для приложения. -
/etc/nginx/sites-enabled/haltdos.conf: Ссылка для включения конфигурации сайта Nginx. -
/etc/letsencrypt/live/<FQDN>/: Директория, содержащая SSL-сертификаты Let's Encrypt (fullchain.pem,privkey.pem). -
/data/nginx/nginx-certbot.env: Файл окружения для контейнера Nginx. -
/data/nginx/user_conf.d: Директория для пользовательских настроек, используемых контейнером Nginx. -
/root/setup.sh: Скрипт установщика Haltdos Community WAF.
Процесс установки приложения¶
Haltdos Community WAF устанавливается с помощью официального скрипта установки, предоставленного разработчиком. Процесс включает загрузку скрипта в корневую директорию и его выполнение.
Для ручной установки приложения:
-
Перейдите в корневую директорию.
-
Загрузите скрипт установки с адреса
https://binary.haltdos.com/community/waf/setup.sh. -
Предоставьте скрипту права на выполнение.
-
Запустите скрипт для начала установки.
Команды, используемые для этого процесса:
cd /root
curl -s -k -o setup.sh https://binary.haltdos.com/community/waf/setup.sh
chmod +x setup.sh
./setup.sh
Прокси-серверы¶
В развертывании используется Nginx в качестве обратного прокси-сервера для обработки входящего HTTPS-трафика и управления SSL-сертификатами. Управляются две конфигурации:
-
System Nginx: Используется при включенном Let's Encrypt. Слушает порты 80 и 443, обеспечивает завершение SSL-сессий (SSL termination) и пересылает запросы во внутреннюю службу Haltdos.
-
Docker Nginx-Certbot: Контейнеризованное решение Nginx, используемое для управления SSL-сертификатами и маршрутизации через Docker.
Конфигурация Nginx для системного экземпляра (/etc/nginx/sites-available/haltdos.conf) включает:
-
Перенаправление всего HTTP-трафика (порт 80) на HTTPS.
-
Прослушивание порта 443 с включенным SSL с использованием сертификатов Let's Encrypt.
-
Проксирование запросов во внутреннюю службу по адресу
https://127.0.0.1:9000(как определено в файле задачи) илиhttp://127.0.0.1:3000, в зависимости от конкретной логики маршрутизации в окружении контейнера.
Файл Docker Compose для прокси-сервера (/root/nginx/compose.yml) использует образ jonasal/nginx-certbot:latest.
Контейнеры Docker и их развертывание¶
Контейнер Docker развертывается для управления обратным прокси-сервером Nginx и сертификатами Let's Encrypt.
Образ контейнера: jonasal/nginx-certbot:latest
Команда развертывания: Контейнер управляется через Docker Compose, расположенный по адресу /root/nginx/compose.yml. Для запуска контейнера выполните:
Детали конфигурации:
-
Режим сети: Host
-
Томы (Volumes):
-
nginx_secrets: Маппинг на/etc/letsencrypt(внешний том). -
/data/nginx/user_conf.d: Подключен в/etc/nginx/user_conf.dвнутри контейнера. -
Переменные окружения:
-
CERTBOT_EMAIL: Установлено какhkadm@hostkey.com(или определено в файле.env). -
env_file: Указывает на/data/nginx/nginx-certbot.env.
SSL-сертификаты¶
Для автоматического получения и продления SSL-сертификатов для FQDN Haltdos используется Let's Encrypt.
-
Email для регистрации:
ddevops@hostkey.com -
Местоположение сертификата:
/etc/letsencrypt/live/<haltdos<Server ID>.hostkey.in>/ -
Файлы сертификатов:
-
fullchain.pem -
privkey.pem -
Протоколы сертификатов: Принудительно используются TLSv1.2 и TLSv1.3.
Если включен Let's Encrypt, система гарантирует, что порты 80 и 443 свободны, останавливая конфликтующие службы (Apache, существующие экземпляры Nginx) или контейнеры Docker, занимающие эти порты, перед получением сертификата.
Настройки прав доступа¶
-
Директория конфигурации Nginx:
/etc/nginx/sites-available/haltdos.confсоздается с правами доступа0644. -
Файл Docker Compose:
/root/nginx/compose.ymlустанавливается с правами доступа0644. -
Корневая директория Nginx:
/root/nginxпринадлежит пользователюroot:rootс правами доступа0755. -
Том Docker: Том
nginx_secretsявляется внешним и подключен в/etc/letsencrypt.
Доступные порты для подключения¶
Следующие порты открыты и используются развернутой системой:
| Порт | Протокол | Назначение |
|---|---|---|
| 80 | TCP | HTTP (Перенаправление на HTTPS / Валидация Certbot) |
| 443 | TCP | HTTPS (Публичный доступ к панели Haltdos Community WAF) |
| 3000 | TCP | Внутренний порт службы Haltdos Community WAF |
Запуск, остановка и обновление¶
Системные службы:
-
Запустить Nginx:
-
Включить автозапуск Nginx:
-
Остановить Nginx:
Контейнеры Docker:
-
Запустить/Перезапустить контейнер прокси:
-
Остановить контейнер прокси:
Обновление: Для обновления приложения повторите выполнение скрипта установки, предоставленного разработчиком:
Примечание: При возникновении конфликтов портов в процессе обновления убедитесь в остановке службы Nginx.