Вопрос или проблема
Что-то, что я пытаюсь понять, это взаимоотношение между поведением зоны firewallD по умолчанию и поведением цепочки IPTables-NFT по умолчанию.
Я настроил несколько прямых правил firewalld, которые были введены в NFTables (управляемые IPTables-NFT). Насколько мне известно, иерархия правил FirewallD выглядит так:
Прямые правила
Зоны IP FirewallD
Зоны интерфейсов FirewallD
По умолчанию политика цепочек IPTables-NFT INPUT, FORWARD и OUTPUT установлена на ACCEPT, что, как я думаю, означает, что все, что не соответствует правилу IPTables, будет просто принято. Это, по-видимому, не так. Кроме того, ни в одной из цепочек IPTables нет правил REJECT или DROP (за исключением отклонения ICMP).
У меня есть интерфейсы в зоне FIREWALLD PUBLIC без определенных услуг, и у меня есть мой публичный IP в зоне TRUSTED FirewallD. Базовая конфигурация, означающая, что любой сервис/протокол с моего публичного IP принимается, все остальное отклоняется зоной PUBLIC.
Основываясь на вышеизложенном, если я попытаюсь подключиться по SSH с любого IP, я должен быть в состоянии войти, так как политика по умолчанию всех цепочек установлена на ACCEPT. Вместо этого, это работает так, как я бы ожидал, если прямых правил вообще не было (например, я могу подключаться по SSH только с моего публичного IP, а все остальное попадает в зону PUBLIC в FirewallD и отклоняется). Вот так я бы хотел, чтобы это работало… но с добавлением IPTables, я не совсем уверен, почему.
Может кто-то объяснить мне, что на самом деле делают политики цепочки IPTables? Может быть, ACCEPT политика там просто для того, чтобы позволить трафику переходить к следующему правилу? Это мне действительно не имеет смысла, но если это так, я пойму, почему это работает, как есть, так как трафик, не исходящий с моего публичного IP, будет проходить через мои прямые правила и оказываться в моей PUBLIC FirewallD зоне, что отклонит его.
Ответ или решение
Вопрос о взаимопонимании между firewalld
и iptables-nft
может быть довольно запутанным, особенно для тех, кто только начинает погружаться в мир сетевой безопасности на Linux. Ниже приведен анализ этой взаимосвязи, который поможет прояснить некоторые моменты.
Обзор архитектуры firewalld
и iptables-nft
firewalld
firewalld
— это интерфейс, который упрощает управление правилами сетевого экранирования. Он использует концепцию зон, которые определяют, какой трафик считается частью определенной сети, и какие правила к нему применяются. Основная логика работы firewalld
основана на том, что он выделяет три уровня приоритета для своих правил:
- Прямые правила (Direct rules): Это правила, которые непосредственно добавляются в интерфейс и имеют наивысший приоритет.
- Зоны
firewalld
(FirewallD IP Zones): Правила, ассоциированные с конкретными зонами (например, PUBLIC, TRUSTED и т.д.). - Интерфисы
firewalld
(FirewallD Interface Zones): Правила, привязанные к определенным сетевым интерфейсам.
iptables-nft
iptables
, в свою очередь, является более низкоуровневым инструментом для настройки правил фильтрации пакетного трафика. iptables-nft
использует синтаксис и структуру технологии nftables
, что позволяет управлять правилами более эффективно и с меньшим временем отклика.
По умолчанию политики в цепях INPUT
, FORWARD
, и OUTPUT
могут быть установлены в ACCEPT
, что означает, что любой трафик, который не соответствует ни одному правилу, будет разрешен. Однако данная настройка может не отражать фактическое поведение из-за правил, определенных в firewalld
.
Взаимосвязь между firewalld
и iptables-nft
Как вы заметили, наличие правил firewalld
значительно влияет на разрешение и блокировку трафика, даже если политика в цепях iptables-nft
установлена как ACCEPT
. Это происходит по следующим причинам:
-
Прямые правила
firewalld
: Эти правила действуют на более высоком уровне по сравнению с правиламиiptables
. При обработке пакетов, если разрабатываются прямые правила, они будут проверены и применены до того, как трафик дойдет до правилiptables
. -
Композиция зон
firewalld
: Зоны управления могут значительно ограничить доступ в зависимости от IP-адресов, что также может блокировать попытки SSH, если IP-адрес не входит в доверенные. -
Подход к обработке и приоритету: Даже если политики в правилах
iptables
установлены какACCEPT
, это подразумевает, что пакеты могут пройти до уровня следующего правила, однакоfirewalld
будет их фильтровать на более высоком уровне.
Заключение
Таким образом, firewalld
и iptables-nft
могут работать в единой экосистеме, но ваша конечная конфигурация может быть сложной из-за различных уровней приоритета и управления. Ваше наблюдение, что SSH доступ возможен только с доверенного IP-адреса, абсолютно корректно, так как даже при наличии правил ACCEPT
в iptables
, firewalld
работает как первый фильтр безопасности, что определяет, что будет обработано на более низком уровне.
Для более глубокого понимания, рекомендуем дополнительно изучить документацию по firewalld
и nftables
, чтобы углубить ваше знание о сетевой безопасности в Linux.