# 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= # SSH / update_ssh_monitor.sh на Linux-хостах # SAC_LINUX_ADMIN_USER=root # SAC_LINUX_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=*