Назад | Перейти на главную страницу

Как создать расширенные правила с помощью firewall-cmd?

Я хочу создать правило с использованием firewalld, которое использует критерии имени пользователя или идентификатора пользователя и, возможно, еще один критерий модуля.

В iptables, я думаю, вы можете делать такие вещи, как

iptables -A OUTPUT -m owner --uid-owner <UID> -j ACCEPT

(и вы можете добавить другие -m модули или -p протоколы к той же команде)

Но я читал firewall-cmd справочная страница и я не могу найти, как составить такое же правило. Даже «богатые правила», похоже, не имеют такой поддержки. Обязательно ли использовать «прямую» функцию? Я не совсем понимаю его синтаксис. Особенно меня беспокоит, что эти ничего не возвращают!

firewall-cmd --direct --get-chains ipv4 filter
firewall-cmd --direct --get-rules ipv4 filter OUTPUT
firewall-cmd --direct --get-rules ipv4 filter INPUT

Конечно iptables -L показывает, что у меня есть эти таблицы, цепочки и правила.

Итак, как мне добавить постоянный правило с владельцем и, может быть, еще один критерий с использованием firewalld?

Вам не нужно добавлять или даже иметь собственные прямые цепочки (хотя вы можете, если хотите получить действительно сложно. Просто добавьте напрямую в существующие цепочки.

После версии IP, таблицы, цепочки и приоритета вы просто указываете соответствующие параметры iptables:

firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 \
        -m owner --uid-owner $UID -j ACCEPT

Ниже, в iptables, это будет фактически добавлено в управляемую firewalld цепочку с именем OUTPUT_direct, которая вызывается из цепочки OUTPUT.