# 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 # SQLAlchemy pool (uvicorn workers × concurrent ingest). Было по умолчанию 5+10 — мало для штурма 09:00. SAC_DB_POOL_SIZE=15 SAC_DB_MAX_OVERFLOW=25 # Uvicorn workers (ingest burst). Читает deploy/systemd/sac-api-start.sh; при >1 отключите in-process host_silence scan ниже. SAC_UVICORN_WORKERS=4 SAC_PUBLIC_URL=https://sac.kalinamall.ru # Опционально: другой базовый URL для WinRM-скачивания RDP bundle с ПК (LAN / split-DNS). # SAC_AGENT_BUNDLE_BASE_URL=https://192.168.x.x JWT_SECRET=CHANGE_ME_openssl_rand_hex_32 SAC_SECURITY_ENFORCE=true # 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 (без ожидания нового события с хоста) # Если включён systemd timer sac-host-silence-scan.timer — лучше SAC_HOST_SILENCE_SCAN_ENABLED=false # (иначе scan идёт параллельно из каждого uvicorn worker + timer). 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 # IP HAProxy (или другого RDG-прокси), через который виден вход: external_ip в событии 302/303 # SAC_RDG_HAPROXY_EXTERNAL_IPS=192.168.160.50,10.0.0.100 # 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 # IP через запятую — не блокируются в UI (дополняет список в Настройках SAC) SAC_LOGIN_IP_WHITELIST=192.168.160.3 # fail2ban: синхронизация белого списка из UI (нужны права записи + reload) SAC_FAIL2BAN_SYNC_ENABLED=false SAC_FAIL2BAN_SSH_JAIL=sshd SAC_FAIL2BAN_IGNOREIP_FILE=/etc/fail2ban/jail.d/sac-login-whitelist.local # 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=https://sac.kalinamall.ru # SSH: verify host keys (RejectPolicy). Add keys to file before remote actions. # Комментарий — только отдельной строкой с #. Нельзя: SAC_SSH_AUTO_ADD_HOST_KEY=false ← текст # SAC_SSH_KNOWN_HOSTS_FILE=/opt/security-alert-center/config/ssh_known_hosts # SAC_SSH_AUTO_ADD_HOST_KEY=false # WinRM: enable HTTPS listener on clients (5986) before turning on. # SAC_WINRM_USE_HTTPS=false # SAC_WINRM_SERVER_CERT_VALIDATION=validate