
Открытый сканер уязвимостей с автоматическим обнаружением сети, обнаружением на основе CVE, оценкой CVSS, панелями рисков, удалёнными агентами через gRPC и современным веб-интерфейсом для корпоративных команд безопасности.
# Sirius Scan [](https://github.com/SiriusScan/Sirius/actions/workflows/ci.yml) [](https://github.com/SiriusScan/Sirius/releases) [](https://github.com/orgs/SiriusScan/packages) [](./LICENSE) [](https://sirius.opensecurity.com/community)  Sirius — это сканер уязвимостей с открытым исходным кодом, автоматическим обнаружением, поиском по CVE и современным веб-интерфейсом. Клонируйте, выполните четыре команды и начинайте сканирование. ## Быстрый старт ```bash git clone https://github.com/SiriusScan/Sirius.git cd Sirius docker compose -f docker-compose.installer.yaml run --rm sirius-installer docker compose up -d ``` Откройте **http://localhost:3000** и войдите: | | | |---|---| | **Email** | `[email protected]` | | **Пароль** | выводится установщиком (ищите `INITIAL_ADMIN_PASSWORD` в выводе) | Всё. Все шесть сервисов запускаются автоматически. Установщик генерирует безопасные секреты при первом запуске; его можно безопасно запускать повторно. По умолчанию установщик оставляет `IMAGE_TAG` пустым, поэтому Compose загружает **`latest`** из GHCR. Чтобы зафиксировать конкретный релиз (например, `v1.0.0` в `.env`), делайте это только после того, как этот тег появится для **всех шести** образов контейнеров; проверьте с помощью `bash scripts/verify-ghcr-public-access.sh v1.0.0` из оболочки, не вошедшей в `ghcr.io`. > **Требования:** Docker Engine 20.10+ с Compose V2, 4 ГБ ОЗУ, 10 ГБ диска. Работает на Linux, macOS и Windows (WSL2). ## Возможности Sirius - **Обнаружение сети** — автоматический перебор хостов и сервисов через Nmap - **Поиск уязвимостей** — сканирование на основе CVE с оценкой по CVSS - **Панели рисков** — мониторинг процесса сканирования в реальном времени, тренды по степени серьёзности и рекомендации по устранению - **Удалённые агенты** — распределённое сканирование в нескольких средах через gRPC - **Интерактивный терминал** — консоль PowerShell для продвинутого скриптинга и автоматизации - **REST API** — интеграция с существующими процессами безопасности (аутентификация через `X-API-Key` на порту 9001) ## Варианты развёртывания Шаг с установщиком всегда одинаков. Меняется только команда `docker compose up`. | Режим | Команда | Сценарий использования | |------|---------|----------| | **Стандартный** | `docker compose up -d` | Для большинства пользователей — загружает полный стек релиза из GHCR | | **Разработка** | `docker compose -f docker-compose.yaml -f docker-compose.dev.yaml up -d` | Автоматическая перезагрузка при локальной разработке | | **Сборка из исходников** | `docker compose -f docker-compose.yaml -f docker-compose.build.yaml up -d --build` | Явная полная сборка стека локально | | **Продакшен** | `docker compose -f docker-compose.yaml -f docker-compose.prod.yaml up -d` | Усиленные настройки, `pull_policy: always` | ### Неинтерактивная установка (CI / Terraform / автоматизация) ```bash docker compose -f docker-compose.installer.yaml run --rm sirius-installer --non-interactive --no-print-secrets docker compose up -d ``` ### Ротация секретов ```bash docker compose -f docker-compose.installer.yaml run --rm sirius-installer --force docker compose up -d --force-recreate ``` ## Проверка установки ```bash docker compose ps # все 6 сервисов должны быть "healthy" или "running" curl http://localhost:3000 # UI отвечает curl http://localhost:9001/health # API отвечает ``` Ожидаемые сервисы: `sirius-ui` (3000), `sirius-api` (9001), `sirius-engine` (5174, 50051), `sirius-postgres` (5432), `sirius-rabbitmq` (5672, 15672), `sirius-valkey` (6379). ## Архитектура ```mermaid graph TD subgraph clients [Клиенты] UI["Sirius UI (Next.js)"] CLI["Терминал и среда агента"] end subgraph core [Основные сервисы] API["Sirius API (Go/Gin)"] Engine["Sirius Engine"] end subgraph infra [Инфраструктура] MQ["RabbitMQ"] DB["PostgreSQL"] Cache["Valkey"] end UI -->|"HTTP/WebSocket"| API CLI -->|"gRPC"| Engine API -->|"AMQP publish"| MQ MQ -->|"Queue consume"| Engine API -->|"SQL read/write"| DB Engine -->|"SQL read/write"| DB API -->|"Session/cache ops"| Cache Engine -->|"Scan state cache ops"| Cache ``` | Сервис | Технология | Порты | Назначение | |---------|-----------|-------|---------| | **sirius-ui** | Next.js 14, React, Tailwind | 3000 | Веб-интерфейс | | **sirius-api** | Go, Gin | 9001 | REST API и бизнес-логика | | **sirius-engine** | Go + встроенный gRPC-агент | 5174, 50051 | Сканер, терминал, сервисы агента | | **sirius-postgres** | PostgreSQL 15 | 5432 | Данные об уязвимостях и сканировании | | **sirius-rabbitmq** | RabbitMQ | 5672, 15672 | Обмен сообщениями между сервисами | | **sirius-valkey** | Valkey (совместим с Redis) | 6379 | Кэш и данные сессий | ## Интерфейс | Панель управления | Сканер | Навигатор уязвимостей | |-----------|---------|------------------------| |  |  |  | | Среда | Сведения об узле | Терминал | |-------------|--------------|----------| |  |  |  | ## API Sirius предоставляет REST-эндпоинты на порту 9001, защищённые **внутренним API-ключом сервиса**. Предпочтительно использовать файл Docker secret (`SIRIUS_API_KEY_FILE`, по умолчанию `/run/secrets/sirius_api_key`); `SIRIUS_API_KEY` остаётся поддерживаемым резервным вариантом через переменные окружения. Установщик записывает `./secrets/sirius_api_key.txt` (режим **0644**, чтобы непривилегированные UID приложений могли читать подмонтированный секрет) и настраивает оба способа. ```bash curl http://localhost:9001/health -H "X-API-Key: $SIRIUS_API_KEY" curl http://localhost:9001/api/v1/scan/get/all -H "X-API-Key: $SIRIUS_API_KEY" ``` Полная документация API: [REST API Reference](https://sirius.opensecurity.com/docs/api/rest/authentication) ## Рекомендации по безопасности Для продуктивного развёртывания: 1. **Ротируйте секреты** — запустите установщик с флагом `--force` для перегенерации всех учётных данных 2. **Ограничьте порты** — открывайте только порт 3000 (UI); порты 5432, 6379, 5672 оставляйте внутренними 3. **Используйте обратный прокси** — поставьте nginx или Traefik перед сервером с TLS 4. **Обновляйте образы** — `docker compose pull && docker compose up -d` ## Устранение неполадок Быстрые решения распространённых проблем: | Проблема | Решение | |---------|-----| | Сервисы не запускаются | `docker compose logs <service>` чтобы найти ошибку | | Отсутствует инфраструктура при dev-оверлее | Используйте оба файла: `-f docker-compose.yaml -f docker-compose.dev.yaml` | | Конфликт портов | `lsof -i :3000` чтобы найти конфликтующий процесс | | Ошибка подключения к БД | `docker exec sirius-postgres pg_isready` | | Устаревшие секреты после сброса | Перезапустите установщик, затем `docker compose up -d --force-recreate` | Подробные операционные руководства, процедуры проверки и аварийного восстановления см. в [Operations & Troubleshooting](https://github.com/siriusscan/sirius/blob/main/documentation/OPERATIONS.md). ## Участие в разработке См. [CONTRIBUTING.md](https://github.com/siriusscan/sirius/blob/main/CONTRIBUTING.md) для настройки среды разработки, стандартов оформления кода и правил создания PR. **Быстрые ссылки:** [Issues](https://github.com/SiriusScan/Sirius/issues) | [Discussions](https://github.com/SiriusScan/Sirius/discussions) | [Discord](https://sirius.opensecurity.com/community) ## Дополнительные материалы - [Installation Guide](https://sirius.opensecurity.com/docs/getting-started/installation) - [Interface Tour](https://sirius.opensecurity.com/docs/getting-started/interface-tour) - [Scanning Guide](https://sirius.opensecurity.com/docs/guides/scanning) - [Docker Architecture](https://github.com/siriusscan/sirius/blob/main/documentation/dev/architecture/README.docker-architecture.md) - [System Architecture](https://github.com/siriusscan/sirius/blob/main/documentation/dev/architecture/README.architecture.md) - [CI/CD Guide](https://github.com/siriusscan/sirius/blob/main/documentation/dev/architecture/README.cicd.md) - [Operations & Troubleshooting](https://github.com/siriusscan/sirius/blob/main/documentation/OPERATIONS.md) ## Лицензия [MIT](https://github.com/siriusscan/sirius/blob/main/LICENSE)