24 KiB
AWatch-rus DLP: реализованный функционал для службы ИБ
Документ описывает фактически реализованный DLP и смежный контрольный функционал в репозитории AWatch-rus по состоянию на текущий main.
- Статус: действующая реализация, не roadmap
- Назначение: аудит службой ИБ, эксплуатационное понимание, оценка рисков
- Контур: Windows/RDP endpoint collectors + Linux AW server + WebUI overlay + интеграции + отчётность
1. Границы системы
Система построена поверх ActivityWatch и расширяет его до прикладного DLP/monitoring-контура:
- сбор активности пользователей на Windows/RDP-хостах;
- DLP-сигналы по каналам
clipboard,USB,print,browser domains,email outbound,file operations; - централизованная политика DLP;
- review/rules UI внутри AW WebUI;
- кейсы расследований;
- интеграции в SIEM/SOAR;
- compliance-отчёты;
- health-check и autoheal для production-эксплуатации.
Система не является полноценной DLP-платформой enterprise-класса с нативной аутентификацией, RBAC, аппаратной изоляцией и криптографической подписью политик. Это важно учитывать при ИБ-оценке.
2. Реализованные компоненты
2.1 Windows endpoint / RDP host
Основные PowerShell-компоненты:
windows/dlp-endpoint-signals-collector.ps1Сбор и DLP-оценкаclipboard,USB,print.windows/file-operations-collector.ps1Сбор файловых операций и heartbeat состояния коллектора.windows/browser-domains-native-collector.ps1Сбор активных доменов/категорий браузера, генерация DLP-инцидентов по web-правилам.windows/email-outbound-collector.ps1Мониторинг исходящей почты, публикация почтовых событий и DLP-инцидентов.windows/worktime-session-collector.ps1Сбор состояния RDP-сеансов черезquery user/quser.windows/dlp-policy-client.ps1Pull-клиент централизованной политики.windows/install-dlp-client.ps1Простой инсталлятор клиента.windows/install-standalone-service.ps1Развёртывание DLP-агента как Windows Service.windows/aw-standalone-service.ps1Service wrapper для поддержания collector-процессов без Task Scheduler.
Deployment/tooling:
windows/deploy-single-user.ps1windows/deploy-domain-users.ps1windows/deploy-ensemble.ps1windows/hardening-recovery.ps1windows/validate-deployment.ps1
2.2 Linux AW server
Базовые серверные компоненты:
aw-server/aw-ru-patch.jsRU/DLP overlay для WebUI.aw-server/apply_webui_ru_patch.shПрименение WebUI-патча.aw-server/aw-worktime-api.pyAPI отчётов worktime на:5610.aw-server/aw-worktime-ui-bridge.pyМост междуaw-worktime-sessions_*и стандартными AW-представлениями.aw-server/aw-worktime-autoheal.shАвтолечение worktime-представлений.
2.3 Policy Engine
Каталог: aw-server/dlp-policy-engine/
policy_service.pyFastAPI service централизованной политики.policy_storage.pySQLite storage и versioning.policy_schema.pyPydantic schemas.policy_distributor.pyФормирование policy bundle для endpoint.dlp-policy-engine.servicesystemd unit.
2.4 Content Analysis
Каталог: aw-server/dlp-content-analysis/
content_analyzer.pyУнифицированный server-side анализ текста/артефактов.dictionary_matcher.pyMatch по словарям и regex pack.checksum_validator.pyВалидация ИНН/СНИЛС/паспортных паттернов.ocr_processor.pyOCR черезpytesseract+Pillow.dictionaries/152-fz-pdn.jsonСловарь ПДн.regex-packs/*.jsonНаборы regex дляfinancial,contacts,secrets.
2.5 Case Management
Каталог: aw-server/dlp-case-management/
case_service.pyFastAPI API для кейсов.case_storage.pySQLite-хранилище кейсов, комментариев, аудита.case_schema.pyСхемы API.evidence_chain.pyНормализация evidence и вычислениеsha256.case-service.servicesystemd unit.
2.6 SIEM / SOAR
Каталог: aw-server/dlp-integrations/
cef_exporter.pyЭкспортaw-dlp-incidents_*в CEF.webhook_sender.pyОтправка webhook по severity.syslog_forwarder.pyGeneric syslog-forwarding инцидентов.cef-config.yamlwebhook-config.yamlsyslog-forwarder-config.yaml- service/timer units для каждого интеграционного потока.
2.7 Compliance / reporting
Каталог: aw-server/dlp-compliance/
report_generator.pyГенератор месячных compliance-отчётов.compliance_scheduler.pyScheduler wrapper.templates/152-fz-report.htmltemplates/pci-dss-report.htmlreport-scheduler.servicereport-scheduler.timer
2.8 IOC enrichment
Сценарии и артефакты:
scripts/extract_ioc_from_sigma.pyИзвлечение IOC из Sigma/Hayabusa rules.scripts/build_dlp_ioc_from_hayabusa.shПостроение JSON/CSV/SQL артефактов IOC.
2.9 Health / autoheal / operations
aw-server/health-check.shБазовый AW health gate.scripts/dlp-health-check.pyDLP health gate.scripts/diag_and_manual_restart.shДиагностика и ручной heal/restart.scripts/dlp-admin-cli.pyCLI администратора.grafana-1c/grafana/dashboards/dlp-dashboard.jsonDLP Grafana dashboard.
2.10 Telegram bot для операторского контура
Развёртывание:
ansible/deploy_tsj_guardian_bot_proxmox.yml
Назначение:
- внешняя проверка AW-Rus + DLP;
- удалённый heal некоторых сценариев;
- контроль доступности worktime/DLP контура извне.
3. Какие данные реально собираются
| Канал | Компонент | Bucket | Содержимое |
|---|---|---|---|
| Clipboard | dlp-endpoint-signals-collector.ps1 |
aw-dlp-endpoint-signals_<host>, aw-dlp-incidents_<host> |
hash, length, signal, rule hit, severity, action |
| USB | dlp-endpoint-signals-collector.ps1 |
aw-dlp-endpoint-signals_<host>, aw-dlp-incidents_<host> |
drive letter, volume, signal, enforcement status |
dlp-endpoint-signals-collector.ps1 |
aw-dlp-endpoint-signals_<host>, aw-dlp-incidents_<host> |
printer, owner, document name, signal, enforcement status | |
| Browser domains | browser-domains-native-collector.ps1 |
aw-watcher-web-*_<host>, aw-detmir-web-category_<host>, aw-dlp-incidents_<host> |
domain, category, matched policy |
| Email outbound | email-outbound-collector.ps1 |
aw-email-monitor_<host>, aw-dlp-incidents_<host> |
sender/recipient metadata, subject/transport metadata, matched rule |
| File operations | file-operations-collector.ps1 |
aw-file-operations_<host> |
operation, file path, old path, extension, archive hint |
| RDP sessions | worktime-session-collector.ps1 |
aw-worktime-sessions_<host> |
username, session id, state, active flag |
| Manual review | aw-ru-patch.js |
aw-dlp-review_<host>, aw-dlp-rules_<host> |
operator review/suppress/rule decisions |
| Cases | case_service.py |
SQLite case DB | case metadata, comments, audit, evidence chain |
Дополнительно:
- при DLP-инциденте система может сохранять screenshot artifact;
- OCR применяется к screenshot-артефактам на сервере, не к постоянному видео/потоку;
- compliance и SIEM работают по уже сформированным
aw-dlp-incidents_*.
4. Что система не делает постоянно
- не пишет постоянную запись экрана;
- не делает screenshot по таймеру для обычной активности;
- не реализует встроенную LDAP/SSO/RBAC-аутентификацию внутри policy/case API;
- не подписывает policy bundle криптографически;
- не шифрует AW bucket contents на уровне приложения.
5. Основные потоки данных
5.1 Endpoint DLP flow
- Windows collector получает локальное событие.
- Загружает локальную или серверную DLP policy.
- Вычисляет match по локальным правилам.
- При необходимости применяет enforcement.
- Отправляет heartbeat/event в AW API.
- При совпадении правила публикует
aw-dlp-incidents_<host>. - При включённом
incidentCaptureсохраняет screenshot artifact metadata.
5.2 Policy flow
- Администратор создаёт/обновляет policy через Policy Engine API.
- Политика хранится в SQLite с versioning и audit trail.
- Endpoint в
servermode делает:GET /api/0/dlp/policies/activeGET /api/0/dlp/policies/agents/{agent_id}/desiredPOST /api/0/dlp/policies/agents/{agent_id}/heartbeat
- Endpoint кэширует последнюю валидную policy локально.
- При недоступности сервера используется cached/local fallback.
5.3 Review / investigation flow
- Оператор открывает
#/buckets/aw-dlp-endpoint-signals_<HOST>. aw-ru-patch.jsдобавляет DLP review/rules центр.- Оператор создаёт review/rule запись.
- UI сохраняет решение в
aw-dlp-review_<host>илиaw-dlp-rules_<host>. - Из DLP review можно создать кейс расследования.
- Case Management сохраняет кейс, комментарии и evidence chain.
5.4 SIEM / SOAR flow
- Серверные integrations читают новые события из
aw-dlp-incidents_*. - В зависимости от конфигурации выполняется:
- CEF export;
- webhook notification;
- syslog forwarding.
- Состояние последнего обработанного
idхранится локально в state files.
5.5 Compliance flow
report-scheduler.timerзапускает генерацию monthly report.report_generator.pyагрегируетaw-dlp-incidents_*.- Формируются:
- HTML отчёт;
- JSON metadata.
6. Реализованные API, службы и порты
6.1 HTTP API
| Сервис | Порт | Назначение |
|---|---|---|
| ActivityWatch API | 5600 |
основной API buckets/events/settings |
| Policy Engine | 5601 |
централизованная политика DLP |
| Case Management | 5602 |
кейсы расследования |
| Worktime API | 5610 |
отчёты worktime CSV/JSON |
6.2 Systemd units
Критичные сервисы:
activitywatch-serveraw-dlp-policy-engine.serviceaw-dlp-case-management.serviceaw-worktime-api.service
Критичные timers/services:
aw-worktime-ui-bridge.timeraw-worktime-autoheal.timeractivitywatch-dlp-aggregator.timeraw-dlp-report-scheduler.timeraw-dlp-cef-exporter.timeraw-dlp-webhook-sender.timeraw-dlp-syslog-forwarder.timeraw-dlp-ioc-refresh.timer
7. DLP policy engine: реализованный профиль
Policy Engine поддерживает:
- CRUD политик;
- status workflow:
draft -> pending_approval -> approved -> deployed; - versioning;
- rollback активной политики;
- audit trail;
- agent heartbeat/desired synchronization.
Ключевые endpoints:
GET /healthzGET/POST/PUT/DELETE /api/0/dlp/policiesGET /api/0/dlp/policies/activeGET /api/0/dlp/policies/active/versionPOST /api/0/dlp/policies/{id}/submitPOST /api/0/dlp/policies/{id}/approvePOST /api/0/dlp/policies/{id}/draftPOST /api/0/dlp/policies/{id}/activatePOST /api/0/dlp/policies/rollbackGET /api/0/dlp/policies/auditGET /api/0/dlp/policies/{id}/auditPOST /api/0/dlp/policies/agents/{agent_id}/heartbeatGET /api/0/dlp/policies/agents/{agent_id}/desired
Текущая модель доверия:
- встроенной аутентификации нет;
- защита предполагается сетевой сегментацией, приватным доступом и эксплуатационным контролем.
8. Endpoint policy model
Примерные секции политики:
defaultsrulesendpoint.clipboard[]endpoint.usb[]endpoint.print[]contentAnalysis.dictionaryPackcontentAnalysis.regexPackcontentAnalysis.ocrEnabled
Поддерживаемые параметры правил:
enabledcooldownSecondsactionseveritymessageregexPatternsdocumentRegexminLengthdictionaryPackregexPackocrEnabled
9. Enforcement: что реально блокируется
Поддержаны активные действия action="block":
clipboardОчистка clipboard.usbПеревод USB media вread-only.printОтмена print job.
При enforcement:
- событие всё равно публикуется как инцидент;
- в payload указывается
enforced=true|false; - пользователю показывается Windows notification.
Ограничения enforcement:
- для
USBи частиprintнужны повышенные права; - при недостатке прав событие будет зафиксировано, но блокировка может не сработать.
10. Advanced Content Analysis
Реализовано:
- словари ПДн;
- checksum validation;
- regex packs;
- OCR по screenshot artifact;
- server-side analyzer CLI/module.
Сценарий использования:
- Endpoint rule указывает
dictionaryPackи/илиregexPack. - Collector применяет локальный расширенный анализ текста.
- При наличии screenshot/OCR серверный анализатор может дополнительно разбирать артефакт.
Критичный нюанс:
- OCR и dictionary/regex анализ повышают чувствительность собираемых данных;
- screenshot artifacts и распознанный текст должны рассматриваться как sensitive evidence.
11. Case Management
Реализовано:
- создание кейса;
- обновление кейса;
- комментарии;
- audit trail;
- evidence chain с
sha256.
Ключевые endpoints:
GET /healthPOST /api/0/dlp/casesGET /api/0/dlp/casesGET /api/0/dlp/cases/{id}PATCH /api/0/dlp/cases/{id}POST /api/0/dlp/cases/{id}/commentsGET /api/0/dlp/cases/{id}/comments
Особенность текущей реализации:
case_service.pyсейчас использует permissive CORS, включая"*";- для hardened production это должно быть сужено до контролируемых origin.
12. WebUI overlay и операторский workflow
В aw-ru-patch.js реализованы:
- русифицированная навигация;
- DLP bucket deep-links;
- DLP review center;
- DLP rules manager;
- создание кейса из review;
- отдельная секция DLP incidents.
Операторские служебные buckets:
aw-dlp-review_<host>aw-dlp-rules_<host>
Это не источники endpoint-телеметрии, а слой операторской классификации и suppression.
13. SIEM / SOAR
Реализованы три потока:
- CEF export;
- webhook notifications;
- syslog forwarding.
Источник всегда один: aw-dlp-incidents_*.
Текущая модель:
- state хранится локально на сервере;
- обработка идёт по event
id; - доставка зависит от сетевой доступности получателя и конфигурации transport.
ИБ-нюанс:
- безопасность отправки определяется настройкой конкретного канала;
- если syslog/webhook настроены без TLS или во внешний контур, это уже операционный риск, а не защита приложения.
14. Compliance reporting
Реализованы профили:
152-fzpci-dss
Результат:
- HTML report;
- JSON metadata.
Отчёт агрегирует:
- общее число инцидентов;
- распределение по severity;
- распределение по host;
- распределение по channel.
15. IOC enrichment через Hayabusa / Sigma
Реализован вспомогательный pipeline:
- разбор Sigma/YAML правил;
- извлечение IOC-полей;
- выгрузка в
json/csv/sql.
Извлекаемые типы:
Image|endswithCommandLine|containsOriginalFileNameHashes|SHA256
Назначение:
- preload blacklist/indicator данных для DLP и смежной аналитики.
16. Health-check, autoheal и эксплуатационная устойчивость
16.1 Базовые проверки
/usr/local/bin/aw-health-check/usr/local/bin/dlp-health-check
Проверяется:
- HTTP-доступность сервисов;
- состояние systemd units/timers;
- свежесть bucket-ов;
- наличие transport self-test metrics;
- наличие compliance artifacts.
16.2 File-operations health model
Текущая логика dlp-health-check.py специально учитывает production-реальность:
aw-file-operations_*обязателен только для managed host с реально активнымaw-worktime-sessions_*;- исторические или unmanaged bucket-ы не считаются аварией;
- это устраняет ложные alarms при отсутствии активной интерактивной RDP-сессии.
16.3 Worktime autoheal
aw-worktime-autoheal.sh:
- проверяет доступность worktime report endpoint;
- при необходимости перезапускает
aw-worktime-api.service; - нормализует
aw-watcher-window_*иaw-watcher-afk_*изaw-worktime-sessions_*; - выполняет hard normalization повреждённых bucket-ов.
16.4 Manual recovery
scripts/diag_and_manual_restart.sh:
- запускает health-check;
- при fail рестартует серверные компоненты;
- опционально инициирует Windows recovery/launch tasks;
- может выполнить seed self-test событий для восстановления freshness.
17. Деплой и управление изменениями
Ключевые playbook:
ansible/deploy_aw_server.ymlansible/deploy_aw_windows.ymlansible/deploy_dlp_full_stack.ymlansible/deploy_tsj_guardian_bot_proxmox.yml
Роли:
ansible/roles/dlp-policy-engineansible/roles/dlp-content-analysisansible/roles/dlp-integrationsansible/roles/dlp-case-managementansible/roles/dlp-compliance
Post-deploy gates:
aw-health-checkdlp-health-check --json
18. Минимальный эксплуатационный набор для ИБ
Для регулярной проверки достаточно:
/usr/local/bin/aw-health-check
/usr/local/bin/dlp-health-check --json
python3 scripts/dlp-admin-cli.py health check
python3 scripts/dlp-admin-cli.py policies active
python3 scripts/dlp-admin-cli.py incidents list --since-hours 24 --limit 50
python3 scripts/dlp-admin-cli.py cases list --limit 50
19. Ограничения и остаточные риски
Критичные ограничения текущей реализации:
- нет встроенной auth/RBAC в Policy Engine;
- нет встроенной auth/RBAC в Case Management;
- Case Management использует permissive CORS;
- policy distribution не подписывается криптографически;
- данные в AW buckets и локальных SQLite DB не шифруются приложением;
- screenshot/OCR artifacts содержат чувствительные данные и требуют отдельного режима хранения/ретенции;
- эффективность enforcement зависит от запуска collector под достаточными правами;
- webhook/syslog/CEF transport security зависит от конфигурации канала;
- AGENT heartbeat state в Policy Engine хранится в памяти процесса и не является полноценным durable registry;
- manual review buckets являются операторским слоем и не должны трактоваться как первичный доказательный источник без сверки с исходным incident bucket.
20. Рекомендации службе ИБ по допуску в production
Перед formal acceptance рекомендуется как минимум:
- Ограничить доступ к
5601и5602сетевой сегментацией и reverse proxy policy. - Убрать wildcard CORS из
Case Management. - Определить политику хранения и удаления screenshot/OCR artifacts.
- Формализовать список доверенных операторов review/case workflow.
- Включить TLS или закрытый management network для syslog/webhook/CEF маршрутов.
- Зафиксировать backup/restore для:
dlp-policy-engine.sqlitecases.db- compliance reports
- IOC artifacts
- Прописать регламент ручной верификации после каждого
deploy_aw_server.ymlиdeploy_aw_windows.yml.
21. Связанные документы
docs/dlp-policy-engine.mddocs/dlp-integrations.mddocs/dlp-enforcement.mddocs/dlp-aggregator.mddocs/email-outbound-collector.mddocs/windows/deployment.mddocs/windows/validation.mddocs/runbook.mddocs/worktime_aql_detmir.md