Files
knowledge-base/decisions/2026-06-28-mmfb-1c-cluster-ports-exposed-bruteforce.md

64 lines
9.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: MMFB/LionART — 1С-кластер-порты торчали в интернет → распределённый brute → lockout Администратора → падал Effector Saver
date: 2026-06-28
tags: [mmfb, lionart, security, incident, mikrotik, 1c, effector-saver, bruteforce, frame.ru]
status: mitigated
---
# MMFB / LionART 1C — экспозиция 1С-портов + brute-force (инцидент 2026-06-28)
## Контекст
[[../projects/mmfb/lionart-1c|VM 100 pve LionART]] (`WIN-70M2VEJIKEF`, 10.253.1.240, Win Server 2022), роутер [[../projects/mmfb/mikrotik|MikroTik LionART]] (10.253.1.1, `AI`/`OL260380eg`), WAN `195.26.30.163`. Начиналось как «восстановить Effector Saver» — оказалось рецидивом из-за внешней атаки.
## Корень (подтверждён)
На MikroTik `netmap` пробрасывал **порты кластера 1С с WAN на .240**:
- `195.26.30.163:1540``.240:1540` (ragent)
- `:1541``.240:1541` (rmngr, менеджер кластера)
- `:1560-1591``.240:1560-1591` (рабочие процессы)
Боты из интернета долбили эти порты → 1С запускал ОС-аутентификацию (**NTLM, LogonType 3**) словарными именами (`1C, ADM1C, ADMIN, KLUCH, 88888888, SUPERUSER`...) → политика lockout `10/10/10`**`.\Администратор` локался каждые ~10 мин** → падали и RDP Олега, и `efsaveragent` (работает под `.\Администратор`). Бэкапы стояли ~3 дня (25.06→28.06).
Правило srcnat #0 `masquerade out-interface=!ether1-gw-telekom` подменяло источник проброшенного трафика на `10.253.1.1` — поэтому на коробке в 4625/4740 светился «роутер», а реальные IP были видны только в conntrack роутера.
## Не взломаны
0 успешных входов (4624 type 3/10) с пути атаки за 24ч — lockout честно отбивал перебор. Рога-аккаунтов в локальных юзерах/админах нет, подозрительных слушающих портов/бэкдоров нет (1433 SQL, 154x 1C, 47001 WinRM — штатно).
## Атакующие (из conntrack/deny-лога роутера)
`154.57.197.99` (основной, ARIN-аноним, 15+ портов-шторм), `94.26.88.0/24`+`94.26.68.0/24` (Razinet BG), `217.74.38.154` (DataFort RU), `38.253.156.213` (Cogent), `212.23.222.71`, `185.56.162.72` (Hosting-VDS RU — изначально ошибочно принял за сайт, оказался переборщиком), `185.46.47.157` (Pronet), `95.68.225.46` (Rostelecom). Распределённый — блок по одному /24 не помогал.
## Сайт ≠ переборщики
Синхронизация — **frame.ru = `92.53.96.188`** (JSC Timeweb, подтверждённый **Bitrix**: `x-powered-cms: Bitrix Site Manager`). В наблюдении frame.ru **ни разу не подключался** к 1С-портам (accept-счётчик 0, в deny-логе нет `92.53.x`). box→`frame.ru:443` достижим. → Обмен Bitrix↔1С, вероятно, **исходящий** (1С шлёт на сайт по HTTP), а входящие 1С-кластер-порты сайту **не нужны** — это чистая поверхность атаки. (Окончательно подтвердить, понаблюдав полный цикл обмена / спросив Олега про схему.)
## Что сделано (MikroTik, всё помечено `incident-20260628`, reversible)
Forward chain (по порядку, до общего `accept dst-address=10.253.1.0/24`):
1. `accept tcp src-address=92.53.96.188 dst-address=10.253.1.240 dst-port=1540,1541,1560-1591` (allow frame.ru) — пока 0 пакетов
2. `drop src-address-list=1c-bruteforce` (address-list = 94.26.88.0/24, 94.26.68.0/24)
3. `drop tcp dst-address=10.253.1.240 dst-port=1540,1541,1560-1591` (deny всех прочих на 1С-порты)
**Результат:** 4625 `146/5мин → 0`; 4740 lockout `каждые 10 мин → 0`; `.\Администратор` разлочен и держится; `efsaveragent` Running.
## Осталось
- **Подтвердить, что обмен frame.ru исходящий** → если да, **снять проброс 1540/1541/1560-1591 целиком** (NAT-правила #3/#4/#5) — полностью закрыть дыру; whitelist-фильтр тогда не нужен.
- **Развязать `efsaveragent` от `.\Администратор`** → LocalSystem/сервисная учётка (см. [[2026-05-28-mmfb-effector-saver-locked-admin]]) — чтобы любой lockout не ронял бэкап. Нужен ответ: Effector пишет копии локально или на UNC.
- ~~Watchdog~~ **СДЕЛАНО 2026-06-28:** `/root/antoshka-watch-effector.sh` на Антошке (LXC 137), cron `*/10`. SSH-проверка `efsaveragent` + lockout `.\Администратор` + признаки атаки (4740/30м, 4625/5м) → **self-heal** (тот же playbook) → алерт в **TG** (бот `8020760639` → chat `1292155421`) и **email** (`support@dttb.ru` через `10.0.0.107:587` curl STARTTLS), дедуп по сигнатуре + «отбой». Ключ Антошки `ssh-ed25519 ...root@openclaw` в `administrators_authorized_keys` коробки. Боевой тест (stop службы → авто-подъём → отбой) пройден, оба канала живые. State: `/root/.antoshka-watch-effector.state`. Box-side проверка — `powershell -EncodedCommand` (Cyrillic-safe). ⚠️ Пока мониторит службу/lockout, НЕ факт успешности бэкапа — для этого нужен адрес хранилища Effector (esdata.db/fmanager).
- **Периметр:** наружу торчат ещё `8006`→Proxmox (.200), SSH `22`→.49 / `2222`→.205, `8007`→.245, `80/443`→NPM(.25) — отдельный аудит.
## Email-уведомления Effector — РЕШЕНО (через mailcow dual-cert)
Цель: штатный email-отчёт Effector → `support@dttb.ru` (свежесть бэкапов из CLI не снять — копии Effector удаляет после выгрузки, esdata.db=Absolute DB).
Проблема: Effector Saver 4.8 — древний TLS-стек (OpenSSL/Indy 2018, **TLS 1.0**, только RSA-шифры). mailcow на 587 отдавал **только ECDSA-серт + TLS≥1.2**`SSL negotiation failed`.
Фикс на **mailcow (VM 107, `/opt/mailcow-dockerized`)**, всё в `data/conf/postfix/extra.cf` (тег `incident-20260628`, бэкап рядом `.bak-rsa-*`):
1. **Dual-cert:** сгенерён self-signed RSA `data/assets/ssl/rsa-cert.pem`+`rsa-key.pem` (CN=mail.dttb.ru, 10 лет). В extra.cf: `smtpd_tls_cert_file`=RSA, `smtpd_tls_key_file`=RSA, `smtpd_tls_eccert_file`=cert.pem(ECDSA), `smtpd_tls_eckey_file`=key.pem. Теперь postfix отдаёт И RSA, И ECDSA-шифры.
2. **TLS 1.0 на портах отправки:** `submission_smtpd_tls_mandatory_protocols = >=TLSv1`, `smtps_smtpd_tls_mandatory_protocols = >=TLSv1` (только 587/465; порт 25 и общий не трогали).
3. `docker compose restart postfix-mailcow`.
Итог: тест из Effector «e-mail успешно отправлен». Современные клиенты по-прежнему ECDSA/TLS1.3 (не сломано). ⚠️ Компромисс: TLS 1.0 на 587/465 — слабее; снять, когда Effector обновят/заменят. RSA-серт self-signed (Effector серт не валидирует); при желании заменить на валидный LE RSA. Revert: убрать строки из extra.cf + рестарт.
Настройки в Effector (вводил Олег в GUI): `mail.dttb.ru:587 STARTTLS`, `support@dttb.ru`/пароль, From `support@dttb.ru`. Задача «Отправка отчёта» → «Задачи в отчёте» все 6, расписание ~07:00.
## Уроки
- 1С-кластер (ragent/rmngr/worker-порты) **никогда не выставлять в интернет** — это и DoS через lockout, и риск RCE. Доступ только через NetBird/OVPN, обмен с сайтом — исходящим HTTP.
- При «служба под доменным/локальным админом падает + учётка лочится» — проверь **внешний brute** (4625/4740 + conntrack роутера), а не только SCM-пароль. [[2026-05-28-mmfb-effector-saver-locked-admin]] лечил симптом, корень был в экспозиции.
- MikroTik `masquerade out-interface=!WAN` прячет реальные source-IP в логах коробки — смотри conntrack/деней-лог на роутере.