Короткий ответ

Управление периметром не слушается на WAN 203.0.113.10. GUI (WinBox 8291, www 80/443, веб pfSense/OPNsense), SSH 22, API — только из mgmt 10.0.99.0/24 и admin-VPN. С улицы эти порты filtered/closed. Сначала поднимите рабочий VPN и консольный доступ (MAC/serial/KVM), сделайте backup, потом закройте WAN-admin. Не отключайте firewall «чтобы зайти».

Смена порта WinBox на 8292 без фильтра источника — не решение. Сканеры найдут.

Детальнее по всем админ-интерфейсам хостов — закрыть административные интерфейсы. Здесь — сам firewall.

Симптомы и как отличить

С LTE nmap своего белого: open 8291, 22, 80, 443 с редиректом на /login или WinBox handshake. В логах RouterOS login failure с адресов не из 10.0.99.0/24. Веб Ubuntu-шлюза nginx на 443 отдаёт luci/cockpit/панель.

ПортЭто админкаЭто не админка
8291WinBox
22 на WAN шлюзаsshd/RouterOS sshGit на другом VIP
443 /login firewallGUIсайт в DMZ 10.0.30.10
443 VPN-порталотдельный сервисне WinBox, но тоже не Any

Отличие от проброса RDP: здесь слушает сам edge, не DNAT в LAN.

Возможные причины

  1. Default RouterOS: сервисы на всех IP.
  2. Мастер pfSense включил web on WAN «для первоначальной настройки».
  3. sshd Listen 0.0.0.0 на Ubuntu-шлюзе, input accept tcp 22 с WAN.
  4. Подрядчик попросил «открыть WinBox на час».
  5. Hairpin/NAT: думаете, что GUI только LAN, а WAN IP тоже bind.
  6. IPv6 AAAA открыт.

Диагностика

С внешнего своего сканера (LTE), только свой IP:

nmap -Pn -p 22,80,443,8291,8728,8729,161 203.0.113.10

На самом устройстве, из LAN 10.0.10.0/24 или уже из mgmt:

sudo ss -lntup | awk 'NR==1 || /:22|:80|:443|:8291|:8728/'
sudo nft list ruleset
ip -4 addr
/ip service print
/ip firewall filter print where chain=input
/ip ssh print
/user print

Проверьте, с каких адресов идут попытки входа (/log print where topics~"system,error,critical" или auth.log). Публичные /8../24 не из вашей ASN — шум интернета, не «свои».

Концептуально GUI периметра: Anti-lockout не должен оставлять WAN web навсегда. Смотрите listen на WAN interface, не только LAN.

Решение

Сценарий A. RouterOS 7

Путь доступа: Ethernet LAN или 10.0.99.0/24, backup:

/system backup save name=before-wan-admin
/export file=before-wan-admin
/ip service set telnet disabled=yes
/ip service set ftp disabled=yes
/ip service set www disabled=yes
/ip service set api disabled=yes
/ip service set api-ssl disabled=yes
/ip service set winbox address=10.0.99.0/24,10.0.10.0/24
/ip service set ssh address=10.0.99.0/24
/ip service set www-ssl disabled=yes

Filter input (выше drop WAN):

/ip firewall filter add chain=input connection-state=established,related action=accept place-before=0
/ip firewall filter add chain=input in-interface-list=WAN protocol=udp dst-port=51820 action=accept comment="admin-WG"
/ip firewall filter add chain=input in-interface-list=WAN action=drop comment="no WAN admin"

Не публикуйте 8291 «только для своего домашнего IP» — CPE меняет адрес. VPN.

Подрядчику — учётка + VPN, не дырка. После работ ограничьте brute.

Сценарий B. Ubuntu nftables-шлюз

sshd только mgmt:

# /etc/ssh/sshd_config.d/99-mgmt.conf
# ListenAddress 10.0.99.1
# PasswordAuthentication no
sudo sshd -t
sudo systemctl reload ssh

nft input:

sudo cp /etc/nftables.conf /root/nftables.conf.bak.admin
# iifname wan tcp dport { 22, 80, 443 } drop
# iifname mgmt tcp dport 22 ip saddr 10.0.99.0/24 accept
sudo nft -c -f /etc/nftables.conf
sudo systemctl reload nftables

Если 443 на WAN нужен для сайта — сайт должен жить в DMZ на 10.0.30.10, не панель шлюза. Разведите VIP.

Cockpit/Webmin: выключите или bind 10.0.99.1.

Сценарий C. Веб-GUI stateful периметра

Концепция: WebConfigurator / HTTPS admin — listen только LAN/mgmt. WAN anti-lockout снимите после проверки доступа с 10.0.99.10 и с VPN. Не оставляйте «allow from any» на 443 admin. Отдельный порт GUI не равен закрытию WAN.

Сценарий D. VPN ещё нет

Не закрывайте WAN-admin в ту же минуту. Поднимите WireGuard/IPsec на UDP из матрицы, проверьте вход на 10.0.99.1:22 через туннель, оставьте консоль. Затем drop WAN 22/8291. План отката: enable сервиса + allow на 10 минут с таймером.

Включите лог input drop на 22/8291 с WAN — увидите, что шум не исчез, просто не доходит до login.

Как проверить, что проблема устранена

  1. LTE: nmap -Pn -p 22,80,443,8291 203.0.113.10 — 22/8291/admin-http не open. 443 open только если это сайт/VPN, не GUI логина firewall.
  2. С 10.0.99.10: WinBox/SSH/GUI работают.
  3. С admin-VPN: то же.
  4. С LAN пользователя 10.0.10.50 без необходимости — лучше не пускать на WinBox; если ещё пускаете, запланируйте сужение только mgmt.
  5. Новые login failure с публичных IP прекращаются (старые логи не в счёт).
Test-NetConnection 203.0.113.10 -Port 8291
Test-NetConnection 203.0.113.10 -Port 22

Оба fail с улицы. После VPN — success на внутренний IP шлюза, не на WAN.

Если не помогло

  • IPv6 слушает :22 — повторите.
  • www-ssl оставили enabled.
  • API 8728/8729.
  • Облачный security group any:22 параллельно «домашнему» nft.
  • Пользователи путают 443 сайта и 443 GUI — разные DN, разные listen.
  • Скан из офисного Wi‑Fi показывает open — это не улица.

Профилактика

  • Стандарт установки: сразу address= mgmt, WAN drop input.
  • MFA на VPN админов.
  • Отдельные учётки, не admin/toor с WAN.
  • Квартальный скан периметра.
  • Алерт: SYN на 8291/22 WAN.
  • Запрет «открой WinBox, я в такси» без VPN.

FAQ

Можно ли whitelist своего домашнего IP?

Пока не сменится DHCP. VPN дешевле по заявкам.

Нужен ли www-ssl для обновления RouterOS?

Нет. WinBox/SSH/пакеты через 10.0.99.0/24.

443 на WAN обязателен для ACME?

ACME к reverse proxy в DMZ, не к GUI firewall. Если challenge на edge — отдельный путь, не админ-логин.

Safe Mode на MikroTik

Держите, пока не подтвердили вход с LAN и VPN. Не подтверждайте, сидя только с WAN.

SNMP 161 с улицы

Тоже админ-плоскость. Закройте. Read-only community public на WAN — отдельный инцидент.