Проблемы с правилом rich firewalld для блокировки MAC-адреса на системе с внутренними и NAT-интерфейсами.

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

У меня есть linux-система, которая выполняет роль маршрутизатора и имеет 2 интерфейса с работающим firewalld. Один из них — “EXTERNAL” и подключен к интернету. Другой — “TRUSTED” и соединен с внутренними хостами. Компьютеры во внутренней сети (10.x.x.x) выходят в интернет и корректно выполняют NAT. Они также без проблем могут взаимодействовать друг с другом.

Когда я создаю сложное правило для блокировки устройства по MAC-адресу, оно работает нормально на интерфейсе TRUSTED: устройство не может выйти в интернет, но также не может получить доступ к другим хостам во внутренней сети.

Когда я создаю точно такое же правило для внешнего интерфейса EXTERNAL, как будто правила не существует. Целевое устройство может выйти в интернет и к локальным хостам.

Что я делаю не так? Я хочу заблокировать внутреннее устройство от доступа в интернет, но не к локальным компьютерам. Вот 2 правила:

firewall-cmd –zone=trusted –permanent –add-rich-rule=”rule source mac=90:b1:1c:99:41:1b drop”

firewall-cmd –zone=external –permanent –add-rich-rule=”rule source mac=90:b1:1c:99:41:1b drop”

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

Вопрос, касающийся правил фильтрации с использованием firewalld на Линукс-маршрутизаторе с двумя интерфейсами (EXTERNAL и TRUSTED), требует внимательного подхода к настройке и пониманию работы сетевых интерфейсов и зон. Рассмотрим шаги по решению вашей проблемы.

Проблема с правилами firewalld

У вас возникла проблема с блокировкой устройства по MAC-адресу с использованием правил firewalld. Вы указали, что правило, созданное в зоне TRUSTED, работает корректно и блокирует устройство от доступа к интернету, но аналогичное правило в зоне EXTERNAL не срабатывает, и устройство по-прежнему имеет доступ к интернету и локальным хостам.

Понимание зон firewalld

Firewalld использует "зоны", чтобы классифицировать сетевые интерфейсы с точки зрения уровня доверия. Вам необходимо понимать следующие аспекты:

  1. Зона TRUSTED: Позволяет трафику выходить на локальную сеть, тем самым позволяя всем внутренним устройствам общаться друг с другом.
  2. Зона EXTERNAL: Обычно настраивается для интернет-соединений и может содержать более строгие правила.

Ваша проблема

Ваши правила, которые блокируют IP-адреса, основанные на MAC-адресах, работают в зоне TRUSTED, но не помогают в зоне EXTERNAL. Это, скорее всего, обусловлено тем, что зона EXTERNAL может не обрабатывать трафик от доверенных локальных устройств, когда они обращаются к интернету, из-за NAT (Network Address Translation).

Решение

Для того чтобы решить вашу проблему и заблокировать доступ внутреннего устройства к интернету, но сохранить возможность взаимодействия с другими локальными устройствами, вы можете выполнить следующие шаги:

  1. Проверьте NAT и маршрутизацию: Убедитесь, что ваше устройство NAT настроено правильно. NAT может дублировать запросы на маршрутизацию и игнорировать MAC-адреса. Проверьте, применяются ли правила NAT к пакетам, исходящим из TRUSTED-зоны и направляемым в EXTERNAL.

  2. Использование правил маршрутизации: Возможным решением будет добавление соответствующих обработчиков для правил IP, а не только MAC-адресов. Вам может понадобиться правило для блокировки адреса источника по IP, чтобы убедиться, что NAT-журнал не влияет на ваши правила.

  3. Применение правил на уровне IP:
    Попробуйте добавить правило, которое будет блокировать IP-адрес устройства (например, если его IP – 10.x.x.x):

    firewall-cmd --zone=external --permanent --add-rich-rule="rule family='ipv4' source address='10.x.x.x' drop"
  4. Союзное правило: Если вы хотите оставить доступ к локальной сети, но блокировать доступ к интернету, среди правил вы можете создать условие для маршрутизации, где учитываются внешние ресурсы:

    firewall-cmd --zone=trusted --permanent --add-rich-rule="rule source mac=90:b1:1c:99:41:1b accept"
    firewall-cmd --zone=external --permanent --add-rich-rule="rule source mac=90:b1:1c:99:41:1b drop"
  5. Обновите настройки firewalld: После внесения изменений не забудьте перезагрузить firewalld и проверить правильность настроек:

    firewall-cmd --reload
  6. Проверка логов: Мониторьте логи вашей системы (например, с помощью journalctl -xe или firewalld логов), чтобы определить, проходит ли трафик через ваши правила или нет.

Заключение

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

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

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