Пересылка всего на ваш VPN-сервер может описывать два очень разных правила. Одно меняет адрес назначения и сохраняет входящий порт; другое ещё и переписывает порт на одного-единственного слушателя. Экспозиция неодинакова, и решение зависит от трёх условий, а не от надписи, которую использует интерфейс маршрутизатора.

Условие первое: какие поля меняет правило?

Трансляция адреса назначения и трансляция порта назначения — отдельные операции. Правило может выполнить только первую или обе вместе, и разница определяет, какие службы на целевом хосте доступны. Большинство интерфейсов производителей прячут этот выбор за одной надписью. Чтение исходного правила — единственный способ узнать, какое вы получили.

Читайте фактическое правило, а не надпись в меню. Экран с надписью DMZ или все порты описывает намерение, а не путь пакета. Документация Netfilter NAT разделяет две трансляции, и это правильная мысленная модель, даже когда маршрутизатор перед вами — потребительское устройство.

Два поля, два разных вопроса.

Условие второе: что слушает на сохранённых портах?

Если правило сохраняет входящий порт, каждый приходящий порт доставляется на тот же номер на хосте VPN, с учётом входной политики этого хоста. Это включает службы, о которых вы, возможно, забыли, что они слушают. Правило не создавало эти службы, и теперь оно — путь к ним.

Если правило переписывает порт, происходит обратное: множество внешних портов схлопывается на одного слушателя, и ничего другого на хосте через это правило не доступно. Перезапись на фиксированный порт не становится доступом к каждой локальной службе только потому, что с ней совпал широкий диапазон внешних портов. Два решения отказывают в разных направлениях, и именно режим отказа вы выбираете. Выберите тот, с чьим отказом вы можете жить.

Проведите инвентаризацию слушателя, прежде чем выбирать.

Условие третье: насколько широк внешний вход?

Публикация одного выбранного порта уже, чем публикация диапазона, и оба варианта уже, чем принимать всё. Внешняя ширина и внутренняя трансляция — независимые выборы, и большая часть путаницы возникает, когда меняют одно, описывая другое.

Для обычного входа VPN опубликуйте транспорт и слушателя, которые действительно нужны проекту. Затем проверьте ещё три вещи: фактическое отображение маршрутизатора, собственные входные правила целевого хоста и публикует ли слушатель IPv6 ту же службу. Правило, которое выглядит узким в одном семействе адресов, может быть широким в другом.

Запишите транслированную конечную точку полностью: протокол, внешний порт, внутренний адрес, внутренний порт.

Чего не даёт ни одно из правил

Ни одно из двух решений не доказывает, что служба свободна от уязвимостей, и ни одно не защищает доступность. Аутентификация, обновления и восстановление остаются в области охвата независимо от того, насколько узко отображение портов. Узкое отображение уменьшает достижимую поверхность; оно не делает слушателя безопасным.

Широкое правило, которое уже поддерживает другую законную службу, — это зависимость, а не просто ошибка. Проведите его инвентаризацию и замените его через владельца, прежде чем удалять, иначе изменение будет выглядеть как сбой, вызванный исправлением безопасности. Та же осторожность относится к перезаписи на фиксированный порт, на которую что-то другое тихо полагается.

Анализ экспозиции — о том, что чего может достичь, а не о надписи на экране.

Решайте, держа транслированную конечную точку в руках

Запишите результат правила как предложение: публичный порт UDP X достигает адреса Y, порт Z. Затем спросите, какие службы на Y могут ответить на Z и кому они принадлежат.

nft list ruleset

Если ответ — тот единственный слушатель, который вы задумали, правило делает свою работу.

Если ответ — несколько, вы выбрали пересылку на весь хост, независимо от того, называл ли это так интерфейс.

Похожие статьи