Короткий ответ
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 и игр.
Возможные причины
- Default SOHO-прошивки, MikroTik «как дома».
- miniupnpd на Ubuntu-шлюзе из гайда.
- Отдельный «Wi‑Fi роутер» за основным FW в режиме с UPnP.
- IoT VLAN с IGD.
- Админ включил, чтобы «принтер нашёл телевизор» — не та проблема.
Диагностика
/ip upnp print
/ip upnp interfaces print
/ip firewall nat print where comment~"upnp" or dynamic=yesss -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.
Как проверить, что проблема устранена
/ip upnp printdisabled; miniupnpd inactive.- Нет dynamic port mapping.
- Повтор nmap своего WAN = матрица, без сюрпризов.
- С тестового ПК в LAN SSDP к
10.0.10.1:1900не открывает новый WAN-порт (монитор nat print до/после). - Бизнес VPN/HTTPS живы.
- 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 не выдумываем и не копируем «самую страшную».