64 lines
9.1 KiB
Markdown
64 lines
9.1 KiB
Markdown
---
|
||
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/деней-лог на роутере.
|