Skip to content
ВозможностиДокументацияЦеныПартнёрыPlaygroundFAQ

ServerGuard

Мониторинг файловой системы и Docker событий на хосте в реальном времени: 5 уровней защиты

Обзор

ServerGuard — системный демон (inotify/fanotify + Docker events API), который мониторит критичные пути файловой системы и Docker события в реальном времени. Обнаруженные изменения логируются в audit log, доступны через forensics timeline, и могут автоматически триггерить политики (например, заблокировать агента при обнаружении модификации /etc/shadow). 5 уровней защиты (L0-L4) позволяют гибко настроить баланс между безопасностью и производительностью.

Файловые события

6 типов (CREATE, MODIFY, DELETE, ...)

Все тарифы

Docker события

11 типов (container, image, volume, ...)

Все тарифы

Уровни защиты

L0-L4, гибкая настройка

Все тарифы

Prometheus метрики

Built-in /metrics endpoint

Все тарифы

Архитектура и как это работает

ServerGuard запускается как systemd service на каждом хосте с FlowLink агентом. Он использует inotify (Linux) для отслеживания файловых событий и Docker Engine API для Docker событий. События отправляются на FlowLink relay, где обогащаются metadata и проверяются по политикам. При обнаружении критичного события (например, модификация /etc/passwd) ServerGuard может автоматически триггерить блокировку агента или создать incident.

# ServerGuard pipeline

1. Наблюдение:

inotify/fanotify (файлы) + Docker API (контейнеры)

2. Обогащение:

file hash, process info, user, severity classification

3. Отправка:

Event → FlowLink relay → audit log + policy check

4. Реакция:

Alert / Block agent / Create incident / Forensics snapshot

Уровни защиты (L0-L4)

Уровень защиты определяет набор отслеживаемых путей и реакцию на события. Можно настроить отдельно для каждого агента через shield_level в конфигурации.

УровеньЧто мониторитРеакция
L0Off — мониторинг отключёнНет
L1Docker события (start, stop, exec)Log only
L2Docker + /etc/*.conf, /var/wwwLog + Alert
L3Docker + /etc, /opt, /var, /usr/localLog + Alert + Policy check
L4Полная файловая система + DockerLog + Alert + Block + Incident

Файловые события (6 типов)

CREATE

Новый файл

MODIFY

Изменение содержимого

DELETE

Удаление

MOVE

Перемещение/переименование

ATTRIB

Изменение атрибутов (chmod/chown)

SUID

Изменение setuid/setgid бит

Docker события (11 типов)

container_create
container_start
container_stop
container_destroy
container_exec
image_pull
image_push
volume_create
volume_destroy
network_connect
network_disconnect

Установка и запуск

bash
1# Автоматическая установка
2curl -fsSL https://flowlink.flow-masters.ru/install.sh | sh
3
4# Запуск ServerGuard как systemd service
5sudo systemctl enable flowlink-guard
6sudo systemctl start flowlink-guard
7
8# Ручной запуск (foreground mode)
9/opt/flowlink/bin/flowlink-relay guard \
10 --relay http://127.0.0.1:9081 \
11 --agent $AGENT_ID --key $TOKEN \
12 start --foreground --docker --watch /etc,/opt,/var/www
13
14# Проверка статуса
15sudo systemctl status flowlink-guard
16/opt/flowlink/bin/flowlink-relay guard status

Конфигурация

Конфигурация ServerGuard задаётся в YAML файле или через API. Основные параметры: watch_paths, docker, ignore_patterns, alert_on, policy_trigger.

yaml
1# /etc/flowlink/serverguard.yml
2serverguard:
3 shield_level: L3 # Уровень защиты (L0-L4)
4
5 watch_paths: # Отслеживаемые директории
6 - /etc
7 - /opt/flowlink
8 - /var/www
9
10 docker: true # Мониторинг Docker событий
11
12 ignore_patterns: # Исключения
13 - "*.log"
14 - "/tmp/*"
15 - "/var/log/*"
16 - "/proc/*"
17 - "/sys/*"
18
19 alert_on: # События для алертов
20 - suid_change
21 - critical_path_modify # /etc/passwd, /etc/shadow
22 - unauthorized_container_start
23 - image_pull_from_untrusted
24
25 policy_trigger: true # Автоматическая проверка политик
26 scan_interval: 5000 # Интервал сканирования (ms)
27 max_events_per_second: 100 # Rate limiting для событий

Метрики Prometheus

ServerGuard предоставляет /metrics endpoint на порту 9092 для интеграции с Prometheus и Grafana.

bash
1curl http://localhost:9092/metrics
2
3# flowlink_guard_file_events_total{path="/etc", type="modify"} 142
4# flowlink_guard_docker_events_total{action="container_start"} 23
5# flowlink_guard_suid_changes_total 2
6# flowlink_guard_critical_path_modifies_total 0
7# flowlink_guard_scanned_paths 3
8# flowlink_guard_uptime_seconds 86400
9# flowlink_guard_events_per_second 1.5

Алерт и реакция

При обнаружении критичного события ServerGuard запускает response pipeline. Реакция зависит от shield_level и настроек policy_trigger.

1. ServerGuard обнаруживает изменение /etc/passwd
2. Событие обогащается: file hash, process info, user, timestamp
3. Событие логируется в audit log с severity=high
4. Если policy_trigger=true — проверяются политики
5. Совпавшая политика блокирует агента и создаёт incident
6. Уведомление отправляется через Telegram / Slack / Webhook
7. Forensics snapshot создаётся для последующего расследования

API Reference

Список событий

bash
1curl -s "https://api.flowlink.io/v1/guard/events?agent_id=agent-prod-01&since=24h&severity=high" \
2 -H "Authorization: Bearer $TOKEN" | jq
json
1{
2 "events": [
3 {
4 "id": "evt_guard_001",
5 "timestamp": "2026-01-15T14:30:00Z",
6 "agent_id": "agent-prod-01",
7 "event_type": "file_modify",
8 "path": "/etc/nginx/nginx.conf",
9 "old_hash": "sha256:abc123def456",
10 "new_hash": "sha256:789abc012def",
11 "severity": "medium",
12 "process": "nginx",
13 "user": "root",
14 "shield_level": "L3",
15 "policy_triggered": false
16 },
17 {
18 "id": "evt_guard_002",
19 "timestamp": "2026-01-15T14:31:00Z",
20 "agent_id": "agent-prod-01",
21 "event_type": "container_exec",
22 "container_id": "abc123def456",
23 "command": "cat /etc/shadow",
24 "severity": "critical",
25 "shield_level": "L3",
26 "policy_triggered": true,
27 "action_taken": "agent_blocked"
28 }
29 ],
30 "total": 2,
31 "cursor": "next_page_token"
32}

Обновить конфигурацию

bash
1curl -X PATCH "https://api.flowlink.io/v1/guard/config/agent-prod-01" \
2 -H "Authorization: Bearer $TOKEN" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "shield_level": "L4",
6 "watch_paths": ["/etc", "/opt", "/var", "/usr/local"],
7 "docker": true,
8 "policy_trigger": true
9 }'
json
1{
2 "agent_id": "agent-prod-01",
3 "shield_level": "L4",
4 "watch_paths": ["/etc", "/opt", "/var", "/usr/local"],
5 "docker": true,
6 "status": "active",
7 "updated_at": "2026-01-15T14:35:00Z"
8}

Статус ServerGuard

bash
1curl -s "https://api.flowlink.io/v1/guard/status/agent-prod-01" \
2 -H "Authorization: Bearer $TOKEN" | jq
json
1{
2 "agent_id": "agent-prod-01",
3 "status": "active",
4 "shield_level": "L4",
5 "scanned_paths": 4,
6 "docker_monitoring": true,
7 "events_last_24h": 347,
8 "critical_events_last_24h": 2,
9 "uptime_seconds": 172800,
10 "version": "1.5.0"
11}

Health Check интеграция

ServerGuard интегрируется с FlowLink Health Check для мониторинга целостности критичных файлов. Hash файлов сравнивается с baseline для обнаружения несанкционированных изменений.

yaml
1# Health check с ServerGuard интеграцией
2health_check:
3 file_integrity:
4 enabled: true
5 baseline_paths:
6 - /etc/passwd
7 - /etc/shadow
8 - /etc/ssh/sshd_config
9 - /etc/nginx/nginx.conf
10 check_interval: 300 # Каждые 5 минут
11 alert_on_drift: true # Алерт при отклонении от baseline

Устранение неполадок

ServerGuard не запускается

Проверьте systemd status: systemctl status flowlink-guard. Убедитесь, что inotify watches не превышают fs.inotify.max_user_watches. Для больших файловых систем увеличьте limit в /etc/sysctl.conf.

Слишком много ложных алертов

Настройте ignore_patterns для исключения шумных путей (*.log, /var/log, /tmp). Используйте alert_on для точной настройки событий, вызывающих алерт.

Docker события не отслеживаются

Убедитесь, что docker: true в конфигурации и FlowLink агент имеет доступ к Docker socket (/var/run/docker.sock). Проверьте права доступа.

Лучшие практики

Начните с L2 и повышайте постепенно

L2 даёт базовый мониторинг с минимальным overhead. Повышайте до L3/L4 после настройки ignore_patterns.

Настройте ignore_patterns тщательно

Исключите /var/log, /tmp, *.log и другие шумные пути. Это снижает false positives на 80-90%.

Используйте file integrity baseline

Создайте baseline критичных файлов через health_check. Это обеспечивает детект несанкционированных изменений.

Мониторьте Prometheus метрики

Настройте алерты на flowlink_guard_critical_path_modifies_total > 0 и flowlink_guard_suid_changes_total > 0.

Тестируйте в staging перед production

Запустите ServerGuard в staging с L4 для оценки объема событий и настройки ignore_patterns.

Edit this page