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 в конфигурации.
| Уровень | Что мониторит | Реакция |
|---|---|---|
| L0 | Off — мониторинг отключён | Нет |
| L1 | Docker события (start, stop, exec) | Log only |
| L2 | Docker + /etc/*.conf, /var/www | Log + Alert |
| L3 | Docker + /etc, /opt, /var, /usr/local | Log + Alert + Policy check |
| L4 | Полная файловая система + Docker | Log + Alert + Block + Incident |
Файловые события (6 типов)
CREATEНовый файл
MODIFYИзменение содержимого
DELETEУдаление
MOVEПеремещение/переименование
ATTRIBИзменение атрибутов (chmod/chown)
SUIDИзменение setuid/setgid бит
Docker события (11 типов)
container_createcontainer_startcontainer_stopcontainer_destroycontainer_execimage_pullimage_pushvolume_createvolume_destroynetwork_connectnetwork_disconnectУстановка и запуск
1# Автоматическая установка2curl -fsSL https://flowlink.flow-masters.ru/install.sh | sh34# Запуск ServerGuard как systemd service5sudo systemctl enable flowlink-guard6sudo systemctl start flowlink-guard78# Ручной запуск (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/www1314# Проверка статуса15sudo systemctl status flowlink-guard16/opt/flowlink/bin/flowlink-relay guard status
Конфигурация
Конфигурация ServerGuard задаётся в YAML файле или через API. Основные параметры: watch_paths, docker, ignore_patterns, alert_on, policy_trigger.
1# /etc/flowlink/serverguard.yml2serverguard:3 shield_level: L3 # Уровень защиты (L0-L4)45 watch_paths: # Отслеживаемые директории6 - /etc7 - /opt/flowlink8 - /var/www910 docker: true # Мониторинг Docker событий1112 ignore_patterns: # Исключения13 - "*.log"14 - "/tmp/*"15 - "/var/log/*"16 - "/proc/*"17 - "/sys/*"1819 alert_on: # События для алертов20 - suid_change21 - critical_path_modify # /etc/passwd, /etc/shadow22 - unauthorized_container_start23 - image_pull_from_untrusted2425 policy_trigger: true # Автоматическая проверка политик26 scan_interval: 5000 # Интервал сканирования (ms)27 max_events_per_second: 100 # Rate limiting для событий
Метрики Prometheus
ServerGuard предоставляет /metrics endpoint на порту 9092 для интеграции с Prometheus и Grafana.
1curl http://localhost:9092/metrics23# flowlink_guard_file_events_total{path="/etc", type="modify"} 1424# flowlink_guard_docker_events_total{action="container_start"} 235# flowlink_guard_suid_changes_total 26# flowlink_guard_critical_path_modifies_total 07# flowlink_guard_scanned_paths 38# flowlink_guard_uptime_seconds 864009# flowlink_guard_events_per_second 1.5
Алерт и реакция
При обнаружении критичного события ServerGuard запускает response pipeline. Реакция зависит от shield_level и настроек policy_trigger.
API Reference
Список событий
1curl -s "https://api.flowlink.io/v1/guard/events?agent_id=agent-prod-01&since=24h&severity=high" \2 -H "Authorization: Bearer $TOKEN" | jq
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": false16 },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}
Обновить конфигурацию
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": true9 }'
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
1curl -s "https://api.flowlink.io/v1/guard/status/agent-prod-01" \2 -H "Authorization: Bearer $TOKEN" | jq
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 для обнаружения несанкционированных изменений.
1# Health check с ServerGuard интеграцией2health_check:3 file_integrity:4 enabled: true5 baseline_paths:6 - /etc/passwd7 - /etc/shadow8 - /etc/ssh/sshd_config9 - /etc/nginx/nginx.conf10 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.