Запрос всегда приходит в одной и той же форме: закройте IPsec на периметре, потому что он несёт туннели, которые никто не согласовал, а первая жалоба приходит от человека, чей телефон перестал звонить через Wi-Fi. Оба факта верны одновременно, и ни один не оправдывает отказа от контроля. Периметру нужно исключение для сервиса с названной функцией, ограниченным источником, задокументированными назначениями и владельцем. Пять шагов превращают это в правило, которое посторонний сможет пересмотреть через год.

Назовите сервис, прежде чем назвать протокол

Настольный телефон на сервисе SIP и аппарат, выполняющий Wi-Fi Calling оператора, не разделяют сетевой профиль, а VoIP как термин межсетевого экрана не описывает ни один из них. Данные о портах и назначениях должны приходить от поставщика или оператора, который ведёт сервис, а не из запомненного списка портов другой телефонной системы. Это разница между правилом, которое защищает функцию, и правилом, которое защищает слово.

Справочник Apple по портам сервисов перечисляет UDP 500 и 4500 для Wi-Fi Calling, и это ровно та пара, которую отбрасывает большинство сплошных блокировок IPsec. Запишите имя функции в журнал изменений рядом с этими портами. Добавьте версию или дату использованного справочника, потому что таблицы поставщиков редактируются. Правило, которое называет сервис, для которого существует, можно пересмотреть; правило, которое называет категорию протокола, нет.

Пишите исключение как договор, а не как любезность

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

Поставьте исключение в тот же цикл, что и остальная политика периметра, чтобы перенос назначения оператором или смена модели аппарата в парке замечалась на пересмотре, а не при следующем сбое. Замкните цикл с тем, кто сообщил о сломанных звонках, потому что только он может подтвердить исправление, не открывая заново туннель, который блокировка должна была закрыть. Это подтверждение тоже должно быть в записи, с датой.

Постоянное разрешение с пометкой временного ремонта телефона через два года не защитить. У разрешения, привязанного к определённому сервису, есть срок, который продлевают осознанно.

Ограничьте источник честно

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

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

Примите то, чего правило портов сказать не может

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

Скажите это рядом с правилом и свяжите исключение с тем принуждением, которое есть у сети, например с управлением устройствами или списком разрешённых назначений. Затем выразите исключение как можно уже, насколько позволяет инструмент, например правилами nftables, которые называют сегмент и пару портов, а общий запрет ставят после них:

nft add rule inet edge forward ip saddr 10.40.0.0/24 udp dport { 500, 4500 } counter accept
nft add rule inet edge forward udp dport { 500, 4500 } counter drop

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

Проверьте функцию и запрет

Выполните согласованную проверку на обычном звонке через Wi-Fi из того класса устройств, для которого существует исключение, и подтвердите, что исключённый клиент по-прежнему не проходит. Никогда и ни при каких обстоятельствах не используйте экстренные звонки как тестовый случай. Затем осмотрите выпущенное правило, потому что счётчик, застывший на нуле, самое быстрое доказательство того, что исключение ни разу не совпало:

nft -a list chain inet edge forward

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

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