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

9.1 KiB
Raw Blame History

title, date, tags, status
title date tags status
MMFB/LionART — 1С-кластер-порты торчали в интернет → распределённый brute → lockout Администратора → падал Effector Saver 2026-06-28
mmfb
lionart
security
incident
mikrotik
1c
effector-saver
bruteforce
frame.ru
mitigated

MMFB / LionART 1C — экспозиция 1С-портов + brute-force (инцидент 2026-06-28)

Контекст

../projects/mmfb/lionart-1c (WIN-70M2VEJIKEF, 10.253.1.240, Win Server 2022), роутер ../projects/mmfb/mikrotik (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.2SSL 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/деней-лог на роутере.