Вопрос или проблема
Я настраиваю правила Группы безопасности сети (NSG) виртуальной машины Azure, и портал Azure, похоже, позволяет мне определять нелогичные правила – или, по крайней мере, нелогичные для меня, поскольку вы можете определить порт-мэппинг брандмауэра, где диапазон портов источника отличается по количеству от диапазона портов назначения. Портал Azure не предоставляет никаких подсказок или информационных текстов, описывающих, как брандмауэр обрабатывает такого рода правила.
Я начну с простейшего случая: простая переадресация портов, как на домашнем маршрутизаторе потребительского уровня: когда вы настраиваете Источник диапазона портов на один порт и Назначение диапазона портов на тот же порт, трафик, отправленный на этот порт, разрешен через брандмауэр от источника к назначению. Пока все понятно.
Но Azure также позволяет вам определить диапазон портов источника, который меньше диапазона портов назначения, и я не знаю, что это значит для того, как трафик распределяется. Например, если я укажу диапазон портов источника 80-81
и диапазон портов назначения 90-99
, то мэппится ли трафик портов 80 на 90 и 81 на 91? Или весь трафик по портам 80 и 81 мэппится на 90-99 в циклическом порядке?
Я составил таблицу примеров различных классов мэппинга, которые, похоже, позволяют правила брандмауэра NSG Azure, с пробелами в моем понимании:
Класс мэппинга | Порты источника | Порты назначения | Эффект |
---|---|---|---|
Биективный | 80 | 80 | Слушатель на порту 80 получает трафик, отправленный на порт 80 |
Биективный | 80 | 88 | Слушатель на порту 88 получает трафик, отправленный на порт 80 |
Сюръективный, неинъективный | 80-89 | 90 | Слушатель на порту 90 получает трафик, отправленный на порт 80, а также трафик, отправленный на порты 81, 82, …, 89. |
Биективный, инъективный | 80-89 | 90-99 | Слушатель на порту 90 получает трафик, отправленный на порт 80, слушатель на порту 91 получает трафик, отправленный на порт 81, …, слушатель на порту 99 получает трафик, отправленный на порт 89. |
Инъективный | 80 | 90-99 | Слушатель на порту 90 получает трафик, отправленный на порт 80, но я не знаю, какой трафик получает слушатель на портах 91 или 99 |
Инъективный, несюръективный | 80-85 | 90-99 | Честно говоря, я не знаю |
Ответ или решение
Вопрос о том, являются ли инъективные правила трансляции портов в файрволе Azure сюръективными или несюръективными, затрагивает сложные теоретические аспекты математики, а именно понятия функций и отображений. Давайте рассмотрим это более подробно.
Теория
В математике отображения (или функции) классифицируются как инъективные, сюръективные или биективные на основе того, как они сопоставляют элементы одного множества с элементами другого множества.
-
Инъективное (или однозначное) отображение: Каждому элементу из множества источника соответствует уникальный элемент в множестве назначения. То есть, никакие два различных элемента из множества источника не отображаются в один и тот же элемент множества назначения.
-
Сюръективное (или на) отображение: Каждый элемент в множестве назначения имеет хотя бы один соответствующий элемент в множестве источника.
-
Биективное отображение: Это отображение, которое одновременно инъективное и сюръективное. Каждый элемент множества источника соответствует уникальному элементу множества назначения, и все элементы множества назначения имеют соответствующие элементы в множестве источника.
Теперь, если рассмотреть с точки зрения сетевых правил, эти концепции характеризуют, как передаваемые по сети данные (например, пакеты) перенаправляются или сопоставляются между портами источника и назначения.
Пример
Рассмотрим пример, приведенный в вопросе:
-
Когда указана одна и та же порт в источнике и в назначении, это биективное отображение. Каждый пакет, отправленный на порт 80, доставляется исключительно на порт 80.
-
В случае, когда диапазон портов источника больше, чем диапазон портов назначения (например, 80-89 к 90), мы имеем сюръективное, но инъекцию. Все трафики, отправленные на порты 80-89, попадают на один единственный порт 90.
-
Если наоборот, диапазон портов источника меньше, чем диапазон портов назначения (например, 80-81 к 90-99), возникают неопределённости относительно распределения.
Применение
В Azure и других облачных платформах настройка правил трансляции портов через группы безопасности сети (NSG) предоставляет разработчикам и администраторам гибкие возможности по управлению доступом и маршрутизацией сетевого трафика. Разрешение непропорциональных сопоставлений, где количество портов источника и назначения различаются, должно учитывать, что Azure, как правило, рассчитывает, что администратор настроит сопоставление с учетом конечных требований и архитектуры развертывания.
В Azure, когда вы имеете диапазон портов источника, сопоставленный с меньшим диапазоном портов назначения, и наоборот, протокол TCP/IP играет роль в маршрутизации пакетов. Этот протокол обычно не сохраняет информацию о порядке пришедших пакетов, если не указан конкретный алгоритм сопоставления или быть настроена специфическая логика в маршрутизаторах или фаерволах для распределения нагрузки (например, round-robin или hash-based).
Таким образом, в реальной практике:
-
Инъекционная, не сюръективная: Например, если вы определили диапазон 80-85 для источника и 90-99 для назначения, Azure может не предоставить конкретного механизма отображения или справку, как данный пакет будет перенаправлен. Здесь наиболее вероятна ситуация, когда часть портов назначения останется неиспользованной, если только не настроены дополнительные правила распределения или балансировка.
-
Сюжетивная, не инъекционная: При настройке диапазона 80-89 к 90, все запросы к портам источника будут сопоставлены с одним портом назначения, что полезно, когда вы хотите консолидировать потоки данных в один сервисный порт.
Заключение
Для предотвращения неправильной настройки и последующих уязвимостей безопасности в Azure важно понимать поведение всех элементов структуры сети и файрволов. При настройке подобных правил всегда учитывайте:
- Логические маршруты сопоставления, необходимые для приложения.
- Особенности внутренних процессов протокола TCP/IP.
- Влияние этих правил на эластичность и отказоустойчивость сервисов.
Таким образом, при проектировании архитектуры в облаке важно создавать не только актуальные, но и предсказуемо управляемые схемы маршрутизации для обеспечения безопасности и выполнения ожиданий производительности сервиса.