Развертывание и установка всей платформы(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
- i. Подправить
-
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
- url —
-
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
-
Открываем и редактируем
.confфайл вручную черезvim,nano,emacsи т.п. -
Подправляем секцию
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; } -
Заменяем
Hostна правильный, так как иначе Ingress не поймёт запрос и вернёт ошибку400.proxy_set_header Host defecttrack.vms-t1.test; -
Оригинальную строку комментируем:
#proxy_set_header Host $host; -
Отключаем кэширование, так как оно может вызывать проблемы.
- Добавляем комментарий перед
include force-ssl.conf:# Force SSL # include conf.d/include/force-ssl.conf; - Ищем еще один
asset caching, но уже вышеlocation:# Asset Caching include conf.d/include/assets.conf; - Комментируем его, чтобы не мешал.
- Добавляем комментарий перед
-
Перезапускаем контейнер с Nginx Proxy Manager (или заставляем Nginx перечитать конфигурацию в контейнере).
Настройка Nginx Proxy Manager завершена. Однако при попытке входа может возникнуть CSRF-ошибка. Исправляем её через Lens.
Исправление CSRF-ошибки через Lens
-
В Lens открываем
config -> Config Maps. -
Устанавливаем
namespace = defectdojo. -
Ищем
ConfigMapс названиемdefectdojoи редактируем его. -
Добавляем в самый низ
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-адресом. Сохраните изменения. -
Переразверните DefectDojo через
Deployments.
Дополнительная настройка для публикации Grafana
Отличие состоит в заголовках — необходимо добавить Origin:
location / {
proxy_set_header Origin https://kubernetes-grafana.vms-t1.test;
}