Skip to content

Masters thesis in cyber security on malicious domains detection. Center core API. Mirror from GitLab.

Notifications You must be signed in to change notification settings

Qvineox/domain-threat-intelligence-api-mirror

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Domain Threat Intelligence API

Магистерская диссертация по кибербезопасности на тему обнаружения вредоносных доменов. Ядро приложения и основное API. Предоставляет интерфейс для работы веб-приложений, пользователей и автономных агентов. Управляет агентами сканирования, анализирует собранные данные и многое другое.

Ссылки:

Экосистема:

  • Хаб
    • Основной проект на GitLab
    • Зеркало на GitHub
  • Агент
    • Основной проект на GitLab
    • Зеркало на GitHub

Демонстрация

Приложение из ветки STAGING доступно по ссылке. Требуется авторизация.

Установка и разработка

Этот проект работает в облаке и использует Docker Compose в качестве основного и единственного поддерживаемого метода развертывания. Файлы Docker Compose доступны в директории docker.

Все скрипты для разработки доступны в каталоге scripts. swagger. Этот проект использует Swagger для взаимодействия с API. Скрипты Swagger также доступны в директории swagger.

Сборка и запуск

Для сборки и запуска приложения необходимо выполнить следующие команды. Обратите внимание, что необходимые переменные окружения должны находиться в директории ./configs/config.json или в окружении для запуска приложения. Запускается из корня проекта.

go build -ldflags="-s -w" -o .\build\bin\build.go ./cmd
.\build\bin\build.go

Окружение

В приложении используются следующие переменные. Эти переменные также отображаются в автоматизированном GitLab CI/CD:

Переменная Необходимость GitLab CI переменная Описание Пример
db_host $DB_HOST Database host 0.0.0.0, database
db_port $DB_PORT Database port 5432
db_user $DB_USER Database user user
db_pass $DB_PASS Database user password password123!
db_name $DB_NAME Database name database_name
db_timezone $DB_TZ Database timezone Europe/Moscow
http_port $HTTP_PORT REST port 80
http_host $HTTP_HOST REST host localhost
http_api_path optional $HTTP_API_PATH REST endpoint path /api/v1
http_swagger_enabled $HTTP_SWAGGER_ENABLED Defines if Swagger routes will start false
http_swagger_host optional $HTTP_SWAGGER_HOST Defines Swagger API host localhost:7090
http_swagger_version optional $HTTP_SWAGGER_VERSION Swagger endpoint schema version v0.0.1
http_security_tls $HTTP_SECURITY_TLS Defines if TLS encryption enabled false
http_security_origins optional $HTTP_SECURITY_ORIGINS Allowed origins localhost, qvineox.ru
http_security_domain optional $HTTP_SECURITY_DOMAIN Main domain for cookie auth qvineox.ru
- $TRAEFIK_HOST Reverse proxy host rule domain-threat-intel-stage.qvineox.ru

Дополнительную информацию о конфигурации можно найти в каталоге configs.

Непрерывная интеграция с помощью GitLab

Все файлы, необходимые для запуска автоматизированного GitLab CI, находятся в директории build.

Структура проекта

У разработчиков языка Go нет строгих правил относительно структуры проекта на Go. Однако с годами сложилась одна схема: project-layout. Ниже приведен адаптированный вариант, используемый в данном проекте:

  • /cmd - Основные исходные файлы.
    • /app - Логика запуска приложения.
    • /core - Основной код приложения.
      • /entities - Доменная модель приложения.
      • /repos - Репозитории для работы с хранимыми данными.
      • /services - Определяет доменную логику с помощью доменных моделей.
    • /mail - Почтовый клиент.
    • /integrations - Интеграции с внешними сервисами.
  • /internal - Частный код, не импортируемый в другие приложения или библиотеки.
  • /pkg - Публичный код, открытый для других.
  • /test - Дополнительные внешние тесты и тестовые данные.
  • /configs - Файлы конфигурации.
  • /docs - Проектные и пользовательские документы.
  • /examples - Примеры для нашего приложения и/или публичной библиотеки.
  • /api - Файлы контрактов API (Swagger, Protocol Buffers, etc.).
    • /proto - Файлы, используемые при взаимодействии Protocol Buffers/gRPC.
    • /rest - Конечные точки REST API.
  • /web - Активы, специфичные для веб-приложений (статические файлы и т. д.).
  • /build - Файлы сборки и непрерывной интеграции (CI).
    • /bin - Бинарные файлы и файлы компиляции.
    • /docker - Файлы для запуска Docker.
  • /scripts - Скрипты для анализа, установки и так далее.
    • /docker - файлы компоновки Docker для запуска приложения.
    • /idea - Скрипты разработки в IDE.
  • /vendor - Зависимости приложения (например, зависимости модулей Go).

Здесь нет каталога /src, как в некоторых других языках. Это объясняется тем, что /src - слишком общий каталог; поэтому при таком расположении отдается предпочтение таким каталогам, как /cmd, /internal или /pkg.

Источник: Manning, 100 Go Mistakes and How to Avoid Them

Безопасность и соответствие нормативным требованиям

TODO: добавить...

Полезные ссылки

Сервисы

Руководства

About

Masters thesis in cyber security on malicious domains detection. Center core API. Mirror from GitLab.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published