Вопрос или проблема
Как человек, который не освоил все части уровней модели OSI, я был довольно разочарован документацией по фильтрации мостов в nftables: https://wiki.nftables.org/wiki-nftables/index.php/Bridge_filtering
Я что-то не понял или IP-адреса, порты, соответствие ICMP и тому подобное невозможно в таблицах мостов для nftables? Тем не менее, он не жалуется при проверке правил с помощью nft
, и в документации на странице, которую я привел, даже приводятся IP-порты как пример для фильтрации мостов. Есть ли в документации ошибка, и я что-то недопонял?
Фильтры пакетов своего рода существуют вне модели уровней. Сам L2-мост должен принимать решение о пересылке только на основе информации L1/L2, а не на основе более высоких уровней (по крайней мере, в идеальном состоянии, возможно, не всегда на практике), а L3-протокол сети должен принимать свои решения на основе L2/L3, а не более высоких уровней (с некоторыми исключениями…), и так далее; но фильтр пакетов не принимает никаких решений, которые были бы ключевыми для протокола — это отдельная внешняя вещь.
И поскольку все уровни действительно имеют весь пакет, включая информацию верхнего уровня, рассматривая его только как непрозрачную нагрузку и обещая не заглядывать внутрь, это означает, что фильтр может быть реализован до принятия решения о мостировании L2 и все равно может заглянуть в данные протокола L3 или L4. Обычные фильтры iptables или nftables можно считать прикрепленными к пути обработки L3 IP, но они, конечно, могут сопоставляться с заголовками TCP. Точно так же фильтр брандмауэра, подключенный к L2-мосту, действительно может видеть весь пакет и потенциально сопоставлять его с любым из его полей.
Ответ или решение
Документация и понимание правильного применения сетевых фильтров, особенно в контексте таких инструментов, как nftables, могут быть непростыми задачами даже для опытных специалистов. Находясь на переднем фронте сетевой защиты и управления трафиком, nftables предоставляет возможность создания сложных правил фильтрации, однако именно эта сложность иногда приводит к недопониманию или созданию некорректной документации.
Теоретическая база
На уровне теории сетевой фильтрации важным является понимание, что фильтры пакетов функционируют на пересечении различных уровней модели OSI (Open Systems Interconnection). Несмотря на то, что модель OSI и используется для объяснения сетевого взаимодействия, фильтры пакетов, такие как те, что реализуются с помощью nftables, не ограничены только одним уровнем. Эти фильтры анализируют и принимают решения на основе информации, содержащейся в пакетах, которая может относиться как к уровню передач данных (Layer 2), так и к уровню сетевого взаимодействия (Layer 3), а также ко многим другим.
Таким образом, фильтрация на уровне мостов (или bridge filtering) с использованием nftables предполагает, что фильтры могут обращаться к данным из разных уровней, даже если решение, непосредственно связанное с пересылкой трафика, принимается на уровне 2.
Пример из практики
Для иллюстрации, bridge filtering в nftables потенциально может включать фильтрацию на основе IP-адресов или портов, что, на первый взгляд, может показаться странным, поскольку эта информация относится уже к Layer 3 и выше. Однако, благодаря тому, что фильтры обрабатывают весь пакет целиком до принятия решения о пересылке, появляется возможность анализа и при необходимости блокировки трафика на основании этих параметров. Например, в блоке правил nftables для мостов может быть прописано условие:
table bridge filter {
chain forward {
type filter hook forward priority 0; policy accept;
ip saddr 192.168.1.0/24 drop
}
}
Данное правило в таблице фильтров мостов определяет, что трафик от источников в диапазоне 192.168.1.0/24 должен быть отвергнут до того, как будет принято решение о пересылке.
Применение на практике
В практическом применении при работе с nftables важно понимать особенность порядка обработки данных в сетевых фильтрах. Мостовые фильтры действительно способны анализировать и принимать решения на основе критериев из более высоких уровней модели OSI, и это не противоречит ранее изложенной теории. Но чтобы избежать ошибок в настройках, пользователю необходимо точно учитывать, какие данные анализируются на каждом этапе и на каком уровне будет применено то или иное правило.
Некорректная документация, как та, о которой упоминает пользователь, может возникнуть из-за сложностей в интерпретации этого достаточно широкого функционала. Поэтому важно сверять документацию с фактическими поведениями пакетов и особенностями реализации правил в конкретных версиях nftables.
Перечень ключевых моментов:
-
Понимание взаимодействия уровней: Мостовые фильтры в nftables могут анализировать данные различных уровней, используя информацию значительно выше уровня 2, если это требуется для поставленных задач фильтрации.
-
Актуализация документации: В связи с возможными обновлениями версий и функционала nftables, пользователям следует постоянно следить за актуальностью используемых источников информации и проверять изменения в логике работы.
-
Проверка конфигурации: Прежде чем внедрять правила в production, рекомендуется проверять их в тестовом окружении, чтобы убедиться, что они работают в соответствии с ожидаемыми результатами и не содержат логических ошибок из-за неверной интерпретации документации.
В завершение, ясное понимание данных особенностей и правильное внедрение теоретических знаний в практику не только улучшат настройку фильтров в nftables, но и повысят общую эффективность и безопасность сетевого окружения.