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

UPnP IGD позволяет узлу в LAN 10.0.10.0/24 попросить шлюз открыть порт на WAN 203.0.113.10 без вашей матрицы. В офисе это выключают. Снимите уже созданные mapping, выключите UPnP/miniupnpd, запретите SSDP с LAN на WAN и к самому шлюзу, если не нужен. Не оставляйте «только для переговорки». Не отключайте nftables. Проверьте скан своего белого.

Пользовательский «не работает Discord/игра» — не повод для IGD на корпоративном периметре.

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

RouterOS: /ip upnp print enabled. В nat внезапно dstnat без комментария админа. nmap WAN: порты, которых нет в Excel. На ПК включён «разрешить приложениям открывать порты».

ПризнакUPnPРучной DNAT
Комментарий dynamic/upnpданет
Появилось после установки Zoomчастонет
Живёт после ребута ПКmapping может остатьсяпока не удалите

Отличие от осознанного проброса RDP: тот хотя бы в заявке. UPnP — самообслуживание malware и игр.

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

  1. Default SOHO-прошивки, MikroTik «как дома».
  2. miniupnpd на Ubuntu-шлюзе из гайда.
  3. Отдельный «Wi‑Fi роутер» за основным FW в режиме с UPnP.
  4. IoT VLAN с IGD.
  5. Админ включил, чтобы «принтер нашёл телевизор» — не та проблема.

Диагностика

/ip upnp print
/ip upnp interfaces print
/ip firewall nat print where comment~"upnp" or dynamic=yes
ss -lntup | grep -iE 'miniupnp|1900|5000'
systemctl is-active miniupnpd 2>/dev/null || true
sudo nft list ruleset | grep -i upnp

Скан своего WAN:

nmap -Pn -p 1-1024 203.0.113.10

Сравните с матрицей. Не сканируйте соседние IP провайдера.

tcpdump на LAN шлюза udp port 1900 — кто ищет IGD.

Концепция pfSense: Services UPnP & NAT-PMP — disable. Посмотреть existing mappings в GUI. Без выдуманного CLI.

На Windows-клиенте: не нужно выключать весь Windows Firewall; речь про роутер.

Решение

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

/system backup save name=before-upnp
/ip upnp set enabled=no
/ip upnp interfaces remove [find]

Удалите dynamic dstnat, которые оставил UPnP. Оставьте только матричные NAT.

Filter: drop к шлюзу udp 1900 с LAN, если сервисы discovery не нужны на FW:

/ip firewall filter add chain=input protocol=udp dst-port=1900 action=drop comment="no SSDP to router"

Не drop 1900 внутри LAN, если корпоративный DLNA осознанно — тогда хотя бы input на router.

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

sudo systemctl disable --now miniupnpd
sudo apt-get remove --purge miniupnpd
sudo cp /etc/nftables.conf /root/nftables.conf.bak.upnp

Уберите allow 1900/5000 на input. Проверьте, нет ли systemd socket.

sudo nft -c -f /etc/nftables.conf
sudo systemctl reload nftables

Сценарий C. Второй роутер в LAN

Найдите NAT за NAT: traceroute, TTL, второй DHCP. Выключите UPnP там или уберите устройство в bridge AP. Иначе основной FW чистый, а WAN провайдера открывает другой ящик.

Сценарий D. IoT

Отдельный VLAN без UPnP на корпоративном GW. Если вендору нужен IGD — не на WAN офиса; другой канал.

Сценарий E. NAT-PMP/PCP

Родственники UPnP. Выключите в той же политике, если видите сервисы. Не оставляйте PCP «потому что не UPnP».

Включите лог новых dstnat на переход. Сверьте лишние порты.

Откат: enable UPnP только на изолированном стенде, не в проде.

Охота на второй IGD в шкафу

После disable на основном RouterOS повторите скан своего 203.0.113.10. Если открытый порт жив, ищите второй NAT: провайдерский CPE в режиме router, «запасной» SOHO, LTE-модем с DHCP в LAN. Сравните TTL traceroute до белого и /ip dhcp-server кто выдаёт аренды. На CPE выключите UPnP/NAT-PMP теми же принципами; если CPE нельзя трогать — поставьте его в bridge и NAT только на своём FW.

На Ubuntu-шлюзе systemctl disable --now miniupnpd и ss без 1900 на input WAN/LAN к демону IGD. Временный tcpdump udp port 1900 на LAN покажет, кто ещё ищет шлюз: IoT можно перенести в VLAN без UPnP. Dynamic dstnat, оставшиеся после disable, удалите вручную и запишите в матрицу как закрытые. Канарейка: раз в неделю grep dynamic nat / upnp enabled в export.

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

  1. /ip upnp print disabled; miniupnpd inactive.
  2. Нет dynamic port mapping.
  3. Повтор nmap своего WAN = матрица, без сюрпризов.
  4. С тестового ПК в LAN SSDP к 10.0.10.1:1900 не открывает новый WAN-порт (монитор nat print до/после).
  5. Бизнес VPN/HTTPS живы.
  6. Firewall active.

Проверьте гостевой и IoT сегменты: UPnP на основном GW выключен, а на точке доступа в режиме router включён — WAN офиса может быть чист, а «второй интернет» LTE-модема пробрасывает порты мимо учёта. Сведите все устройства с NAT в список. На каждом: UPnP/NAT-PMP off, нет miniupnpd. В syslog ищите SSDP M-SEARCH к 10.0.10.1. Политика закупки SOHO: в чеклисте приёмки «UPnP disabled, скан своего WAN совпал с матрицей».

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

  • Mapping создаёт облачный агент не через UPnP, а через ручной DNAT — другая заявка.
  • IPv6 pinholes / firewall pinholes.
  • Клиент сам слушает на белом (нет NAT).
  • Капсула CAPsMAN с отдельным NAT.
  • Провайдерский CPE в режиме router+UPnP до вашего MikroTik.

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

  • Baseline: UPnP off на всех офисных GW.
  • Закупка: SOHO с UPnP default — сразу disable.
  • Мониторинг: появление dynamic dstnat = алерт.
  • Запрет в политике ИБ.
  • Guest VLAN тоже без UPnP.

FAQ

Нужен ли UPnP для VoIP?

Корпоративная телефония — явные порты/SBC, не IGD. Не открывайте UPnP «для SIP».

Windows «сетевое обнаружение» требует UPnP роутера?

Нет для AD/SMB в LAN. Это L2/L3 внутренние. Не путать.

Можно ли UPnP только с одного IP принтера?

В RouterOS интерфейсный UPnP всё равно опасен. Лучше явный DNAT запрещён, печать внутри VLAN.

NAT-PMP на Apple

Выключить на GW. AirPlay в guest/corp решается VLAN, не WAN mapping.

Это CVE?

Не важно. Класс риска — непрошеный DNAT. Номера CVE не выдумываем и не копируем «самую страшную».