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

Если после запуска контейнера возникают проблемы c запуском сервисов, то добавьте опцию --ulimit nofile=65536:65536 в команду запуска контейнера.

Пример:

# docker run --rm --ulimit nofile=65536:65536 -d -v /opt/nwaf/waf-config:/nginx.configs -p 80:80 -p 5672:5672 nemesida/nwaf-dyn

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

Если после запуска контейнера возникают проблемы c запуском сервисов, то добавьте опцию --ulimit nofile=65536:65536 в команду запуска контейнера.

Пример:

# docker run --rm --ulimit nofile=65536:65536 -d -v /opt/nwaf/waf-config:/nginx.configs -p 80:80 -p 5672:5672 nemesida/nwaf-dyn

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

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

Если после запуска контейнера возникают проблемы c запуском сервисов, то добавьте опцию --ulimit nofile=65536:65536 в команду запуска контейнера.

Пример:

# docker run --rm --ulimit nofile=65536:65536 -d -v /opt/nwaf/mlc-config:/nwaf_mlc.configs nemesida/nwaf-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. Запустите контейнер с образом динамического модуля, используя команду:

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

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

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

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

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

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

# docker pull nemesida/nwaf-api

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

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

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

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

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

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

5. Остановите контейнер с образом Nemesida WAF API для создания базового набора файлов конфигурации:

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

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

# docker ps -a

6. Установите PostgreSQL на отдельном сервере и создайте БД, пользователя и пароль для подключения компонента 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 waf -c \"GRANT ALL ON ALL TABLES IN SCHEMA public TO nw_api;\""
# su - postgres -c "psql waf -c \"GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO nw_api;\""
# su - postgres -c "psql waf -c \"GRANT CREATE ON SCHEMA public TO nw_api;\""

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

Пример:

# IPv4 local connections:
host    all             all             10.1.1.0/24            md5

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

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

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

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

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

где:

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

Если после запуска контейнера возникают проблемы c запуском сервисов, то добавьте опцию --ulimit nofile=65536:65536 в команду запуска контейнера.

Пример:

# docker run --rm --ulimit nofile=65536:65536 -d -v /opt/nwaf/nwaf-api:/nwaf-api -p 8080:8080 nemesida/nwaf-api

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

# docker ps -a

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

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

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

# docker image rm nemesida/nwaf-api

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

# docker pull nemesida/nwaf-api

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

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

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

Развертывание Личного кабинета

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

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

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

# docker pull nemesida/nwaf-cabinet

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

# mkdir -p /opt/nwaf/nwaf-cabinet

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

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

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

# iptables -t filter -N DOCKER
# docker run --rm -d -v /opt/nwaf/nwaf-cabinet:/nwaf-cabinet -p 8090:80 nemesida/nwaf-cabinet

5. Остановите контейнер с образом Личный кабинет для создания базового набора файлов конфигурации:

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

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

# docker ps -a

6. Установите PostgreSQL на отдельном сервере и создайте БД, пользователя и пароль для подключения компонента Личный каинет:

# 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;\""
# su - postgres -c "psql cabinet -c \"GRANT ALL ON ALL TABLES IN SCHEMA public TO nw_cabinet;\""
# su - postgres -c "psql cabinet -c \"GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO nw_cabinet;\""
# su - postgres -c "psql cabinet -c \"GRANT CREATE ON SCHEMA public TO nw_cabinet;\""

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

Пример:

# IPv4 local connections:
host    all             all             10.1.1.0/24            md5

8. Разрешите доступ на чтение для всех для каталога nwaf-cabinet:

# chmod -R 0555 /opt/nwaf/nwaf-cabinet

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

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

# iptables -t filter -N DOCKER
# docker run --rm -d -v /opt/nwaf/nwaf-cabinet:/nwaf-cabinet -p 8090:80 nemesida/nwaf-cabinet

где:

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

Если после запуска контейнера возникают проблемы c запуском сервисов, то добавьте опцию --ulimit nofile=65536:65536 в команду запуска контейнера.

Пример:

# docker run --rm --ulimit nofile=65536:65536 -d -v /opt/nwaf/nwaf-cabinet:/nwaf-cabinet -p 8090:80 nemesida/nwaf-cabinet

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

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

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

# docker ps -a

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

# docker ps -a

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

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

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

# docker image rm nemesida/nwaf-cabinet

2. Загрузите образ Личный кабинет

# docker pull nemesida/nwaf-cabinet

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

# iptables -t filter -N DOCKER
# docker run --rm -d -v /opt/nwaf/nwaf-cabinet:/nwaf-cabinet -p 8090:80 nemesida/nwaf-cabinet

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

Развертывание 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 API и Личный кабинет командой:

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

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

# docker ps -a

7. Разрешите внешние подключения к БД, используемой компонентами Nemesida WAF API и Личный кабинет, внеся изменения в файл pg_hba.conf.

Пример:

host    all             all             10.1.1.0/24            md5

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

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

где:

  • --rm — удаление контейнера после завершения работы;
  • -d — запуск контейнера в фоновом режиме;
  • -v /opt/nwaf/nwaf-api:/nwaf-api — монтирование каталога с конфигурационными файлами внутрь контейнера;
  • -p 8080:8080 — проброс порта 8080 контейнера на внешний порт 8080.
# iptables -t filter -N DOCKER
# docker run --rm -d -v /opt/nwaf/nwaf-cabinet:/nwaf-cabinet -p 8090:80 nemesida/nwaf-cabinet

где:

  • --rm — удаление контейнера после завершения работы;
  • -d — запуск контейнера в фоновом режиме;
  • -v /opt/nwaf/nwaf-cabinet:/nwaf-cabinet — монтирование каталога с конфигурационными файлами внутрь контейнера;
  • -p 8090:80 — проброс порта 80 контейнера на внешний порт 8090.
# 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 — монтирование каталога с конфигурационными файлами внутрь контейнера.

Если после запуска контейнера возникают проблемы c запуском сервисов, то добавьте опцию --ulimit nofile=65536:65536 в команду запуска контейнера.

Пример:

# docker run --rm --ulimit nofile=65536:65536 -d -v /opt/nwaf/nwaf-scanner/:/nwaf-scanner nemesida/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,nwaf-api,nwaf-cabinet}

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

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

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

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

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

# chmod -R 0555 /opt/nwaf/nwaf-api
# chmod -R 0555 /opt/nwaf/nwaf-cabinet

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

# docker-compose exec nwaf-cabinet "/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

Если после запуска контейнеров возникают проблемы c запуском сервисов, то внесите изменения в docker-compose.yml, добавив секцию ulimits в соответствующий раздел нужного контейнера.

Пример:

  nwaf-dyn:
    image: nemesida/nwaf-dyn
    container_name: nwaf-dyn
    ports:
      - 80:80
      - 5672:5672
    volumes:
      - /opt/nwaf/waf-config:/nginx.configs
    ulimits:
      nofile:
        soft: "65536"
        hard: "65536"