2aec488226
Detect 302→303 within 1–10s, Problem with 30s dedup, rdg_flap flag. Agent command poll API, admin qwinsta/logoff from Overview. Migration 016.
108 lines
3.7 KiB
Plaintext
108 lines
3.7 KiB
Plaintext
# Native: /opt/security-alert-center/config/sac-api.env
|
|
# sudo chown sac:sac ... && sudo chmod 600 ...
|
|
# Пароль в URL — в двойных кавычках. Символ # в пароле допустим только внутри кавычек.
|
|
# systemd НЕ парсит этот файл — читает приложение (SAC_CONFIG_FILE).
|
|
|
|
DATABASE_URL=postgresql+psycopg2://sac:CHANGE_ME_POSTGRES_PASSWORD@127.0.0.1:5432/sac
|
|
|
|
SAC_PUBLIC_URL=https://sac.kalinamall.ru
|
|
JWT_SECRET=CHANGE_ME_openssl_rand_hex_32
|
|
|
|
# API key для агентов: Authorization: Bearer <ключ>
|
|
# python3.12 -c "import secrets; print('sac_'+secrets.token_urlsafe(32))"
|
|
SAC_BOOTSTRAP_API_KEY=sac_replace_with_generated_key
|
|
|
|
EVENT_SCHEMA_PATH=/opt/security-alert-center/schemas/event-schema-v1.json
|
|
|
|
SAC_ADMIN_USERNAME=admin
|
|
SAC_ADMIN_PASSWORD=
|
|
|
|
# Telegram notifications from SAC (phase 1C.4)
|
|
# При UseSAC=exclusive на агентах — основной канал для оператора; см. docs/agent-integration.md §1.3.1
|
|
TELEGRAM_ENABLED=false
|
|
TELEGRAM_BOT_TOKEN=
|
|
TELEGRAM_CHAT_ID=
|
|
# exclusive: warning (failed login, problems); prod noise-only: high
|
|
TELEGRAM_MIN_SEVERITY=high
|
|
|
|
# Generic webhook (JSON POST), F-NOT-01
|
|
WEBHOOK_ENABLED=false
|
|
WEBHOOK_URL=
|
|
WEBHOOK_SECRET_HEADER=
|
|
WEBHOOK_SECRET=
|
|
WEBHOOK_MIN_SEVERITY=high
|
|
|
|
# SMTP email (F-NOT-01)
|
|
SMTP_ENABLED=false
|
|
SMTP_HOST=
|
|
SMTP_PORT=587
|
|
SMTP_USER=
|
|
SMTP_PASSWORD=
|
|
SMTP_FROM=
|
|
SMTP_TO=
|
|
SMTP_STARTTLS=true
|
|
SMTP_SSL=false
|
|
SMTP_MIN_SEVERITY=high
|
|
|
|
# Глобальное правило: severity ≥ NOTIFY_MIN_SEVERITY → каналы из NOTIFY_CHANNELS
|
|
NOTIFY_MIN_SEVERITY=warning
|
|
NOTIFY_CHANNELS=telegram,webhook,email
|
|
|
|
# Cooldown оповещений SAC (секунды; 0 = выкл. для kind)
|
|
SAC_NOTIFY_COOLDOWN_ENABLED=true
|
|
SAC_NOTIFY_EVENT_COOLDOWN_SEC=90
|
|
SAC_NOTIFY_PROBLEM_COOLDOWN_SEC=300
|
|
|
|
# Суточные отчёты из SAC (F-NOT-05; systemd sac-daily-report.timer)
|
|
SAC_DAILY_REPORT_ENABLED=true
|
|
SAC_DAILY_REPORT_HOUR=9
|
|
SAC_DAILY_REPORT_TIMEZONE=Europe/Moscow
|
|
SAC_DAILY_REPORT_SKIP_IF_AGENT_SENT=true
|
|
SAC_DAILY_REPORT_REQUIRE_ACTIVITY=true
|
|
|
|
# Статус хоста по agent.heartbeat
|
|
# Порог stale для agent.heartbeat (мин). При интервале агента ~4 ч — 300 (5 ч) даёт запас.
|
|
SAC_HEARTBEAT_STALE_MINUTES=300
|
|
|
|
# Проактивный алерт host_silence (без ожидания нового события с хоста)
|
|
SAC_HOST_SILENCE_SCAN_ENABLED=true
|
|
SAC_HOST_SILENCE_SCAN_INTERVAL_MINUTES=5
|
|
|
|
# Корреляция Problems: host + type + rule в одном open Problem (минуты)
|
|
SAC_PROBLEM_CORRELATION_WINDOW_MINUTES=60
|
|
|
|
# rule:brute_force_burst (ssh.login.failed / rdp.login.failed)
|
|
SAC_BRUTE_FORCE_WINDOW_MINUTES=15
|
|
SAC_BRUTE_FORCE_THRESHOLD=30
|
|
|
|
# rule:privilege_spike (privilege.sudo.command)
|
|
SAC_PRIVILEGE_SPIKE_WINDOW_MINUTES=10
|
|
SAC_PRIVILEGE_SPIKE_THRESHOLD=10
|
|
|
|
# rule:rdg_session_flap (302→303)
|
|
SAC_RDG_FLAP_WINDOW_MIN_SEC=1
|
|
SAC_RDG_FLAP_WINDOW_MAX_SEC=10
|
|
SAC_RDG_FLAP_DEDUP_SEC=30
|
|
|
|
# qwinsta/logoff на Windows-хостах (доменный admin)
|
|
# SAC_WIN_ADMIN_USER=B26\\Administrator
|
|
# SAC_WIN_ADMIN_PASSWORD=
|
|
|
|
# Retention (systemd sac-retention.timer)
|
|
SAC_EVENTS_RETENTION_DAYS=90
|
|
SAC_PROBLEMS_RETENTION_DAYS=180
|
|
|
|
# UI login: блокировка IP после N неудачных попыток (окно в минутах) + алерт в Telegram
|
|
SAC_LOGIN_MAX_FAILURES=3
|
|
SAC_LOGIN_FAILURE_WINDOW_MINUTES=15
|
|
SAC_LOGIN_ALERT_TELEGRAM=true
|
|
|
|
# Seaca mobile push (FCM HTTP v1)
|
|
SAC_FCM_ENABLED=false
|
|
SAC_FCM_PROJECT_ID=
|
|
# Путь к JSON service account Firebase (chmod 600, владелец sac)
|
|
SAC_FCM_SERVICE_ACCOUNT_JSON=
|
|
SAC_MOBILE_REFRESH_EXPIRE_DAYS=90
|
|
|
|
CORS_ORIGINS=*
|