Files
AWatch-rus/docs/AGENT_ARCHITECTURE_RU.md
T

3.5 KiB

AWatch-rus Rust Agent Architecture

Документ описывает агентный слой AWatch-rus v0.3.

Назначение

awatch-agent-rs является собственным Rust-агентом телеметрии для контура:

Agent -> Telemetry -> Analytics -> Risk -> Investigation -> Report

Агент собирает техническую и операционную телеметрию рабочего места или сервера и отправляет ее в серверный endpoint POST /api/telemetry.

Границы реализации v0.3

  • Linux collector собирает реальные данные через /proc, /sys, окружение сессии и системные журналы.
  • Windows collector формирует TelemetryRecord без PowerShell primary collection: identity/session/process/network/resource context через read-only системные источники и командные probe-фолбэки. Глубина WinAPI, ETW, Event Log API и WMI-библиотеки Rust является следующим расширением.
  • FreeBSD collector формирует TelemetryRecord через read-only системные probe: uname, sysctl, ps, ifconfig, sockstat, /var/log/messages. Глубина procstat/kvm является следующим расширением.
  • PowerShell не является основным механизмом сбора. Он допускается только как будущий legacy fallback под feature flag.
  • Агент не содержит скрытых функций, драйверов ядра, кейлоггера, записи экрана, перехвата документов и контентного DLP-анализа.

Crate

adk-rust/crates/awatch-agent-rs

Структура:

src/main.rs
src/config.rs
src/telemetry.rs
src/transport.rs
src/collectors/mod.rs
src/collectors/common.rs
src/collectors/linux.rs
src/collectors/windows.rs
src/collectors/freebsd.rs

Единая модель TelemetryRecord

Все платформы должны отдавать один JSON-контракт:

  • agent_id
  • hostname
  • os_name
  • os_version
  • platform
  • username
  • domain
  • timestamp
  • uptime_seconds
  • cpu_usage_percent
  • memory_total
  • memory_used
  • active_sessions
  • rdp_sessions
  • ssh_sessions
  • processes
  • network_interfaces
  • network_connections
  • workforce_activity
  • security_events
  • collector_version

Дополнительные структуры: SessionInfo, ProcessInfo, NetworkInterfaceInfo, NetworkConnectionInfo, WorkforceActivityInfo, SecurityEventInfo.

Collector trait

TelemetryCollector задает единый контракт:

collect_identity()
collect_sessions()
collect_processes()
collect_resources()
collect_network()
collect_security_events()
collect_workforce_activity()
collect_all()

Такой интерфейс позволяет расширять Windows, Linux, FreeBSD и pfSense mode без изменения серверного API.

Транспорт

Транспорт использует JSON over HTTPS:

POST /api/telemetry
x-api-key: <api-key>

При недоступности сервера запись не теряется: агент сохраняет JSON в spool и повторно отправляет после восстановления связи.