Вопрос или проблема
Используя эту конфигурацию:
$ 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. Анализируя описание проблемы, можно выделить несколько возможных причин и нюансов, влияющих на обработку правил. Рассмотрим данные аспекты более детально.
Анализ текущей конфигурации
-
Порядок применения правил и зон:
- В конфигурации firewalld порядок применения правил определяется сначала по зонам, затем по rich-rules. В вашей конфигурации указано, что только источники 192.168.0.10/32 привязаны к зоне
myzone
. Убедитесь, что трафик от 192.168.0.20 также привязан к этой зоне или попадает под её действие. Если трафик не подходит ни к одной зоне, он обрабатывается в зоне по умолчанию.
- В конфигурации firewalld порядок применения правил определяется сначала по зонам, затем по rich-rules. В вашей конфигурации указано, что только источники 192.168.0.10/32 привязаны к зоне
-
Роль зоны и таргета:
- Вы установили
target: default
до применения rich-rule сreject
. Это значит, что, по умолчанию, разрешен весь трафик, а ваши rich-rules могут быть неприоритетны по сравнению с другими параметрами. Изменяяtarget
на%%REJECT%%
, вы полностью запрещаете трафик, что предотвращает срабатывание любых разрешающих rich-rules, как вы и отметили.
- Вы установили
-
Приоритет правил:
- Вы упомянули, что изменяли
priority
, но без результата.priority
помогает управлять порядком применения rich-rules внутри одной зоны, но не влияет на общую политику зоны (target
). Убедитесь, чтоpriority
правильно установлен для правила, которое должно иметь приоритет (ниже0
для более приоритетных правил).
- Вы упомянули, что изменяли
Возможные решения
-
Убедиться в корректности назначения зон:
- Проверьте, чтобы IP-адрес 192.168.0.20 явно был включен в источники зоны
myzone
. Без корректного назначения зон, rich-rules, возможно, не будут применены к желаемому трафику.
- Проверьте, чтобы IP-адрес 192.168.0.20 явно был включен в источники зоны
-
Настройка приоритетов target и rich-rules:
- Рассмотрите возможность использования
target: ACCEPT
и более строгих rich-rules для отклонения нежелательного трафика. Это подойдет, если ваша цель полосой допускает трафик, за исключением определенных случаев, на которые направлены rich-rules.
- Рассмотрите возможность использования
-
Диагностика и отладка:
- Используйте команды отладки, такие как
firewall-cmd --zone=myzone --query-rich-rule='rule family="ipv4" destination address="0.0.0.0/0" reject'
для проверки активности rich-rules и уточнения логики срабатывания.
- Используйте команды отладки, такие как
Заключение
Ваш случай показывает сложность настройки firewalld, где порядок правил и логика применения игрют ключевую роль. Тщательная проверка конфигурации, привязка источников и порядок применения могут помочь решить проблему. Если приведенные шаги не дают результата, возможно, имеет смысл провести полную ревизию политики безопасности сети для выявления причинных зависимостей и конфликтов.