Руководство по использованию Nemesida WAF в виде Docker-контейнеров.

Развертывание Docker-контейнера Nemesida WAF

Для развертывания контейнера Nemesida WAF необходимо выполнить следующие действия:

Nemesida WAFNemesida WAF Free

Предназначен для тарифов Light, Business, Enterprise.
На текущий момент доступен образ с версией Nginx 1.22.

1. Загрузите образ, содержащий динамический модуль Nemesida WAF и Nemesida AI MLA:

# docker pull nemesida/nwaf-dyn

2. Создайте каталог для конфигурационных файлов Nemesida WAF:

# mkdir -p /opt/nwaf/waf-config

3. В каталоге конфигурационных файлов создайте файл first-launch:

# touch /opt/nwaf/waf-config/first-launch

4. Запустите контейнер с образом Nemesida WAF, используя команду:

# iptables -t filter -N DOCKER
# docker run --rm -d -v /opt/nwaf/waf-config:/nginx.configs -p 80:80 -p 5672:5672 nemesida/nwaf-dyn

Контейнер самостоятельно завершит работу, создав в каталоге конфигурационных файлов базовый набор файлов конфигурации.

5. Отредактируйте конфигурационные файлы согласно инструкции.

6. Запустите контейнер с образом Nemesida WAF, используя команду:

# iptables -t filter -N DOCKER
# docker run --rm -d -v /opt/nwaf/waf-config:/nginx.configs -p 80:80 -p 5672:5672 nemesida/nwaf-dyn

где:

  • --rm — удаление контейнера после завершения работы;
  • -d — запуск контейнера в фоновом режиме;
  • -v /opt/nwaf/waf-config:/nginx.configs — монтирование каталога с конфигурационными файлами внутрь контейнера.

На текущий момент доступен образ с версией Nginx 1.22.

1. Загрузите образ, содержащий динамический модуль Nemesida WAF:

# docker pull nemesida/nwaf-dyn-free

2. Создайте каталог для конфигурационных файлов Nemesida WAF:

# mkdir -p /opt/nwaf/waf-config

3. В каталоге конфигурационных файлов создайте файл first-launch:

# touch /opt/nwaf/waf-config/first-launch

4. Запустите контейнер с образом Nemesida WAF, используя команду:

# iptables -t filter -N DOCKER
# docker run --rm -d -v /opt/nwaf/waf-config:/nginx.configs -p 80:80 -p 5672:5672 nemesida/nwaf-dyn-free

Контейнер самостоятельно завершит работу, создав в каталоге конфигурационных файлов базовый набор файлов конфигурации.

5. Отредактируйте конфигурационные файлы согласно инструкции.

6. Запустите контейнер с образом Nemesida WAF, используя команду:

# iptables -t filter -N DOCKER
# docker run --rm -d -v /opt/nwaf/waf-config:/nginx.configs -p 80:80 -p 5672:5672 nemesida/nwaf-dyn-free

где:

  • --rm — удаление контейнера после завершения работы;
  • -d — запуск контейнера в фоновом режиме;
  • -v /opt/nwaf/waf-config:/nginx.configs — монтирование каталога с конфигурационными файлами внутрь контейнера.

Обновление образа Nemesida WAF
Nemesida WAFNemesida WAF Free

1. Перед обновлением образа Nemesida WAF проверьте, запущен ли контейнер. Для этого необходимо посмотреть ID контейнера (cтолбец CONTAINER ID), используя команду:

# docker ps -a

2. Если контейнер запущен, остановите его, используя команду:

# docker stop /ID контейнера/

3. При остановленном контейнере удалите образ:

# docker image rm nemesida/nwaf-dyn

4. Загрузите образ, содержащий динамический модуль Nemesida WAF и Nemesida AI MLA:

# docker pull nemesida/nwaf-dyn

5. Запустите контейнер с образом Nemesida WAF, используя команду:

# iptables -t filter -N DOCKER
# docker run --rm -d -v /opt/nwaf/waf-config:/nginx.configs -p 80:80 -p 5672:5672 nemesida/nwaf-dyn

После обновления предыдущие версии конфигурационных файлов будут размещены в подкаталоге old.

1. Перед обновлением образа Nemesida WAF проверьте, запущен ли контейнер. Для этого необходимо посмотреть ID контейнера (cтолбец CONTAINER ID), используя команду:

# docker ps -a

2. Если контейнер запущен, остановите его, используя команду:

# docker stop /ID контейнера/

3. При остановленном контейнере удалите образ:

# docker image rm nemesida/nwaf-dyn-free

4. Загрузите образ, содержащий динамический модуль Nemesida WAF:

# docker pull nemesida/nwaf-dyn-free

5. Запустите контейнер с образом Nemesida WAF, используя команду:

# iptables -t filter -N DOCKER
# docker run --rm -d -v /opt/nwaf/waf-config:/nginx.configs -p 80:80 -p 5672:5672 nemesida/nwaf-dyn-free

После обновления предыдущие версии конфигурационных файлов будут размещены в подкаталоге old.

Развертывание Docker-контейнера Nemesida AI MLC

Предназначен для тарифов Light, Business, Enterprise.

Для развертывания контейнера Nemesida AI MLC необходимо выполнить следующие действия:

1. Загрузите образ, содержащий модуль Nemesida AI MLC:

# docker pull nemesida/nwaf-mlc

2. Создайте каталог для конфигурационных файлов Nemesida AI MLC:

# mkdir -p /opt/nwaf/mlc-config

3. В каталоге конфигурационных файлов создайте файл first-launch:

# touch /opt/nwaf/mlc-config/first-launch

4. Запустите контейнер с образом Nemesida AI MLC, используя команду:

# iptables -t filter -N DOCKER
# docker run --rm -d -v /opt/nwaf/mlc-config:/nwaf_mlc.configs nemesida/nwaf-mlc

Контейнер самостоятельно завершит работу, создав в каталоге конфигурационных файлов базовый набор файлов конфигурации.

5. Отредактируйте конфигурационные файлы согласно инструкции.

Значения для параметра rmq_host хранятся в файле конфигурации контейнера с динамическим модулем Nemesida WAF /opt/nwaf/waf-config/rabbitmq_password.

6. Запустите контейнер с образом Nemesida WAF, используя команду:

# iptables -t filter -N DOCKER
# docker run --rm -d -v /opt/nwaf/mlc-config:/nwaf_mlc.configs nemesida/nwaf-mlc

где:

  • --rm — удаление контейнера после завершения работы;
  • -d — запуск контейнера в фоновом режиме;
  • -v /opt/nwaf/mlc-config:/nwaf_mlc.configs nemesida/nwaf-mlc — монтирование каталога с конфигурационными файлами внутрь контейнера.

Обновление образа Nemesida AI MLC

1. Перед обновлением образа Nemesida AI MLC проверьте, запущен ли контейнер. Для этого необходимо посмотреть ID контейнера (cтолбец CONTAINER ID), используя команду:

# docker ps -a

2. Если контейнер запущен, остановите его, используя команду:

# docker stop /ID контейнера/

3. При остановленном контейнере удалите образ:

# docker image rm nemesida/nwaf-mlc

4. Загрузите образ, содержащий модуль Nemesida AI MLC:

# docker pull nemesida/nwaf-mlc

5. Запустите контейнер с образом Nemesida WAF, используя команду:

# iptables -t filter -N DOCKER
# docker run --rm -d -v /opt/nwaf/mlc-config:/nwaf_mlc.configs nemesida/nwaf-mlc

После обновления предыдущие версии конфигурационных файлов будут размещены в подкаталоге old.

Развертывание Docker-контейнера Nemesida WAF API и Личный кабинет

Предназначен для всех тарифов.

Для развертывания контейнера Nemesida WAF API и Личный кабинет необходимо выполнить следующие действия:

Полный образБез PostgreSQL
1. Загрузите образ, содержащий модули Nemesida WAF API, Личный кабинет и СУБД PostgreSQL:

# docker pull nemesida/nwaf-web

2. Создайте два каталога:

  • Для конфигурационных файлов (например, api-cab-config):
    # mkdir -p /opt/nwaf/api-cab-config
  • Для базы данных (например, api-cab-base):
    # mkdir /opt/nwaf/api-cab-base

3. В каталоге конфигурационных файлов создайте файл first-launch:

# touch /opt/nwaf/api-cab-config/first-launch

4. Запустите контейнер с образом Nemesida WAF API и Личный кабинет, используя команды:

# iptables -t filter -N DOCKER
# docker run --rm -d -v /opt/nwaf/api-cab-config:/nwaf-api -v /opt/nwaf/api-cab-base:/var/lib/postgresql -p 8080:8080 -p 8090:80 nemesida/nwaf-web

где:

  • --rm — удаление контейнера после завершения работы;
  • -d — запуск контейнера в фоновом режиме;
  • -v /opt/nwaf/api-cab-config:/nwaf-api — монтирование каталога с конфигурационными файлами внутрь контейнера;
  • -v /opt/nwaf/api-cab-base:/var/lib/postgresql — монтирование каталога с базой данных внутрь контейнера;
  • -p 8080:8080 — проброс порта 8080 контейнера на внешний порт 8080;
  • -p 8090:80 — проброс порта 80 контейнера на внешний порт 8090.

5. Разрешите доступ на чтение для всех для каталога api-cab-config:

# chmod -R 0555 /opt/nwaf/api-cab-config

Посмотреть ID контейнера (cтолбец CONTAINER ID) можно командой:

# docker ps -a

6. Запустите команду миграции и создания учётной записи администратора и следуйте указаниям скрипта:

# docker exec -ti /ID контейнера/ bash -c "bash /opt/migrate.sh"

Остановите контейнер командой:

# docker stop /ID контейнера/

7. Внесите изменения в конфигурационные файлы согласно инструкциям из руководства Nemesida WAF API и Личный кабинет.

8. Для запуска контейнера выполните следующие команды:

# iptables -t filter -N DOCKER
# docker run --rm -d -v /opt/nwaf/api-cab-config:/nwaf-api -v /opt/nwaf/api-cab-base:/var/lib/postgresql -p 8080:8080 -p 8090:80 nemesida/nwaf-web

где:

  • --rm — удаление контейнера после завершения работы;
  • -d — запуск контейнера в фоновом режиме;
  • -v /opt/nwaf/api-cab-config:/nwaf-api — монтирование каталога с конфигурационными файлами внутрь контейнера;
  • -v /opt/nwaf/api-cab-base:/var/lib/postgresql — монтирование каталога с базой данных внутрь контейнера;
  • -p 8080:8080 — проброс порта 8080 контейнера на внешний порт 8080;
  • -p 8090:80 — проброс порта 80 контейнера на внешний порт 8090.

1. Загрузите образ, содержащий модули Nemesida WAF API и Личный кабинет:

# docker pull nemesida/nwaf-web-pg

2. Создайте каталог для конфигурационных файлов:

# mkdir -p /opt/nwaf/api-cab-config

3. В каталоге конфигурационных файлов создайте файл first-launch:

# touch /opt/nwaf/api-cab-config/first-launch

4. Запустите контейнер с образом Nemesida WAF API и Личный кабинет, используя команды:

# iptables -t filter -N DOCKER
# docker run --rm -d -v /opt/nwaf/api-cab-config:/nwaf-api -p 8080:8080 -p 8090:80 nemesida/nwaf-web-pg

где:

  • --rm — удаление контейнера после завершения работы;
  • -d — запуск контейнера в фоновом режиме;
  • -v /opt/nwaf/api-cab-config:/nwaf-api — монтирование каталога с конфигурационными файлами внутрь контейнера;
  • -p 8080:8080 — проброс порта 8080 контейнера на внешний порт 8080;
  • -p 8090:80 — проброс порта 80 контейнера на внешний порт 8090.

5. Создайте БД, пользователя и пароль для подключения модулей Nemesida WAF API и Личный кабинет:

# su - postgres -c "psql -c \"CREATE DATABASE waf;\""
# su - postgres -c "psql -c \"CREATE ROLE nw_api PASSWORD 'YOUR_PASSWORD';\""
# su - postgres -c "psql -c \"GRANT ALL ON DATABASE waf to nw_api;\""
# su - postgres -c "psql -c \"ALTER ROLE nw_api WITH LOGIN;\""

# su - postgres -c "psql -c \"CREATE DATABASE cabinet;\""
# su - postgres -c "psql -c \"CREATE ROLE nw_cabinet PASSWORD 'YOUR_PASSWORD';\""
# su - postgres -c "psql -c \"GRANT ALL ON DATABASE cabinet to nw_cabinet;\""
# su - postgres -c "psql -c \"ALTER ROLE nw_cabinet WITH LOGIN;\""

6. Разрешите внешние подключения к БД, внеся изменения в файл pg_hba.conf:

# IPv4 local connections:
host    all             all             0.0.0.0/0            md5

7. Разрешите доступ на чтение для всех для каталога api-cab-config:

# chmod -R 0555 /opt/nwaf/api-cab-config

8. Внесите изменения в конфигурационные файлы согласно инструкциям из руководства Nemesida WAF API и Личный кабинет.

Посмотреть ID контейнера (cтолбец CONTAINER ID) можно командой:

# docker ps -a

9. Запустите команду миграции и создания учётной записи администратора и следуйте указаниям скрипта:

# docker exec -ti /ID контейнера/ bash -c "bash /opt/migrate.sh"

10. Остановите контейнер командой:

# docker stop /ID контейнера/

11. Для запуска контейнера выполните следующие команды:

# iptables -t filter -N DOCKER
# docker run --rm -d -v /opt/nwaf/api-cab-config:/nwaf-api -p 8080:8080 -p 8090:80 nemesida/nwaf-web-pg

где:

  • --rm — удаление контейнера после завершения работы;
  • -d — запуск контейнера в фоновом режиме;
  • -v /opt/nwaf/api-cab-config:/nwaf-api — монтирование каталога с конфигурационными файлами внутрь контейнера;
  • -p 8080:8080 — проброс порта 8080 контейнера на внешний порт 8080;
  • -p 8090:80 — проброс порта 80 контейнера на внешний порт 8090.

При обращении к веб-интерфейсу модуля Личный кабинет необходимо добавить порт 8090. Например: http://cabinet.example.com:8090/waf/personal

Обновление образов Nemesida WAF API и Личный кабинет
Перед обновлением образов Nemesida WAF API и Личный кабинет проверьте, запущен ли контейнер. Для этого необходимо посмотреть ID контейнера (cтолбец CONTAINER ID), используя команду:

# docker ps -a

Если контейнер запущен, остановите его, используя команду:

# docker stop /ID контейнера/
Полный образБез PostgreSQL

1. При остановленном контейнере удалите образ:

# docker image rm nemesida/nwaf-web

2. Загрузите образ, содержащий модули Nemesida WAF API и Личный кабинет:

# docker pull nemesida/nwaf-web

3. Запустите контейнер с образом Nemesida WAF API и Личный кабинет, используя команду:

# iptables -t filter -N DOCKER
# docker run --rm -d -v /opt/nwaf/api-cab-config:/nwaf-api -v /opt/nwaf/api-cab-base:/var/lib/postgresql -p 8080:8080 -p 8090:80 nemesida/nwaf-web
1. При остановленном контейнере удалите образ:

# docker image rm nemesida/nwaf-web-pg

2. Загрузите образ, содержащий модули Nemesida WAF API и Личный кабинет:

# docker pull nemesida/nwaf-web-pg

3. Запустите контейнер с образом Nemesida WAF API и Личный кабинет, используя команду:

# iptables -t filter -N DOCKER
# docker run --rm -d -v /opt/nwaf/api-cab-config:/nwaf-api -p 8080:8080 -p 8090:80 nemesida/nwaf-web-pg

Развертывание Docker-контейнера Nemesida WAF Scanner

Предназначен для тарифа Enterprise.
Для корректной работы модуля Nemesida WAF Scanner необходимо предоставить доступ к веб-приложению в обход Nemesida WAF.

Для развертывания контейнера Nemesida WAF Scanner необходимо выполнить следующие действия:

1. Загрузите образ, содержащий модуль Nemesida WAF Scanner:

# docker pull nemesida/nwaf-scanner

2. Создайте каталог для конфигурационных файлов Nemesida WAF Scanner:

# mkdir -p /opt/nwaf/nwaf-scanner

3. В каталоге конфигурационных файлов создайте файл first-launch:

# touch /opt/nwaf/nwaf-scanner/first-launch

4. Запустите контейнер с образом Nemesida WAF Scanner, используя команды:

# iptables -t filter -N DOCKER
# docker run --rm -d -v /opt/nwaf/nwaf-scanner/:/nwaf-scanner nemesida/nwaf-scanner

где:

  • --rm — удаление контейнера после завершения работы;
  • -d — запуск контейнера в фоновом режиме;
  • -v /opt/nwaf/nwaf-scanner:/nwaf-scanner — монтирование каталога с конфигурационными файлами внутрь контейнера.

Контейнер самостоятельно завершит работу, создав в каталоге конфигурационных файлов базовый набор файлов конфигурации.

5. Внесите изменения в конфигурационные файлы согласно инструкции.

Посмотреть ID контейнера (cтолбец CONTAINER ID) можно командой:

# docker ps -a

6. Остановите контейнер с модулями Nemesida WAF API и Личный кабинет командой:

# docker stop /ID контейнера/

7. Внесите изменения в конфигурационные файлы подключения к БД модулей Nemesida WAF API и Личный кабинет для взаимодействия с Nemesida WAF Scanner:

  • В файле /opt/nwaf/api-cab-config/postgresql/main/postgresql.conf:
    listen_addresses = '*'
  • В файле /opt/nwaf/api-cab-config/postgresql/main/pg_hba.conf:
    host    all             all             0.0.0.0/0            md5

8. Для запуска контейнеров с модулями Nemesida WAF API, Личный кабинет и Nemesida WAF Scanner выполните следующие команды:

# iptables -t filter -N DOCKER
# docker run --rm -d -v /opt/nwaf/api-cab-config:/nwaf-api -v /opt/nwaf/api-cab-base:/var/lib/postgresql -p 8080:8080 -p 8090:80 -p 5432:5432 nemesida/nwaf-web

где:

  • --rm — удаление контейнера после завершения работы;
  • -d — запуск контейнера в фоновом режиме;
  • -v /opt/nwaf/api-cab-config:/nwaf-api — монтирование каталога с конфигурационными файлами внутрь контейнера;
  • -v /opt/nwaf/api-cab-base:/var/lib/postgresql — монтирование каталога с базой данных внутрь контейнера;
  • -p 8080:8080 — проброс порта 8080 контейнера на внешний порт 8080;
  • -p 8090:80 — проброс порта 80 контейнера на внешний порт 8090;
  • -p 5432:5432 — проброс порта БД 5432 контейнера на внешний порт 5432.
# docker run --rm -d -v /opt/nwaf/nwaf-scanner/:/nwaf-scanner nemesida/nwaf-scanner

где:

  • --rm — удаление контейнера после завершения работы;
  • -d — запуск контейнера в фоновом режиме;
  • -v /opt/nwaf/nwaf-scanner:/nwaf-scanner — монтирование каталога с конфигурационными файлами внутрь контейнера.

9. Для запуска процесса сканирования выполните команду:

docker exec -ti /ID контейнера/ bash -c "/usr/bin/nws"

Обновление образа Nemesida WAF Scanner
1. Перед обновлением образа Nemesida WAF Scanner проверьте, запущен ли контейнер. Для этого необходимо посмотреть ID контейнера (cтолбец CONTAINER ID), используя команду:

# docker ps -a

2. Если контейнер запущен, остановите его, используя команду:

# docker stop /ID контейнера/

3. При остановленном контейнере удалите образ:

# docker image rm nemesida/nwaf-scanner

4. Загрузите образ, содержащий модуль Nemesida WAF Scanner:

# docker pull nemesida/nwaf-scanner

5. Запустите контейнер с образом Nemesida WAF Scanner, используя команду:

# iptables -t filter -N DOCKER
# docker run --rm -d -v /opt/nwaf/nwaf-scanner/:/nwaf-scanner nemesida/nwaf-scanner 

Развертывание Docker-контейнеров при помощи Docker Compose
Для развертывания контейнеров с модулями Nemesida WAF, Nemesida AI MLC, Nemesida WAF API и Личный кабинет необходимо выполнить следующие действия:

1. Установитe Docker Compose;

2. Загрузите файл docker-compose.yml с параметрами запуска;

3. Создайте каталоги для конфигурационных файлов Nemesida WAF относительно загруженного docker-compose.yml:

# mkdir -p /opt/nwaf/{waf-config,mlc-config,api-cab-config,api-cab-base}

4. В каталогах конфигурационных файлов создайте файл first-launch:

# touch /opt/nwaf/{waf-config,mlc-config,api-cab-config}/first-launch

5. Запустите Docker Compose, используя команды:

# iptables -t filter -N DOCKER
# docker-compose up --build -d

6. Для каталога nwaf-api-cab-config разрешите доступ на чтение для всех:

# chmod -R 0555 /opt/nwaf/api-cab-config

7. Выполните миграции и создайте пользователя для модуля Личный кабинет:

# docker-compose exec nwaf-web "/bin/bash" "/opt/migrate.sh"

8. Остановите Docker Compose:

# docker-compose down

9. Внесите изменения в конфигурационные файлы согласно инструкции из руководства Nemesida WAF, Nemesida AI MLC, Nemesida WAF API и Личный кабинет;

10. Запустите Docker Compose, используя команды:

# iptables -t filter -N DOCKER
# docker-compose up -d