Перейти к содержанию

Обзор развертывания 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 устанавливается с помощью официального скрипта установки, предоставленного разработчиком. Процесс включает загрузку скрипта в корневую директорию и его выполнение.

Для ручной установки приложения:

  1. Перейдите в корневую директорию.

  2. Загрузите скрипт установки с адреса https://binary.haltdos.com/community/waf/setup.sh.

  3. Предоставьте скрипту права на выполнение.

  4. Запустите скрипт для начала установки.

Команды, используемые для этого процесса:

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-сертификатами. Управляются две конфигурации:

  1. System Nginx: Используется при включенном Let's Encrypt. Слушает порты 80 и 443, обеспечивает завершение SSL-сессий (SSL termination) и пересылает запросы во внутреннюю службу Haltdos.

  2. 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. Для запуска контейнера выполните:

cd /root/nginx
docker compose up -d

Детали конфигурации:

  • Режим сети: 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:

    systemctl start nginx
    

  • Включить автозапуск Nginx:

    systemctl enable nginx
    

  • Остановить Nginx:

    systemctl stop nginx
    

Контейнеры Docker:

  • Запустить/Перезапустить контейнер прокси:

    cd /root/nginx
    docker compose up -d
    

  • Остановить контейнер прокси:

    cd /root/nginx
    docker compose down
    

Обновление: Для обновления приложения повторите выполнение скрипта установки, предоставленного разработчиком:

cd /root
./setup.sh
Примечание: При возникновении конфликтов портов в процессе обновления убедитесь в остановке службы Nginx.

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×