Docker-образы | Немезида ВАФ

Руководство по использованию Немезида ВАФ в виде Docker-контейнеров.

Развертывание фильтрующей ноды

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

Коммерческая версияНекоммерческая версия

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

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

# docker pull nemesida/nwaf-dyn

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

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

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

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

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

# 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. Запустите контейнер с образом динамического модуля, используя команду:

# 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. Загрузите образ, содержащий динамический модуль:

# docker pull nemesida/nwaf-dyn-ce

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

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

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

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

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

# 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-ce

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

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

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

# 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-ce

где:

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

Обновление образа
Коммерческая версияНекоммерческая версия

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

# docker ps -a

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

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

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

# docker image rm nemesida/nwaf-dyn

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

# docker pull nemesida/nwaf-dyn

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

# 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. Перед обновлением образа с фильтрующей нодой проверьте, запущен ли контейнер. Для этого необходимо посмотреть ID контейнера (cтолбец CONTAINER ID), используя команду:

# docker ps -a

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

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

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

# docker image rm nemesida/nwaf-dyn-ce

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

# docker pull nemesida/nwaf-dyn-ce

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

# 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-ce

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

Развертывание Nemesida AI MLC

Используется только в коммерческой версии Немезида ВАФ.

Для запуска контейнера 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 хранятся в файле конфигурации контейнера с динамическим модулем /opt/nwaf/waf-config/rabbitmq_password.

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

# 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 — монтирование каталога с конфигурационными файлами внутрь контейнера.

Обновление образа

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. Запустите контейнер с образом динамического модуля, используя команду:

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

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

Развертывание Nemesida WAF WEB

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

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

С PostgreSQLБез 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 WEB, используя команды:

# 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

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"

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

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

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

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

# 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 WEB:

# 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 WEB, используя команды:

# 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

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

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 и Личный кабинет.

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

# 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

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

# docker ps -a

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

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

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

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

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

# 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 WEB проверьте, запущен ли контейнер. Для этого необходимо посмотреть ID контейнера (cтолбец CONTAINER ID), используя команду:

# docker ps -a

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

# docker stop /ID контейнера/
С PostgreSQLБез PostgreSQL

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

# docker image rm nemesida/nwaf-web

2. Загрузите образ Nemesida WAF WEB:

# docker pull nemesida/nwaf-web

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

# 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 WEB:

# docker pull nemesida/nwaf-web-pg

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

# 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

Развертывание Nemesida WAF Scanner

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

Для запуска контейнера 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 WEB командой:

# 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 WEB и 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"

Обновление образа
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 Compose
Для запуска контейнеров с динамическим модулем, Nemesida AI MLC и Nemesida WAF WEB необходимо выполнить следующие действия:

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