Почему firewalld не обрабатывает богатые правила?

Вопрос или проблема

Используя эту конфигурацию:

$ sudo firewall-cmd --list-all --zone=myzone
myzone (active)
  target: default
  icmp-block-inversion: no
  interfaces:
  sources: 192.168.0.10/32
  services:
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
    rule family="ipv4" destination address="0.0.0.0/0" reject

доступ к IP-адресу 192.168.0.20 по всем портам разрешен, где, по-видимому, он должен быть отклонен, согласно расширенному правилу.

Изменив цель зоны на reject, весь трафик теперь отклоняется, даже при наличии соответствующего расширенного правила, которое должно разрешать трафик.

$ sudo firewall-cmd --list-all --zone=myzone
myzone (active)
  target: %%REJECT%%
  icmp-block-inversion: no
  interfaces:
  sources: 192.168.0.10/32
  services:
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
    rule family="ipv4" destination address="0.0.0.0/0" allow

Обратите внимание, что я пытался добавить значения ‘priority’ выше и ниже 0, но они не имели никакого эффекта.

Почему мои расширенные правила игнорируются?

Ответ или решение

Для решения вопроса, почему firewalld не обрабатывает rich-rules, необходимо рассмотреть несколько аспектов вашей конфигурации и принципов работы firewalld. Анализируя описание проблемы, можно выделить несколько возможных причин и нюансов, влияющих на обработку правил. Рассмотрим данные аспекты более детально.

Анализ текущей конфигурации

  1. Порядок применения правил и зон:

    • В конфигурации firewalld порядок применения правил определяется сначала по зонам, затем по rich-rules. В вашей конфигурации указано, что только источники 192.168.0.10/32 привязаны к зоне myzone. Убедитесь, что трафик от 192.168.0.20 также привязан к этой зоне или попадает под её действие. Если трафик не подходит ни к одной зоне, он обрабатывается в зоне по умолчанию.
  2. Роль зоны и таргета:

    • Вы установили target: default до применения rich-rule с reject. Это значит, что, по умолчанию, разрешен весь трафик, а ваши rich-rules могут быть неприоритетны по сравнению с другими параметрами. Изменяя target на %%REJECT%%, вы полностью запрещаете трафик, что предотвращает срабатывание любых разрешающих rich-rules, как вы и отметили.
  3. Приоритет правил:

    • Вы упомянули, что изменяли priority, но без результата. priority помогает управлять порядком применения rich-rules внутри одной зоны, но не влияет на общую политику зоны (target). Убедитесь, что priority правильно установлен для правила, которое должно иметь приоритет (ниже 0 для более приоритетных правил).

Возможные решения

  1. Убедиться в корректности назначения зон:

    • Проверьте, чтобы IP-адрес 192.168.0.20 явно был включен в источники зоны myzone. Без корректного назначения зон, rich-rules, возможно, не будут применены к желаемому трафику.
  2. Настройка приоритетов target и rich-rules:

    • Рассмотрите возможность использования target: ACCEPT и более строгих rich-rules для отклонения нежелательного трафика. Это подойдет, если ваша цель полосой допускает трафик, за исключением определенных случаев, на которые направлены rich-rules.
  3. Диагностика и отладка:

    • Используйте команды отладки, такие как firewall-cmd --zone=myzone --query-rich-rule='rule family="ipv4" destination address="0.0.0.0/0" reject' для проверки активности rich-rules и уточнения логики срабатывания.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...