Skip to main content

Развертывание и установка всей платформы(wip)

Ручные действия при настройки платформы

1. Настройка DefectTrack

  • a. Заведение учетных записей
  • b. Создание объектов анализа
  • c. Настройка проверок

2. Добавление переменных в Vault

  • a. DT_HOST - адресс defecttrack
  • b. DT_TOKEN - токен defecttrack

3. Настройка переменных в GitLab

a. OSINT
  • i. CI_VAULT_TOKEN — токен Vault
  • ii. SECRET_PATH — путь до переменных в Vault (он же Secret)
  • iii. VAULT_ADDR — адрес Vault
b. EVM
  • i. CI_VAULT_TOKEN — токен Vault
  • ii. VAULT_ADDR — адрес Vault
  • iii. SECRET_PATH — путь до переменных в Vault (он же Secret)
  • iv. RSA_KEY — SSH-ключ от машины с Vuln Scan
  • v. VMS_SCANNER — адрес машины с Vuln Scan

4. Настройка Openvas

  • a. Генерация ключа для GitLab
  • b. Установка gvm-tools
  • c. Установка Docker
  • d. Установка Docker Compose
  • e. Поднятие Docker Compose

5. Настройка панели в Grafana

  • a. Импорт наших дашбордов из JSON

  • b. Редактирование дашборда EVM

    • i. Подправить const url
      • Token
      • ID проекта
      • Ссылка на GitLab
  • c. Редактирование дашборда OSINT

    • i. Подправить const url

      • Token
      • ID проекта
      • Ссылка на GitLab
    • ii. Настройка связи с DT Postgres

      Создание Data Source

      • url — defectdojo-cluster-db.defectdojo.svc.cluster.local:5432
      • db username (брать из секретов Lens)
      • db password (брать из секретов Lens)
      • TLS/SSL Mode = require

      Указание источника в дашборде

      • products — dojo_product
      • all hosts — dojo_endpoint

6. Настройка приостановки сканирования

  • a. Заводим новый манифест в Kubernetes

    • i. ServiceAccount — необходим для того, чтобы контейнер мог обращаться к Kubernetes с особыми привилегиями
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: service-pause-scans
      namespace: gitlab
    
    • ii. Role — создает роль, позволяющую взаимодействовать с подами внутри namespace GitLab
    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: service-pause-scans
      namespace: gitlab
    rules:
      - verbs:
          - '*'
        apiGroups:
          - ''
        resources:
          - '*'
    
    • iii. RoleBinding — связывает наш ServiceAccount с созданной ролью
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: service-pause-scans
      namespace: gitlab
    subjects:
      - kind: ServiceAccount
        name: service-pause-scans
        namespace: gitlab
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: Role
      name: service-pause-scans
    
    • iv. Pod - cоздание контейнера с приостановкой сканирования. VMS API (необходимо переделать на деплоймент)
    apiVersion: v1
    kind: Pod
    metadata:
      name: service-pause-scans
      namespace: gitlab
      labels:
        app: service-pause-runner
    spec:
      containers:
        - name: service
          image: nexus.vms.solidlab.ru:8443/pausetest
          ports:
            - name: api
              containerPort: 8085
              protocol: TCP
      serviceAccount: service-pause-scans
    
    • v. Service - Создание сервиса, чтобы можно было обратиться к порту 8085
    apiVersion: v1
    kind: Service
    metadata:
      name: service-pause-scans
      namespace: gitlab
    spec:
      ports:
        - protocol: TCP
          port: 8085
          targetPort: 8085
      selector:
        app: service-pause-runner
    
    • vi. Ingress - Настройка Ingress для доступа из Grafana к VMS_API (доменное имя необходимо редактировать в зависимости от тенанта)
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: service-pause-scans
      namespace: gitlab
    spec:
      ingressClassName: nginx
      rules:
        - host: kubernetes-grafana.vms-dev.test
          http:
            paths:
              - path: /scanspauseapi
                pathType: Prefix
                backend:
                  service:
                    name: service-pause-scans
                    port:
                      number: 8085
    
  • b. Подправить const url

7. Тестирование

  • a. Запуск OSINT
  • b. Запуск EVM
  • c. Отслеживание выполнения piplinов в GitLab
  • d. Проверка Приостановки сканирования
  • e. Проверка Создания тестов в Defect track и смены их статусов
  • f. Проверка Результатов в Defect track

Публикация сервисов из k8s

Редактирование конфигурации Nginx Proxy Manager

  1. Открываем и редактируем .conf файл вручную через vimnanoemacs и т.п.

  2. Подправляем секцию location /

    Исходная конфигурация:

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Scheme $scheme;
        proxy_set_header X-Forwarded-Proto  $scheme;
        proxy_set_header X-Forwarded-For    $remote_addr;
        proxy_set_header X-Real-IP          $remote_addr;
    
        proxy_pass       https://defecttrack.vms-t1.test:443;
    
        # Asset Caching
        include conf.d/include/assets.conf;
    }
    
  3. Заменяем Host на правильный, так как иначе Ingress не поймёт запрос и вернёт ошибку 400.

    proxy_set_header Host defecttrack.vms-t1.test;
    
  4. Оригинальную строку комментируем:

    #proxy_set_header Host $host;
    
  5. Отключаем кэширование, так как оно может вызывать проблемы.

    • Добавляем комментарий перед include force-ssl.conf:
      # Force SSL
      # include conf.d/include/force-ssl.conf;
      
    • Ищем еще один asset caching, но уже выше location:
      # Asset Caching
      include conf.d/include/assets.conf;
      
    • Комментируем его, чтобы не мешал.
  6. Перезапускаем контейнер с Nginx Proxy Manager (или заставляем Nginx перечитать конфигурацию в контейнере).

Настройка Nginx Proxy Manager завершена. Однако при попытке входа может возникнуть CSRF-ошибка. Исправляем её через Lens.

Исправление CSRF-ошибки через Lens

  1. В Lens открываем config -> Config Maps.

  2. Устанавливаем namespace = defectdojo.

  3. Ищем ConfigMap с названием defectdojo и редактируем его.

  4. Добавляем в самый низ DD_CSRF_TRUSTED_ORIGINS:

    DD_CSRF_TRUSTED_ORIGINS: >-
        https://defectdojo.default.local,https://10.11.1.166,https://10.11.1.167,https://10.11.1.117,
        https://10.11.1.231,https://10.11.1.235,https://10.11.1.234,https://127.0.0.1,
        https://defecttrack.vms-t1.test,https://defectdojo-django.defectdojo.svc,
        https://test.vms.solidlab.ru,https://10.11.1.2    
    

    Примечание: просто скопируйте содержимое DD_ALLOWED_HOSTS в DD_CSRF_TRUSTED_ORIGINS, добавив https:// перед каждым доменом и IP-адресом. Сохраните изменения.

  5. Переразверните DefectDojo через Deployments.

Дополнительная настройка для публикации Grafana

Отличие состоит в заголовках — необходимо добавить Origin:

location / {
    proxy_set_header Origin https://kubernetes-grafana.vms-t1.test;
}