- Add Mermaid diagram for high-level architecture - Add simple ASCII architecture for quick understanding - Document data flows for all monitoring scenarios - Include deployment steps and port mappings - Add quick start guide and key scenarios Generated with [Devin](https://cli.devin.ai/docs) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
279 lines
14 KiB
Markdown
279 lines
14 KiB
Markdown
# ActivityWatch-Russian - Простая архитектура
|
|
|
|
## Общая схема (сверху вниз)
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
│ ПОЛЬЗОВАТЕЛИ │
|
|
│ (Windows рабочие станции) │
|
|
└──────────────────────────┬──────────────────────────────────────┘
|
|
│
|
|
│ Коллекторы (PowerShell)
|
|
│
|
|
┌──────────────────────────▼──────────────────────────────────────┐
|
|
│ Windows Collectors (на каждой машине) │
|
|
├──────────────────────────────────────────────────────────────────┤
|
|
│ • DLP Endpoint Collector - буфер, печать, USB │
|
|
│ • Browser Domains Collector - посещаемые сайты │
|
|
│ • Email Outbound Collector - исходящая почта │
|
|
│ • Worktime Session Collector - рабочее время │
|
|
└──────────────────────────┬──────────────────────────────────────┘
|
|
│
|
|
│ HTTP API (отправка событий)
|
|
│
|
|
┌──────────────────────────▼──────────────────────────────────────┐
|
|
│ ActivityWatch Server (Linux) │
|
|
├──────────────────────────────────────────────────────────────────┤
|
|
│ • Принимает события от коллекторов │
|
|
│ • Хранит в базе данных │
|
|
│ • Предоставляет WebUI и API │
|
|
└──────────────────────────┬──────────────────────────────────────┘
|
|
│
|
|
│ Хранение данных
|
|
│
|
|
┌──────────────────────────▼──────────────────────────────────────┐
|
|
│ PostgreSQL Database │
|
|
├──────────────────────────────────────────────────────────────────┤
|
|
│ • События активности │
|
|
│ • DLP инциденты │
|
|
│ • Метаданные хостов и пользователей │
|
|
└──────────────────────────┬──────────────────────────────────────┘
|
|
│
|
|
│ Чтение/Обработка
|
|
│
|
|
┌──────────────────────────▼──────────────────────────────────────┐
|
|
│ Обработка и Агрегация │
|
|
├──────────────────────────────────────────────────────────────────┤
|
|
│ • aggregate_dlp_events.py - агрегация DLP событий │
|
|
│ • pfSense Poller - логи firewall │
|
|
│ • Prometheus Exporter - метрики для мониторинга │
|
|
└──────────────────────────┬──────────────────────────────────────┘
|
|
│
|
|
│ Визуализация
|
|
│
|
|
┌──────────────────────────▼──────────────────────────────────────┐
|
|
│ Grafana + Prometheus Stack │
|
|
├──────────────────────────────────────────────────────────────────┤
|
|
│ • Prometheus - сбор метрик │
|
|
│ • Grafana - дашборды и визуализация │
|
|
│ • SQL Exporter - прямой доступ к PostgreSQL │
|
|
└──────────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
## Потоки данных (по направлениям)
|
|
|
|
### Поток 1: DLP мониторинг
|
|
```
|
|
Пользователь → DLP Collector → Проверка правил → AW Server → PostgreSQL → Grafana
|
|
```
|
|
|
|
### Поток 2: Мониторинг браузеров
|
|
```
|
|
Браузер → Browser Collector → Категоризация → AW Server → WebUI Dashboard
|
|
```
|
|
|
|
### Поток 3: Мониторинг почты
|
|
```
|
|
Outlook/SMTP → Email Collector → Проверка правил → AW Server → Grafana
|
|
```
|
|
|
|
### Поток 4: pfFirewall логи
|
|
```
|
|
pfSense → Poller (Python) → HTTP API → AW Server → Grafana
|
|
```
|
|
|
|
### Поток 5: Метрики
|
|
```
|
|
AW Server → Exporter (Python) → /metrics → Prometheus → Grafana
|
|
```
|
|
|
|
## Компоненты по уровням
|
|
|
|
### Уровень 1: Сбор данных (Windows)
|
|
```
|
|
┌─────────────────────────────────────┐
|
|
│ Windows Collectors (PowerShell) │
|
|
│ ┌───────────────────────────────┐ │
|
|
│ │ • dlp-endpoint-signals-collector│ │
|
|
│ │ • browser-domains-collector │ │
|
|
│ │ • email-outbound-collector │ │
|
|
│ │ • worktime-session-collector │ │
|
|
│ └───────────────────────────────┘ │
|
|
└─────────────────────────────────────┘
|
|
```
|
|
|
|
### Уровень 2: Хранение и обработка (Linux Server)
|
|
```
|
|
┌─────────────────────────────────────┐
|
|
│ ActivityWatch Server + PostgreSQL │
|
|
│ ┌───────────────────────────────┐ │
|
|
│ │ • aw-server (Rust) │ │
|
|
│ │ • PostgreSQL Database │ │
|
|
│ │ • WebUI (с RU патчами) │ │
|
|
│ └───────────────────────────────┘ │
|
|
└─────────────────────────────────────┘
|
|
```
|
|
|
|
### Уровень 3: Интеграции и обработка
|
|
```
|
|
┌─────────────────────────────────────┐
|
|
│ Интеграции и Скрипты (Python) │
|
|
│ ┌───────────────────────────────┐ │
|
|
│ │ • aggregate_dlp_events.py │ │
|
|
│ │ • pfsense-aw-poller.py │ │
|
|
│ │ • aw_activitywatch_exporter │ │
|
|
│ └───────────────────────────────┘ │
|
|
└─────────────────────────────────────┘
|
|
```
|
|
|
|
### Уровень 4: Визуализация и мониторинг
|
|
```
|
|
┌─────────────────────────────────────┐
|
|
│ Grafana + Prometheus (Docker) │
|
|
│ ┌───────────────────────────────┐ │
|
|
│ │ • Prometheus (порт 9090) │ │
|
|
│ │ • Grafana (порт 3000) │ │
|
|
│ │ • SQL Exporter (порт 9398) │ │
|
|
│ └───────────────────────────────┘ │
|
|
└─────────────────────────────────────┘
|
|
```
|
|
|
|
## Развертывание
|
|
|
|
### На Windows рабочих станциях
|
|
```
|
|
1. Установка ActivityWatch (через InnoSetup installer)
|
|
2. Развертывание коллекторов (deploy-domain-users.ps1)
|
|
3. Настройка scheduled tasks
|
|
4. Конфигурация DLP политик
|
|
```
|
|
|
|
### На Linux сервере
|
|
```
|
|
1. Установка ActivityWatch Server
|
|
2. Настройка PostgreSQL
|
|
3. Применение RU патчей к WebUI
|
|
4. Запуск скриптов агрегации
|
|
5. Запуск Prometheus Exporter
|
|
```
|
|
|
|
### Мониторинг стек
|
|
```
|
|
1. Docker Compose развертывание
|
|
2. Настройка Prometheus scrape config
|
|
3. Импорт Grafana дашбордов
|
|
4. Настройка алертов
|
|
```
|
|
|
|
## Ключевые файлы
|
|
|
|
```
|
|
ActivityWatch-Russian/
|
|
├── windows/ # Windows коллекторы
|
|
│ ├── dlp-endpoint-signals-collector.ps1
|
|
│ ├── browser-domains-native-collector.ps1
|
|
│ ├── email-outbound-collector.ps1
|
|
│ └── deploy-domain-users.ps1
|
|
│
|
|
├── scripts/ # Серверные скрипты
|
|
│ └── aggregate_dlp_events.py
|
|
│
|
|
├── aw-server/ # Патчи WebUI
|
|
│ └── aw-ru-patch.js
|
|
│
|
|
├── pfsense/ # Интеграция pfSense
|
|
│ └── pfsense-aw-poller.py
|
|
│
|
|
└── grafana-1c/ # Мониторинг стек
|
|
├── docker-compose.yml
|
|
├── prometheus/prometheus.yml
|
|
└── grafana/dashboards/
|
|
```
|
|
|
|
## Порты
|
|
|
|
| Компонент | Порт | Протокол |
|
|
|-----------|------|----------|
|
|
| ActivityWatch WebUI | 5600 | HTTP |
|
|
| ActivityWatch API | 5666 | WebSocket |
|
|
| Prometheus | 9090 | HTTP |
|
|
| Prometheus Exporter | 9398 | HTTP |
|
|
| Grafana | 3000 | HTTP |
|
|
| PostgreSQL | 5432 | TCP |
|
|
|
|
## Быстрый старт
|
|
|
|
### Запуск мониторинг стека
|
|
```bash
|
|
cd grafana-1c
|
|
docker-compose up -d
|
|
```
|
|
|
|
### Развертывание на Windows
|
|
```powersShell
|
|
.\windows\deploy-domain-users.ps1
|
|
```
|
|
|
|
### Агрегация DLP событий
|
|
```bash
|
|
python3 scripts/aggregate_dlp_events.py
|
|
```
|
|
|
|
## Связи между компонентами
|
|
|
|
```
|
|
Windows Collectors
|
|
│
|
|
├─► ActivityWatch Server (HTTP API)
|
|
│ │
|
|
│ ├─► PostgreSQL (хранение)
|
|
│ │
|
|
│ ├─► WebUI (RU патчи)
|
|
│ │
|
|
│ └─► Prometheus Exporter (метрики)
|
|
│ │
|
|
│ └─► Prometheus
|
|
│ │
|
|
│ └─► Grafana
|
|
│
|
|
pfSense Firewall
|
|
│
|
|
└─► pfSense Poller
|
|
│
|
|
└─► ActivityWatch Server
|
|
│
|
|
└─► PostgreSQL
|
|
```
|
|
|
|
## Основные сценарии
|
|
|
|
### Сценарий 1: Пользователь копирует конфиденциальные данные
|
|
```
|
|
1. Пользователь копирует текст в буфер обмена
|
|
2. DLP Collector перехватывает событие
|
|
3. Проверка по DLP правилам
|
|
4. При совпадении → скриншот + запись инцидента
|
|
5. Отправка в ActivityWatch Server
|
|
6. Сохранение в PostgreSQL
|
|
7. Отображение в Grafana DLP Dashboard
|
|
```
|
|
|
|
### Сценарий 2: Пользователь посещает запрещенный сайт
|
|
```
|
|
1. Пользователь открывает сайт в браузере
|
|
2. Browser Collector определяет домен
|
|
3. Проверка по спискам и DLP правилам
|
|
4. Категоризация сайта
|
|
5. Отправка события в ActivityWatch
|
|
6. Отображение в WebUI Dashboard
|
|
```
|
|
|
|
### Сценарий 3: Мониторинг метрик
|
|
```
|
|
1. Prometheus Exporter опрашивает AW API
|
|
2. Сбор метрик (события, хосты, коллекторы)
|
|
3. Экспорт в формате Prometheus
|
|
4. Prometheus scrapes endpoint /metrics
|
|
5. Grafana строит графики
|
|
```
|